云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          最近在搞一個把DocBook的Xml文檔轉換成Html的工作。
          遇到了一些問題,把解決的心得總結一下寫在這里。

          首先介紹一下DocBook的由來,DocBook是一個開源項目,其實就是一些DTD,規定了書寫文檔的一些標準。
          在此標準下,就可以拋棄Word,WPS之類的工具用寫字板來寫文檔了。
          文檔此Xml形式保存,需要的時候就使用Xslt通過已有的大量的各種各樣的Xsl轉換成所需要的格式,比如:RTF,PDF,HTML等等。
          這種方式帶來了比較大的自由和靈活性。很多人對用這種方式寫文檔非常推崇。
          DocBook網站:http://www.docbook.org, http://docbook.sf.net
          講解DocBook Xsl的一個很好網站:http://www.sagehill.net/docbookxsl
          O'reilly出版一本DocBook的書(免費) http://www.oreilly.com/catalog/docbook/chapter/book/docbook.html
          DocBook百科全書: http://wiki.docbook.org/topic


          遇到的一個主要問題是原來的DocBook就是想把一個Docbook文檔中的章節拆分轉換生成若干個Html.
          查閱文檔后得知使用html\chunk.xsl可以實現此功能。
          OK,下載Saxon,用Exe4Java生成Windwos平臺下的EXE文件后,進行轉換。

          Good,果然生成了一堆Html,不過為什么Html的文件都是些ch0X.html這樣的格式?
          再查閱文檔,原來這是DocBook的生成規則,第一章生成的Html就取名為ch01.html,
          Sect1生成s01,加上所在章節的前綴,如果在第2章,則生成文件名為ch02s01.html,以此類推。
          如果想要生成自定義的文件名,就需要在DocBook中指定相應的id屬性。如:
          <chapter id="workflow">...</chapter>, 那么這一章就會生成workflow.html.

          ok, 給DocBook文檔中所有章節加上了id屬性,指定了文件名。再生成一下。

          Faint,失敗了,生成的文件名還是老樣子?為什么?
          再仔細查閱文檔,原來在轉換的時候少指定了一個參數 use.id.as.filename,
          只有此參數值不為0時,上述特性才生效。而缺省值是0.

          OK,添加此參數, 執行如下命令:

          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, 成功了。


          最后,推薦一本關于Xslt的好書: Manning - Xslt Quickly, 使用了大量的實例來引導讀者一步步,由淺入深逐步學會Xslt



          主站蜘蛛池模板: 余干县| 永宁县| 东兴市| 波密县| 新营市| 神池县| 浦北县| 洛扎县| 苏州市| 万载县| 丹巴县| 甘洛县| 周至县| 仪陇县| 博爱县| 乐平市| 临沂市| 盖州市| 云林县| 广元市| 抚州市| 长子县| 石河子市| 杭锦旗| 江城| 玛纳斯县| 兴文县| 霍林郭勒市| 奉新县| 德保县| 安阳县| 新平| 讷河市| 耒阳市| 琼结县| 泾川县| 马公市| 河北省| 漾濞| 尖扎县| 东乡族自治县|