XML 的文章创建方言!

::-- ZoomQuiet [2005-12-07 02:53:54]

1. DocBook

转自::Docbook简介

编写技术文档,我想谁都遇到过。很多人都用MS Word,不可否认Word的功能确实非常强大,但是用Word有一些缺点无法避免:

1) 写文档的时候,不得不兼顾文档的格式,这是件很头痛的事情,至少对我来说。经常是最后不得不Review好几遍,就是为了统一格式,即使使用模板也不能避免这个问题。

2) 无法进行有效的版本控制,因为Word保存的是二进制格式,这就不能使用CVS的版本控制功能,只能手工合并,这样很容易出错。虽然Word现在也可以保存成XML,但是看一下保存的文件就会发现,格式和内容混杂在一起,简直没法看。况且,版本控制的时候,我们注重的往往是内容,现在却不得不处理大量的格式信息,至少我没兴趣把时间花在这个上面。

3) 可移植性问题,毕竟Word只能运行在Windows平台上,即使可以保存为XML或者HTML,在其他平台上你又如何编辑和打印呢?

4) 用盗版还是正版的问题,公司不得不考虑知识产权这个比较严肃的话题。

讲到这里,很多人可能会自然而然的想到XML+XSLT+开源代码。Docbook正是基于XSLT把内容和形式分开的思想开发的,它可以解决上述的所有问题。

1.1. 什么是Docbook?

Docbook是一些标准和工具的集合。标准包括XML、DTD、XSL、XSL-FO和Docbook DTD(Docbook的核心),工具则包括XSLT Processor和XSL-FO Processor。这些标准和工具组成基于Docbook的发布系统。

Docbook原本是为了编写和发布技术文档而开发的,O'Reily是发起者之一,但实际上它也可以用于其他类型的文档,因为它所定义的结构符合大部分现代书籍的格式。

Docbook的核心是Docbook DTD,这个标准是由OASIS的Docbook小组维护的。这个标准对文档的结构进行了详细的定义,譬如书(book元素)可以包含一个标题(title),若干的段落(para)和若干的章节(chapter),等等。这些都符合常规书籍的出版格式。现在正在开发的DocBook V5.0将使用RELAX NG替代DTD作为标准。

使用Docbook编写文档,实际上就是根据Docbook DTD编辑XML文件的过程。所有的内容都用标签封装起来,Docbook提供了十分详尽的定义,几乎任何内容都可以根据其用途找到对应的标签。在编辑文档的过程中,作者只需要关心内容,根本不会涉及到排版的问题。

要发布Docbook文档,必须使用XSLT。专为Docbook使用的XSLT不属于Docbook的核心,任何人都可以编写自己的XSLT。当然,你不用真的自己写(除非你有兴趣),已经有人做了这方面的工作,你可以在SourceForge找到Norman Walsh开发的Docbook样式单,写这篇文章的时候,最新版本是1.67.2。

如果最终发布Docbook文档,自然需要用到XSLT Processor和XSL-FO Processor这类的工具,可供选择开源工具很多,像xsltproc、Xalan、FOP和PassiveTeX等等。这些工具实际上也是与 Docbook无关的。因此不用浪费时间在网上找Docbook的专门工具,只要找到按标准实现的工具,就可以用来发布Docbook文档。但是不同的工具有不同的特点,比如用C写的显然性能好一点,有的支持xslt扩展等等,当然如果没有特别的要求或者不会用到一些比较高级的特性的就无所谓。

1.2. DocBook 发布流程

总的来说,Docbook的发布流程是这样的:

1) 编写XML文档;

2) 使用XSLT Processor把XML文档转换成HTML文档,或者XSL-FO文档;

3) 使用XSL-FO Processor将XSL-FO文档转换为PDF或者PS文件。

1.3. DocBook 优点

因此,Docbook有下列优点:

1) 内容与格式分离;

2) 内容高度结构化;

3) 平台无关;

4) 发布过程可以自动化;

5) 易于版本控制;

6) 可以生成多种形式的文档。

1.4. DocBook 缺点

Docbook的缺点就是非WYSIWYG,编辑的时候不如Word那么直观,直接编辑XML文件还是一件比较烦琐的事情。但是这个问题并不严重,使用专门的XML编辑器就可以让工作轻松很多,譬如Emacs就支持Docbook文档的编辑。至于效果,使用工具生成最终文档是非常快的。相对于它的优点而言,这点缺点又算的了什么呢。

如果有了XML Editor,DocBook没有所见即所得的缺点应该大大减少了吧。:-)

2. 参考资料

《DocBook学习》 -- limodou 编写的入门书

Docbook

Docbook Publishing Model

安装配置Docbook工具

制作Docbook文档

CDBE -- Chinese DocBook Environment

3. 反馈

  • 谁把DocBookLaTex比较一下啊?

    • 列表中已经有详细説明的了! 简单的说,LaTex 长于图形排版,DocBook 长于图书的快捷组织; -- ZoomQuiet

    • LaTex应该是比较适合数学吧,虽然DocBook好像也有支持MathML的方法。LaTex在组织方面也不差啊。我觉得DocBook更现代一点。它是完全的结构化、语义化的标记,而LaTex只能说基本上是。还有Tex

本身将非常固定了。Kunth说了,将只fix bugs,不会再加新特性了。而DocBook还在不断发展。-- WeakishJiang

DocBook (last edited 2009-12-25 07:11:03 by localhost)