DocBook的HTML编译环境

DocBook工具链

lyanry posted @ 2007年3月14日 06:28 in 文档标记语言 with tags DocBook , 4822 阅读

1、文本编辑器

  首先和最基本的是适合编辑DocBook代码的文本编辑器,但是我们对于这样的文本编辑器往往有更多的希望,希望它能够编辑C/C++代码、html代码、python代码等等。对于严肃的文本编辑工作,两款编辑器完全统治了Unix/Linux编程界,它们就是vim与Emacs。虽然这两种编辑器在设计哲学上表现出尖锐的对立,但两者都极端流行并且赢得了可观的核心用户群,据Unix/Linux程序员民意调查一直表明两个阵营大约对等,而其它编辑器几乎都排不上号。

  Emacs无疑是现存最强大的程序员专用编辑器,具有强大的灵活性和可定制能力。此外,Emacs拥有一个完整的编程语言——Emacs Lisp,可以编写出任何强大的编辑功能。Emacs的支持者和批评者大都知道Emacs被描绘为伪装成编辑器的操作系统。

  vim相比Emacs,功能不是那么强大,但显的非常精悍,特别是它的快捷键要比Emacs非常吓人的键绑定要好用许多。

  不必虔诚的忠实于使用它们中的一种,只要有机会,两个编辑器都可以用一下,更要理解它们所蕴含的工程实用精神和Unix文化修养。

2、DocBook DTD 文件

  在每一个DocBook源文件中,都可以看到类似下面这样的一句话:

  1. <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
  2. "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">

  这句话就是在告诉处理程序,这份XML文档要使用哪一份DTD定义文件, 其中的“-//OASIS//DTD DocBook XML V4.4//EN”和“http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd” 就是DTD文件的名字。前面那个叫做公共名,是一个特定的DTD文件的唯一的标识字符串。后面那个叫做系统名,表示DTD文件所存放的位置。这个位置可以是任何一个有效的URL, 因此它既可以是一个本地的路径:

  1. "file:///usr/share/sgml/docbook/xml-dtd-4.4-1.0-25/docbookx.dtd"
  2. "file://C:/docbook/dtd/docbookx.dtd"

  也可一是一个指向网络的路径,如:

  1. "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"

  事实上,最好总是把系统名写成第二种形式,因为这样可以获得最好的可移植性。 当使用工具进行文档的校验和转换时,可以通过后面将要提到的catalog文件, 将一个网络路径映射为本地路径,以避免网络下载所带来的速度问题。

3、DocBook XSL 文件

  XSL的全称是 Extensible Stylesheet Language (可扩展样式表语言),它是由W3C组织定义的一种用来解释XML文档的标记语言。 它的主要作用是用来描述如果把格式信息应用到一个XML文件上,这样就可以把文档的内容和显示格式分开,内容由xml文件决定,而 显示格式则由xsl文件决定。

  在DocBook的标准XSL文件中,实际上是包含了几套不同的XSL样式表,有的用来转换为html,有的用来转换为xhtml, 还有的用来转换为rtf等等。但注意一点,XSL本质上只能把一种标记语言转换为另一中标记语言,因此, 为了得到二进制的输出格式,我们就得借助一些中间格式。例如:为了得到pdf,得借助于前面提到过的fo; 为了得到doc,得借助rtf。

  XSL只是一种解释性的语言,类似脚本,它并不能直接处理和转换XML文件,为了转换XML文件, 必须借助能够解释并执行XSL语言的工具:XSLT处理器。

4、XSLT处理器

XSLT是 XSL Transformation (XSL转换)的缩写,它也是属于XSL语言定义的一部分,其作用是将xml文件转换成html、 文本或另一种xml方言。XSLT处理器则是执行这种转换的工具。

XSLT处理器读入并解释输入的xsl源文件,然后根据文件内容的描述,对输入的xml源文件进行格式化和转换, 然后把转换的结果保存。根据xsl文件的不同,一个xml文件可能会产生多个文件的输出。

