根據(jù)這樣的定義,大部分XML處理器能夠從網(wǎng)絡(luò)上獲取DTD。這樣做的好處是編輯的Docbook文檔移植性好,可以在沒(méi)有安裝Docbook
DTD的機(jī)器上使用。不過(guò)由于Docbook DTD比較龐大,通過(guò)網(wǎng)絡(luò)獲取DTD會(huì)影響處理速度,在低速網(wǎng)絡(luò)或者網(wǎng)絡(luò)比較糟糕的情況下,影響尤為顯著。
如果選擇使用本地DTD,文檔的DTD引用應(yīng)該這樣寫(xiě):
Linux:
<!DOCTYPE book SYSTEM "/usr/share/docbook-4.2/docbookx.dtd">
Windows:
<!DOCTYPE book SYSTEM "file:///C:/xml/docbook42/docbookx.dtd">
Docbook提供了一種方式,讓用戶(hù)可以使用相同的DTD聲明,但可以在使用網(wǎng)絡(luò)獲取DTD和使用本地DTD之間切換,同時(shí)擁有兩者的優(yōu)勢(shì)。這就是catalog文件的作用。典型的catalog的聲明如下:
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
? <group id="DocbookDTD" prefer="public">
????? <system?
???????? systemId="http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
???????? uri="file:///usr/share/xml/docbook42/docbookx.dtd"/>
? </group>
</catalog>
這個(gè)聲明把網(wǎng)絡(luò)DTD映射到本地DTD。如果使用支持Catalog的XSLT Processor,它首先會(huì)查找本地文件,如果本地文件不存在,再查找網(wǎng)絡(luò)。
2.安裝Docbook XSL樣式單
在http://docbook.sourceforge.net上可以下載到Docbook XSL樣式單,目前最新的版本是1.67.2。
解壓之后,有幾個(gè)比較主要的目錄:
?*common?? - 包含的是公用的模塊,諸如語(yǔ)言之類(lèi)的文件都在這里。
?*extensions - 針對(duì)特定的XSLT Processor編寫(xiě)的擴(kuò)展代碼。
?*fo???????????? - 生成XSL-FO文件所需的XSL樣式單。
?*html????????? - 生成HTML文件所需的XSL樣式單。
?*images????? - 生成文檔時(shí)所需要的圖片。
?*doc????????? - 有關(guān)XSL樣式單的文檔,同樣是Docbook文檔。
其他還有像htmlhelp之類(lèi)的目錄,但不是生成HTML或XSL-FO所必須的。
3.安裝XSLT Processor
目前有許多免費(fèi)的XSLT Processor,最常用的是
?*Saxon??? - 使用Java實(shí)現(xiàn),http://saxon.sourceforge.net/。
?*Xalan???? - 有Java和C++版本,http://xml.apache.org/xalan-j/index.html。
?*xsltproc - 使用C實(shí)現(xiàn),是最快的處理程序,http://xmlsoft.org/XSLT/
?
因?yàn)镾axon和Xalan都有Java版本,所以按照一般的Java程序的安裝方式安裝即可。下面介紹xsltproc的安裝,因?yàn)樗俣瓤欤俏冶容^喜歡的處理程序。
如果你使用windows平臺(tái),那么你有兩個(gè)方法可選:
?1) 直接下載為windows平臺(tái)預(yù)編譯的版本。你需要下載libxml, libxslt, 和iconv,它們都是zip格式,解壓之后,在環(huán)境變量PATH中添加xsltproc.exe和.dll文件的路徑。
?
?如果你不想編輯環(huán)境變量,一個(gè)簡(jiǎn)單的辦法是把下面這些文件復(fù)制到C:\Windows\System32:
? libxslt.dll
? libxml2.dll
? libexslt.dll
? iconv.dll
? xsltproc.exe
?這樣在命令行就可以直接找到這些文件了。完成之后,運(yùn)行
?xsltproc -version
?打印出版本號(hào)則表明完成安裝。
?
?2) 在Cygwin下安裝,這是我選擇使用的方式。Cygwin是一個(gè)在Windows下模擬Linux Shell的應(yīng)用程序。如果你喜歡以Linux命令的方式來(lái)使用xsltproc,下載Cygwin安裝程序。Cygwin的是通過(guò)網(wǎng)絡(luò)安裝的,首先你從它提供的包列表中選擇libxslt,然后安裝程序會(huì)根據(jù)依賴(lài)關(guān)系自動(dòng)選擇libxml2,確定之后,安裝程序下載并安裝xsltproc。完成安裝之后,你就可以運(yùn)行
?xsltproc -version
來(lái)檢查是否安裝成功。
?
3) 如果使用Linux,很有可能系統(tǒng)已經(jīng)安裝了xsltproc。運(yùn)行
xsltproc -version
檢查一下是否已經(jīng)安裝。如果運(yùn)行命令失敗,或者版本太老,那么訪問(wèn)下面兩個(gè)URL獲取最新的RPM包:
http://rpmfind.net/linux/rpm2html/search.php?query=libxml2
http://rpmfind.net/linux/rpm2html/search.php?query=libxslt
然后切換到root權(quán)限,安裝新的包:
rpm -Uv libxml2-2.6.17-2.i386.rpm
rpm -Uv libxslt-1.1.12-4.i386.rpm
完成之后,就可以運(yùn)行
xsltproc -version
檢查安裝是否完成。
安裝之后,就可以使用xsltproc來(lái)生成HTML或者XSL-FO文件。
譬如,生成HTML:
xsltproc? --output myfile.html? docbook-xsl/html/docbook.xsl myfile.xml
或者生成XSL-FO文檔:
xsltproc --output myfile.fo docbook-xsl/fo/docbook.xsl myfile.xml
在http://xmlsoft.org/XSLT/xsltproc2.html上列出了所有xsltproc的命令行參數(shù),直接運(yùn)行
xsltproc也會(huì)打印出參數(shù)列表。
如果你只要發(fā)布HTML文檔,那么到此為止。如果你還想發(fā)布PDF或是PS文檔,那么需要安裝XSL-FO處理程序。
4. 安裝XSL-FO處理程序
XSL-FO處理程序根據(jù)XSLT處理程序生成的XSL-FO文件生成PDF或者PS文件。目前可供選擇的XSL-FO處理程序遠(yuǎn)不如XSLT處理程序那么多,這是因?yàn)椋?br />
??? a. XSL-FO標(biāo)準(zhǔn)比XSLT標(biāo)準(zhǔn)的制訂晚兩年;
??? b.XSL-FO標(biāo)準(zhǔn)及其龐大而復(fù)雜,該標(biāo)準(zhǔn)的作者也發(fā)現(xiàn)其實(shí)現(xiàn)上的難度,從而將該標(biāo)準(zhǔn)分為基本、擴(kuò)展和完整三個(gè)級(jí)別。
現(xiàn)在可用的免費(fèi)的XSL-FO處理程序有:
??? *FOP - 來(lái)自Apache XML項(xiàng)目。目前最新的版本是0.20.5,還在開(kāi)發(fā)當(dāng)中,還有很多特性不支持,不過(guò)已經(jīng)可以滿(mǎn)足一般的使用。
???
??? *PassiveTeX - 來(lái)自Sebastian Rahtz (http://www.tei-c.org.uk/Software/passivetex/)一款基于TeX的XSL-FO處理程序。同樣也在開(kāi)發(fā)中,較FOP要復(fù)雜的多。
另外有一些商業(yè)產(chǎn)品可供選擇,可能生成的文檔質(zhì)量要比開(kāi)源代碼好,譬如:
??? *XEP
??? *XSL Formatter
下面介紹如何安裝FOP。
4.1.首先需要安裝JDK,這個(gè)不用多說(shuō)。
4.2. 下載FOP,可以選擇tar或者zip壓縮包。下載之后解壓到本地。
4.3. 下載圖形代碼庫(kù)。FOP自己不支持PNG之類(lèi)的圖片,如果在你的文檔里會(huì)涉及到圖片,那么需要下載額外的代碼庫(kù)。可以選擇JAI,或者Jimi。0.20.5之前的版本只能使用Jimi。下載之后,將jai_core.jar和jai_codec.jar(JAI),或者JimiProClasses.jar(Jimi)復(fù)制到FOP安裝目錄的lib目錄下,然后在fop.bat(Windows平臺(tái))中添加
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\jai_core.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\jai_codec.jar
或是
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\JimiProClasses.zip
如果使用fop.sh(Linux平臺(tái)),會(huì)自動(dòng)搜索。
4.4. 添加擴(kuò)展代碼。如果Docbook XSL樣式單有針對(duì)FOP的擴(kuò)展代碼(目前沒(méi)有),像上面一樣把它們添加到FOP安裝目錄下lib目錄。
現(xiàn)在就可以使用FOP來(lái)生成PDF文檔了。FOP提供兩個(gè)腳本fop.bat(Windows平臺(tái))和fop.sh(Unix和Linux平臺(tái))以方便使用。生成PDF的命令行如下:
??? Linux或Unix:
??? fop.sh -xsl /docbook-xsl/fo/docbook.xsl -xml myfile.xml -pdf myfile.pdf
???
??? Windows:
??? fop.bat -xsl /docbook-xsl/fo/docbook.xsl -xml myfile.xml -pdf myfile.pdf
在處理過(guò)程中,可能會(huì)提示某些屬性不支持或尚未實(shí)現(xiàn),不用理會(huì)這些提示,因?yàn)镕OP仍處于開(kāi)發(fā)中,這并不影響生成PDF文檔。
到此,一個(gè)Docbook發(fā)布系統(tǒng)配置完成,并可以用來(lái)發(fā)布文檔了。你完全可以在Linux上編寫(xiě)任務(wù),通過(guò)該系統(tǒng)自動(dòng)發(fā)布技術(shù)文檔。
參考文章:
Docbook簡(jiǎn)介
制作Docbook文檔
DocBook XSL: The Complete Guide
posted on 2006-08-22 17:12
想飛的魚(yú) 閱讀(468)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
其他