上一篇:如何在下载文件名中使用UTF-8编码 - 下一篇:[GreaseMonkey]如何hook已有函数
版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2009/03/10/docbook-memo/以及本声明。
xsltproc的常用参数
xsltproc有许多实用的参数。有两种方法指定参数。一是在执行xsltproc时通过--stringparam参数来设置,如:
xsltproc --stringparam html.stylesheet "style.css" -o index.html chunk.xsl index.xml
另外一种方法就是写到XSL文件中,格式如下:
<xsl:param name="chunker.output.encoding" select="'UTF-8'"/>
常用参数有:
- html.stylesheet,设置生成的网页所用的CSS样式表。
- section.autolabel,设置为1可以对章节标题自动编号
- section.label.includes.component.label,默认情况下节的编号中不包括章的编号,如“第二章->1->1.1”,将此项设置为1,即可让节编号中包含章编号,如“第二章->2.1->2.1.1”。
- section.autolabel.max.depth,设置章节标题自动编号的深度
- chunker.output.encoding,设置chunk输出时使用的字符编码
使用catalog
catalog有很多作用,最重要的就是
- 可以给引用的xsl设置缩略名称
- 可以指定DTD在本地的位置
下面是个catalog.xml的例子:
<?xml version="1.0"?>
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<!-- define public DTD -->
<public
publicId="-//OASIS//DTD DocBook XML V4.1.2//EN"
uri="file:///usr/share/sgml/docbook/xml-dtd-4.1.2-1.0-30.1/docbookx.dtd" />
<!-- XSL location -->
<uri
name="html/docbook.xsl"
uri="/usr/share/sgml/docbook/xsl-stylesheets-1.69.1-5.1/html/docbook.xsl" />
<uri
name="html/chunk.xsl"
uri="/usr/share/sgml/docbook/xsl-stylesheets-1.69.1-5.1/html/chunk.xsl" />
</catalog>
这里首先将 "-//OASIS//DTD DocBook XML V4.1.2//EN" 这个id定义到了本地, 这样在xsl中引用这个id所指的DTD时,xsltproc就会使用这里指定的本地DTD,而不用去Internet上去获取。
接下来定义了两个xsl别名:html/docbook.xsl指向 /usr/share/..../docbook.xsl, html/chunk.xsl 指向 /usr/share/..../chunk.xsl。 这样在我们自定义的xsl文件中要包含上述xsl时,只需这样写:
<xsl:import href="html/chunk.xsl"/>
而不用写成繁琐的
<xsl:import href="/usr/share/sgml/docbook/xsl-stylesheets-1.69.1-5.1/html/chunk.xsl"/>
这样做的好处是,可以将样式表的安装路径统一在catalog.xml中规定,不用在每个xsl中重复书写完整路径了。 以后万一要升级样式表,也只需修改catalog.xml中的定义即可,不用去每个xsl中修改。
那么如何使用catalog呢?只需将它设置到环境变量 XML_CATALOG_FILES 中即可。 或者也可以这样:
XML_CATALOG_FILES=catalog.xml xsltproc -o index.html chunk.xsl index.xml
2009-03-13 21:35
@nianzuo 配置确实很麻烦。不过想到写一次代码就能生成各种格式的文档,而且内容格式分离这些优点,就不觉得麻烦了。另外更令人兴奋的是,docbook源代码可以用svn、cvs等工具来管理,这是最重要的。

2009-03-13 17:15
Docbook还真不错,不过却是有点麻烦。