DocBook XML 和 SGML 之间存在一些差异。对于大多数小型文档来说,处理这些差异应该相对容易,许多作者除了在文档开头进行 XML 和 DocBook 声明之外,无需进行任何更改即可转换他们的文档。
对于其他人,以下是在将文档从 SGML 转换为 XML 时应牢记的事项列表。
![]() | XML 和 SGML 元素之间的差异 | |
---|---|---|
一个 XML 元素通常有三个部分:开始标签、内容(您的文字)和结束标签。限定符添加到开始标签中,称为属性。它们始终具有名称和带引号的值。
开始标签包含一个属性 (class),其值为 "directory"。结束标签(同样是 filename)不得包含任何属性。 |
元素名称(标签)及其属性区分大小写——通常为小写。以下内容将无法验证,因为结束标签 <PARA> 是大写
<para>This part will fail XML validation</PARA> |
开始标签中的所有属性都必须用“引号”引起来。这可以是单引号 (') 或双引号 ("),但不能是反引号 (`) 或 “智能引号”。用于开始 name="value" 对的引号必须与值末尾使用的引号相同。换句话说:“this” 将会验证通过,但 'that" 则不会。
具有开始标签但没有结束标签的标签称为 “空” 标签,因为它们不包含(包裹)任何内容。这些标签仍然必须以尾部斜杠 (/) 关闭。例如xref必须写成 <xref linkend="software"/>。在 / 和 > 之间不能有任何空格。(尽管您可以在最后一个属性后留一个空格:<xref linkend="foo" />。)
发送到转换引擎(DSSSL 或 XSLT)的处理指令必须在标签末尾有一个问号。所有处理指令都将从输出流中删除。此标签的 XML 版本如下所示
<?dbhtml filename="foo"?> |
如果您要从 SGML 转换为 XML,请确保文件名引用 .xml 文件而不是 .sgml 文件。如果 .sgml 文件包含 XML,某些工具可能会感到困惑。
在 SGML 中使用标签最小化来代替在结束标签中写出元素名称。示例<para>这是 foo。</>XML 不支持标签最小化,并且不鼓励在 DocBook 中使用它们。
DTD 版本更改之间的重大更改涉及元素(标签)的更改。元素可能是:已弃用(这意味着它们将在未来版本中删除);已删除;已修改;或已添加。几乎所有作者在从较低版本的 DocBook 升级到较高版本时都会遇到已更改或已弃用的标签。
DocBook: 权威指南 在展示元素如何组合在一起方面做得非常出色。对于每个元素,它都会告诉您元素必须包含什么(其内容模型)以及可能包含在什么中(其父元素)。例如:一个note必须包含一个para。如果您尝试编写 <note>笔记中的内容</note>,您的文档将无法验证。了解元素是如何组装的,将使您更容易理解抛给您的任何验证错误。如果您真的遇到困难,您也可以发送电子邮件到 LDP 的 docbook 邮件列表以获得更多提示。有关订阅的信息,请访问 第 2.2 节
所有已弃用或为 4.x 版本更改的标签都列在 DocBook: 权威指南 中,该指南由 O'Reilly and Associates 出版。这本书也可以在 http://www.docbook.org 在线获取。
以下是一些与 LDP 作者特别相关的元素
artheader. 已更改为articleinfo。大多数其他标头元素已重命名为 info。
graphic. 已被弃用,将在 DocBook 5.x 中删除。为了对此做好准备,请开始使用mediaobject。有关更多信息,请参见mediaobject在 第 D.5 节。
imagedata. 文件格式现在必须以大写字母书写。如果您对文件格式使用小写或混合大小写拼写,则会失败。
有效
<imagedata format="EPS" fileref="foo.eps"> |
无效
<imagedata format="eps" fileref="foo.eps"> |