(注意:为了保持解释简洁,本节大部分内容会包含一些“谎言”,主要是省略了很多历史背景。真相将在后续章节中完全还原。)
DocBook 是一种结构级标记语言。 具体来说,它是 XML 的一种方言。 DocBook 文档是一段使用 XML 标签进行结构化标记的 XML 代码。
为了让文档格式化程序将样式表应用于您的文档并使其看起来美观,它需要了解有关文档整体结构的信息。 例如,它需要知道书籍稿件通常由前言、一系列章节和后记组成,以便正确地物理格式化章节标题。 为了让它知道这类事情,您需要为其提供文档类型定义或 DTD。 DTD 告诉您的格式化程序文档结构中可以包含哪些类型的元素,以及它们可以出现的顺序。
我们将 DocBook 称为 XML 的“应用”,实际上是指 DocBook 是一个 DTD — 一个相当大的 DTD,其中包含大约 400 个标签。
DocBook 的背后隐藏着一种名为验证解析器的程序。 当您格式化 DocBook 文档时,第一步是通过验证解析器(DocBook 格式化程序的前端)。 该程序根据 DocBook DTD 检查您的文档,以确保您没有违反任何 DTD 的结构规则(否则格式化程序的后端,即应用样式表的部分,可能会变得非常困惑)。
验证解析器要么会报错,并给出关于文档结构损坏位置的错误消息,要么将文档转换为格式化事件流,解析器后端将这些事件与样式表中的信息结合起来,以生成格式化输出。
这里是整个过程的示意图
图表中虚线框内的部分是您的格式化软件,或工具链。 除了格式化程序的明显可见的输入(文档源)之外,您还需要记住格式化程序的两个“隐藏”输入(DTD 和样式表),才能理解后续内容。