有一点值得注意的是,XSLT处理器在处理xml文件之前并不一定会对其进行校验,因此, 有些不是完全符合标准的xml源文件常常也能被XSLT处理器处理,并输出正确的结果。

5、XML catalog 文件

  在前文“DocBook DTD 文件”一节中曾经提到过, 为了使写出的文档具有较好的可移植性,应该将DTD声明中系统名的URL写成网络路径而不是本地路径,这是因为网络路径是非常稳定的不会因本地系统环境的不同而变化,因此可以让DocBook文档具有较高的可移植性。使用网络DTD路径,DocBook文档移植问题就迎刃而解了,因为现在的xml处理程序都非常聪明, 知道如何从网络去下载它所需要的文件,并进行解析。但是这引出了一个问题, 那就是本地机器网络速度也许会很慢,如果每次用到DTD文件都从网络下载,那么大部分处理时间将浪费在网络数据传输上, 而且有时可能根本就无法访问网络。

  那么,如何才能同时获得移植性和访问速度这两种优点呢?答案就是使用XML catalog文件。

  catalog文件实际上也是一种XML方言。它的作用是在一个通用网络地址和一个特定主机的本地目录间建立一个映射关系。 当一个支持catalog的处理程序在处理一个网络地址时,它首先会查询catalog文件,看看是否在其中存在指向本地目录的映射, 如果存在,它就会用指定的本地路径去代替网络路径。而只有当映射关系不存在,或者映射的本地路径无法访问时, 处理程序才会去访问真正的网络路径。因此,有了catalog文件,就可以放心大胆的在XML中、Makefile中、shell脚本中 使用通用的网络路径了。当换了一个环境,只需重新配置一下新环境下的catalog文件就可以了,已经写好的源文件 不需要做任何改动。

  catalog文件不仅可以用于指定DTD文件,还可以用来指定entity文件、XSL文件等。

6、XML校验工具

  XML校验工具的作用就是检查我们写的XML源文件是不是完全符合它所声明要遵循的DTD规范,由于DocBook文档也是XML文档,因此XML校验工具也可用于检查DocBook文档语法的正确性。 由于是专用的校验工具,因此这类程序在检查时往往比较严格。有时像XSLT处理器这类程序往往会放过不是特别严重的问题,而专用的校验工具则会一个不漏的检查出来,并且还会对一些可能是出错的地方提出警告。

  因此,如果可能,最好还是让我们的源文件能够通过检查,这样,可以保证DocBook源文件100%正确, 可以防止这个处理程序能处理,那个处理程序就处理不了的问题,有助于提高可移植性。

7、 XSL-FO处理器

  前面在第3小节“DocBook XSL文件”中提到过,为了获得像pdf这样的适用于印刷的文件格式,需要利用XSLT处理器将DocBook XML转换为专为格式化和排版设计的XML方言FO(Formatting Objects)。

  那么,获得所需要的FO文件之后,又要如何处理呢?这时,就需要用到XSL-FO处理器了。

  XSL-FO处理器实际上是一种排版引擎。它读取fo文件中的文字信息和格式化标记,对这些信息进行处理、 布局和排版,最后输出PostScript™或PDF™这样的可以直接被打印输出的硬拷贝文件。

8、自动构建工具

  由于DocBook的工具链包含很多不同的工具,而我们在创作DocBook文档时也常常需要一个 “编辑->转换->检查->修改”的循环,这很像是程序开发的流程。因此我们很自然的想到, 可以借助于在程序开发时的各种自动化处理工具来简化我们的工作。

  比如,我们可以写一段shell脚本或批处理程序来代替每次敲入冗长的命令行。或者更进一步, 使用make程序来自动的检查文件间的依赖并进行转换。或者再进一步,写一个高度灵活但使用简单的外壳程序, 来帮我们调用各种工具并生成复杂的参数选项。甚至是在一些主流的IDE的基础上, 开发出专门用来创作DocBook的集成开发环境。总之,能够减轻我们的琐碎工作就行。


登录 *


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