DocBook 向HTML转换中的琐碎细节
1、如何生成utf-8编码的HTML文档?
DocBook是西人创造出来的,并没有考虑东方使用方块文字的语言,因此DocBook转换为HTML时,HTML文档的默认编码是西文ISO-8859-1。下面讲述如何将HTML编码默认设置修改为utf-8编码。
对于DocBook格式化为单文档结构的HTML文档而言,要修改位于“/usr/share/sgml/docbook/xsl-stylesheets/html”目录下(我的系统默认环境)的docbook.xsl文件。打开该文件,找到如下内容:
encoding="ISO-8859-1"
indent="no"/>
对这几行代码修改如下:
encoding="utf-8"
indent="yes"/>
其中,encoding='utf-8',让生成的HTML文档编码为utf-8,默认的是西文编码,即ISO-8859-1。indent='yes',可以让生成的HTML文档源码呈缩进格式显示。这里,我采用了直接修改DocBook.xsl文件的方式来实现,因为实在没找到更好的方法。依理说,应该尽量不要动DocBook的标准设定。这种硬编码方式导致DocBook可移植性差。
对于DocBook格式化为多文档结构的HTML文档而言,与单文档格式的硬编码修改方式不同,可在$DOCBOOK/xsl-stylesheets/html目录下建立一个xsl文档,譬如命名为my-chunk-doc.xsl,在该文档中填写如下内容:
-
<?xml version='1.0' encoding='utf-8'?>
-
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
<xsl:import href="chunk.xsl"/>
-
<xsl:param name="chunker.output.encoding" select="'utf-8'"/>
-
<xsl:param name="chunker.output.indent" select="'yes'"/>
-
</xsl:stylesheet>
所修改的这些参数的原始定义在chunker.xsl文件中。
2、关于无法生成表格的问题
使用xsltproc似乎无法处理含有表格标记的DocBook文档,给出的错误信息是:“No adjustColumnWidths function available”。查了一下,有人说原因是“This function is not available for libxslt (it is written in java).”。
解决方法是关闭“$DOCBOOK/xsl-stylesheets/html”目录下的param.xsl文件,将其中的“tablecolumns.extentions”参数置0即可。
2007年4月05日 00:07
<><><><><><><>><><