云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          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



          主站蜘蛛池模板: 雅江县| 临漳县| 砚山县| 阿拉善左旗| 汽车| 云霄县| 阜康市| 正蓝旗| 建德市| 安阳市| 小金县| 疏附县| 阿荣旗| 金湖县| 勃利县| 灌南县| 万荣县| 乳源| 铜梁县| 苍溪县| 无为县| 江源县| 高台县| 津市市| 葫芦岛市| 木里| 福清市| 怀仁县| 洛阳市| 星座| 卫辉市| 洪江市| 新晃| 岫岩| 绥中县| 喀喇沁旗| 湖北省| 佛山市| 泰安市| 梁山县| 甘南县|