Posted on 2006-04-26 09:42
云自無心水自閑 閱讀(760)
評論(0) 編輯 收藏 所屬分類:
心得體會(huì)
最近在搞一個(gè)把DocBook的Xml文檔轉(zhuǎn)換成Html的工作。
遇到了一些問題,把解決的心得總結(jié)一下寫在這里。
首先介紹一下DocBook的由來,DocBook是一個(gè)開源項(xiàng)目,其實(shí)就是一些DTD,規(guī)定了書寫文檔的一些標(biāo)準(zhǔn)。
在此標(biāo)準(zhǔn)下,就可以拋棄Word,WPS之類的工具用寫字板來寫文檔了。
文檔此Xml形式保存,需要的時(shí)候就使用Xslt通過已有的大量的各種各樣的Xsl轉(zhuǎn)換成所需要的格式,比如:RTF,PDF,HTML等等。
這種方式帶來了比較大的自由和靈活性。很多人對用這種方式寫文檔非常推崇。
DocBook網(wǎng)站:http://www.docbook.org, http://docbook.sf.net
講解DocBook Xsl的一個(gè)很好網(wǎng)站:http://www.sagehill.net/docbookxsl
O'reilly出版一本DocBook的書(免費(fèi)) http://www.oreilly.com/catalog/docbook/chapter/book/docbook.html
DocBook百科全書: http://wiki.docbook.org/topic
遇到的一個(gè)主要問題是原來的DocBook就是想把一個(gè)Docbook文檔中的章節(jié)拆分轉(zhuǎn)換生成若干個(gè)Html.
查閱文檔后得知使用html\chunk.xsl可以實(shí)現(xiàn)此功能。
OK,下載Saxon,用Exe4Java生成Windwos平臺(tái)下的EXE文件后,進(jìn)行轉(zhuǎn)換。
Good,果然生成了一堆Html,不過為什么Html的文件都是些ch0X.html這樣的格式?
再查閱文檔,原來這是DocBook的生成規(guī)則,第一章生成的Html就取名為ch01.html,
Sect1生成s01,加上所在章節(jié)的前綴,如果在第2章,則生成文件名為ch02s01.html,以此類推。
如果想要生成自定義的文件名,就需要在DocBook中指定相應(yīng)的id屬性。如:
<chapter id="workflow">...</chapter>, 那么這一章就會(huì)生成workflow.html.
ok, 給DocBook文檔中所有章節(jié)加上了id屬性,指定了文件名。再生成一下。
Faint,失敗了,生成的文件名還是老樣子?為什么?
再仔細(xì)查閱文檔,原來在轉(zhuǎn)換的時(shí)候少指定了一個(gè)參數(shù) use.id.as.filename,
只有此參數(shù)值不為0時(shí),上述特性才生效。而缺省值是0.
OK,添加此參數(shù), 執(zhí)行如下命令:
saxon docbook.xml docbook-xsl-1.69.1\html\chunk.xsl use.id.as.file=1
如果使用xsltproc, 命令格式如下:
xsltproc --stringparam use.id.as.filename 1 ..\docbook-xsl-1.69.1\html\chunk.xsl docbook.xml
Good, 成功了。
最后,推薦一本關(guān)于Xslt的好書: Manning - Xslt Quickly, 使用了大量的實(shí)例來引導(dǎo)讀者一步步,由淺入深逐步學(xué)會(huì)Xslt