星期二, 十一月 13, 2007

Docbook 编译

Docbook很好,我喜欢。所以了解它的"编译"过程是挺有意思的事,典型的两个方法是:
1)以Svnbook为例,它使用gmake来写makefile,基本上这个makefile还是很简单的,有几个关键的target和rule,分别用于生成各种目标文件类型,比如HTML,PDF等(为了生成pdf,需要先生成fo文件),还有几个公共的make target,比如version用于每次make时更新版本号,这个版本号会记录在一个xml文件中( 比如version.xml),这个xml文件将被包含在最终的book中。用于格式转换的工具,是最基本的xsltproc(c实现的)和fop(用于将fo文件转换到pdf),可惜fop在中文处理上有些瑕疵(中文,哎),需要不小的调整。

2)Diveintopython则走了Java的路线,编译使用ant,格式转换使用Saxon,Java的东东我不太熟悉,也无意往下看了,不过它不用.fo格式,而是直接通过html生成pdf,转换工具是html2doc,无比遗憾的是,html2doc也不支持中文(中文真是永远的痛啊),也许将html转换为pdf不是很困难,但要比较完美的转换则不太容易(保持目录,链接等信息),再加上中文,那是相当的不简单啊。

看起来还是有些复杂,不过这些东东都只用写一次的,倒是蛮符合Docbook的精髓: Write Once, Read Anywhere!

0 Comments:

发表评论

<< Home