DocBook的HTML编译环境
使用 bibtex 管理参考文献

DocBook 向HTML转换中的琐碎细节

lyanry posted @ 2007年4月04日 23:02 in 文档标记语言 , 3885 阅读

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文件。打开该文件,找到如下内容:

Language: xml
<xsl:output method="html"
            encoding="ISO-8859-1"
            indent="no"/>

 对这几行代码修改如下:

Language: xml
<xsl:output method="html"
            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,在该文档中填写如下内容:

  1. <?xml version='1.0' encoding='utf-8'?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  3.     <xsl:import href="chunk.xsl"/>
  4.     <xsl:param name="chunker.output.encoding" select="'utf-8'"/>
  5.     <xsl:param name="chunker.output.indent" select="'yes'"/>
  6. </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即可。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter