使用 DITA 或者不使用 DITA

有下面的 2 个问题:

DITA 是如何具体使用的?

DITA 是一套软件还是与其他 XML 工具(例如:Arbortext 的 Epic)兼容的一套规则?

回答这样的问题需要一些专业的技术背景知识。一个传统的桌面出版程序是一个集所有出版工具链在一起的单一工具。功能包联系在一起成为一个单一的工具,集和了所有的出版过程。这样导致了每一个出版处理工具都有各自的不足。例如,Frame 的处理引擎非常糟糕; Word 具有一个稀奇古怪的格式化引擎。我们下意识的认为出版是一个简单的操作,因此我们可以用这些单一系统完成所有的操作。出版其实是一系列复杂的处理过程。当你使用 XML 进行处理的时候,出版这个过程就被拆分开了。一些商用的产品,例如,AuthorIT, 将这一个过程进行了整体的打包处理,与 Frame 和 Word 做的工作是一样的。其他的就只面对于这一系列过程中的一部分,而让你可以有选择的使用其他工具来完成其他的工作。这样,这些工具就提供了更大的处理弹性,也有可能使处理过程变得更简单。因为你没有那些框架的限制,你不需要像在 Word 和 Frame 里进行处理的那样了,但是,这样会需要你做更多的工作、思考、设置等。

DocBook简单来说是用于生成技术文档的 DTD 应用,而且仅仅就是一个文件格式,其他的都随便你怎么处理。如果你愿意,你也可以使用 DocBook 的工具集。这些工具集是一些格式转换和其他一些工具,这些工具集是很多人经历了很长时间贡献出来的,当然这些工具集也是开源的。你可以使用这些 DTD 工具,而不用使用这套的工具集。作为可选,你也可以写一个完全不同的 DTD 然后用来转换你 DocBook 中的内容(例如,用 XSLT 脚本),这样你就可以在 DocBook 工具集中使用格式转换和发布工具了。可以这样做的目的主要是说明,你可以出版流程的任何地方使用任何你期望使用不同的工具。

如果你决定使用 DocBook,你可以选择任何你喜欢的编辑器。你可以使用 Jedit 这样的文本编辑器来进行编辑,因为 Jedit 能够很好的支持 XML。你可以使用支持所有功能的结构化编辑器,例如 Arbortext。一些结构化编辑器使用所见即所得的方式来让你的工作更像在使用 Word 一样的。在选购的时候需要谨慎点,因为各个不同的 DTD 编辑器可能具有完全不同的编辑属性。

一些 DocBook 的文档包含了完整导向的 CMS 支持,这样你可以很容易的在 DocBook 上面进行完整的发布了。如果你决定使用 DocBOok,你可以使用你的工具从草稿就开始编辑了,同时你也可以让你的作者使用任何他们自己喜欢的编辑器。或者你也可以通过单一产品的价格来合并你的选择,只要符合你的基本要求就可以了。这些选择有商业软件也有免费软件,或者你也可以去购买一个以 BocBook 为基础的完整出版系统。需要注意的是,如何合并你的工具集比在系统中使用何种软件更为重要,同时一些商业上存在的问题,你也需要解决的。因此,软件的选择其实是基于你文档的格式的。

现在我们来说说 DITA。DITA 是一种很奇怪的杂合体。DITA 实际上要比 DTD(像 DocBook)能做更多的工作,但是,又要达不到出版系统(例如,FrameMaker)能做的工作。总体来说,DITA 是基于主题的。DITA 是通过主题进行支撑的而不是文档,最开始的期望,是用 DITA 来处理帮助系统。然而,基于主题的系统也可以通过主题合并来用于出版文档。

DITA 同时也认为在小的基于主题的 DTD 中能够比大的基于文档的工具(像 DocBook)更为有效的进行工作。问题是,在基于主题的系统中使用多个 DTD,你将如何来管理这些 DTD 之间的关系,如果在不重写所有出版过程工具集的基础上来新增新的 DTD。

DITA 对这个问题的回答又显得有点模棱两可。首先,DITA 使用一个简单的 Map 机制来创建一个新的 DTD,就好象专门化一个已经存在的 DTD。其次,DITA 使用基于 XSLT 的方法来使用一个为基础 DTD 写的转换的小技巧,来使你可以让你写一个新的转换来专门化新的 DTD,这新的 DTD 将会继承已有的 DTD 而不需要修改。这种方法也适用于已专门化的 DTD。

因此,DITA 便在 2 个方面对你进行了限制。一是,新的 DTD 和老的 DTD 之间只能通过非常简单的 Map 机制来进行表示。新 DTD 的专门化可以是你期望他们进行表现的一个任务。其次,你所有的工作可以有 XSLT 完成了。你不能为 DITA 注入其他工具链,因为,继承处理的的规则不允许使用其他的语言。同时已经存在的 XSLT 格式也不能在整套 DITA 工具集中集和,因为 XSLT 被专门化用于 DITA。

和 DocBook 一样,你也有公共的 DITA 工具进行使用。这些工具同时也是基于 DITA 的 DTD 主题的,同时也是一系列你可以使用专门化方法。DITA 同时也包含一系列标准的方法来 Map 和 链接你的主题。你可以使用的 DITA 工具提供的方法,你也可以不使用 DITA 工具提供的方法。不建议使用全部都使用 DITA 工具提供的方法,因为这样你将失去与其他 DITA 系统进行兼容或者升级的能力。

DITA 文件就是 XML 文档,你也可以使用任何编辑工具进行编辑,这里和 DocBook 是一样的。和 DocBook 一样,也有一系列商业或者免费的软件支持 DITA 的编辑。你可以通过这些来创建你自己的 DITA 出版集,使用开源的 DITA 工具集,同时结合一些其他来源的元素处理工具。例如,购买一些商业包。我还不十分确定这些商业包是如何能够完整的兼容在一起。

就个人而言,我不是太喜欢 DITA。因为它映射机制不仅仅是缺陷,而且显得能力有限。DITA 误用了 XML DTD的属性机制。将所有的属性捆绑在 XSLT 也是一个问题。尽管 XSLT 是一个伟大的工具,但是其他一些工具也能提供更好的解决方案。我们也希望 DITA 能够在这些问题上面有一些改进,能够使 DITA 能够更加广泛的推广和使用。