編寫(xiě)技術(shù)文檔,我想誰(shuí)都遇到過(guò)。很多人都用MS Word,不可否認(rèn)Word的功能確實(shí)非常強(qiáng)大,但是用Word有一些缺點(diǎn)無(wú)法避免:
1) 寫(xiě)文檔的時(shí)候,不得不兼顧文檔的格式,這是件很頭痛的事情,至少對(duì)我來(lái)說(shuō)。經(jīng)常是最后不得不Review好幾遍,就是為了統(tǒng)一格式,即使使用模板也不能避免這個(gè)問(wèn)題。
2) 無(wú)法進(jìn)行有效的版本控制,因?yàn)閃ord保存的是二進(jìn)制格式,這就不能使用CVS的版本控制功能,只能手工合并,這樣很容易出錯(cuò)。雖然Word現(xiàn)在也可以保存成XML,但是看一下保存的文件就會(huì)發(fā)現(xiàn),格式和內(nèi)容混雜在一起,簡(jiǎn)直沒(méi)法看。況且,版本控制的時(shí)候,我們注重的往往是內(nèi)容,現(xiàn)在卻不得不處理大量的格式信息,至少我沒(méi)興趣把時(shí)間花在這個(gè)上面。
3) 可移植性問(wèn)題,畢竟Word只能運(yùn)行在Windows平臺(tái)上,即使可以保存為XML或者HTML,在其他平臺(tái)上你又如何編輯和打印呢?
4) 用盜版還是正版的問(wèn)題,公司不得不考慮知識(shí)產(chǎn)權(quán)這個(gè)比較嚴(yán)肅的話題。
講到這里,很多人可能會(huì)自然而然的想到XML+XSLT+開(kāi)源代碼。Docbook正是基于XSLT把內(nèi)容和形式分開(kāi)的思想開(kāi)發(fā)的,它可以解決上述的所有問(wèn)題。
那么到底什么是Docbook?
Docbook是一些標(biāo)準(zhǔn)和工具的集合。標(biāo)準(zhǔn)包括XML、DTD、XSL、XSL-FO和Docbook DTD(Docbook的核心),工具則包括XSLT Processor和XSL-FO Processor。這些標(biāo)準(zhǔn)和工具組成基于Docbook的發(fā)布系統(tǒng)。
Docbook原本是為了編寫(xiě)和發(fā)布技術(shù)文檔而開(kāi)發(fā)的,O'Reily是發(fā)起者之一,但實(shí)際上它也可以用于其他類(lèi)型的文檔,因?yàn)樗x的結(jié)構(gòu)符合大部分現(xiàn)代書(shū)籍的格式。
Docbook的核心是Docbook DTD,這個(gè)標(biāo)準(zhǔn)是由OASIS的Docbook小組維護(hù)的。這個(gè)標(biāo)準(zhǔn)對(duì)文檔的結(jié)構(gòu)進(jìn)行了詳細(xì)的定義,譬如書(shū)(book元素)可以包含一個(gè)標(biāo)題(title),若干的段落(para)和若干的章節(jié)(chapter),等等。這些都符合常規(guī)書(shū)籍的出版格式。
使用Docbook編寫(xiě)文檔,實(shí)際上就是根據(jù)Docbook DTD編輯XML文件的過(guò)程。所有的內(nèi)容都用標(biāo)簽封裝起來(lái),Docbook提供了十分詳盡的定義,幾乎任何內(nèi)容都可以根據(jù)其用途找到對(duì)應(yīng)的標(biāo)簽。在編輯文檔的過(guò)程中,作者只需要關(guān)心內(nèi)容,根本不會(huì)涉及到排版的問(wèn)題。
要發(fā)布Docbook文檔,必須使用XSLT。專(zhuān)為Docbook使用的XSLT不屬于Docbook的核心,任何人都可以編寫(xiě)自己的XSLT。當(dāng)然,你不用真的自己寫(xiě)(除非你有興趣),已經(jīng)有人做了這方面的工作,你可以在SourceForge找到Norman Walsh開(kāi)發(fā)的Docbook樣式單,寫(xiě)這篇文章的時(shí)候,最新版本是1.67.2。
如果最終發(fā)布Docbook文檔,自然需要用到XSLT Processor和XSL-FO Processor這類(lèi)的工具,可供選擇開(kāi)源工具很多,像xsltproc、Xalan、FOP和PassiveTeX等等。這些工具實(shí)際上也是與Docbook無(wú)關(guān)的。因此不用浪費(fèi)時(shí)間在網(wǎng)上找Docbook的專(zhuān)門(mén)工具,只要找到按標(biāo)準(zhǔn)實(shí)現(xiàn)的工具,就可以用來(lái)發(fā)布Docbook文檔。
總的來(lái)說(shuō),Docbook的發(fā)布流程是這樣的:
1) 編寫(xiě)XML文檔;
2) 使用XSLT Processor把XML文檔轉(zhuǎn)換成HTML文檔,或者XSL-FO文檔;
3) 使用XSL-FO Processor將XSL-FO文檔轉(zhuǎn)換為PDF或者PS文件。
因此,Docbook有下列優(yōu)點(diǎn):
1) 內(nèi)容與格式分離;
2) 內(nèi)容高度結(jié)構(gòu)化;
3) 平臺(tái)無(wú)關(guān);
4) 發(fā)布過(guò)程可以自動(dòng)化;
5) 易于版本控制;
6) 可以生成多種形式的文檔。
Docbook的缺點(diǎn)就是非WYSIWYG,編輯的時(shí)候不如Word那么直觀,直接編輯XML文件還是一件比較煩瑣的事情。但是這個(gè)問(wèn)題并不嚴(yán)重,使用專(zhuān)門(mén)的XML編輯器就可以讓工作輕松很多,譬如Emacs就支持Docbook文檔的編輯。至于效果,使用工具生成最終文檔是非??斓摹O鄬?duì)于它的優(yōu)點(diǎn)而言,這點(diǎn)缺點(diǎn)又算的了什么呢。
參考資料:
Docbook
Docbook Publishing Model
安裝配置Docbook工具
制作Docbook文檔