在阅读本节之前,最好至少对标记语言中的标签有一个基本的了解。因此,如果您对此不太了解,您可以先查看示例 1,了解 LinuxDoc 标记。
一种比较方法是查看 LDP 网站上的真实 HOWTO 文档。点击 DocBook 索引 或 LinuxDoc 索引 找到它们。您会注意到 DocBook 文档充满了标签,而 LinuxDoc 文档的标签要少得多,因此更易于阅读,更易于编写和修改。LDP 上的一些文档的标记比其他文档更清晰,因此您应该至少检查几个文档。
您可能最初认为 DocBook 更高级,因为它有更多的标签,但这不一定如此。如果您在 LinuxDoc 中创建一个文档并将其(通过计算机)转换为 DocBook,那么 DocBook 版本中将会有更多的标签,包括 LinuxDoc 版本中没有的新标签。为什么?因为 LinuxDoc 允许省略标签,而 DocBook 不允许。因此,LinuxDoc 比 DocBook 更灵活和更高级。LinuxDoc 不仅经常允许省略像 </title> 这样的结束标签,而且还允许省略开始和结束标签对。例如,在 LinuxDoc 中,段落通常由空行分隔,而不是成对的段落标签 <p>(DocBook 中为 <para>),因此很少需要段落标签。另一个例子是在 LinuxDoc 文档的新章节开始之后。您只需在 <sect> 标签后输入章节的标题,而 DocBook 要求您还将标题括在一对 <title> 标签中。
当运行程序将 LinuxDoc 转换为 HTML 时,程序首先要做的是找到所有省略的标签并将它们添加到文档中。例如,添加一对标签,它们等同于 <sect> 标签后的一对 <title> 标签(包括 <sect1> 标签等的情况)。因此,从某种意义上说,LinuxDoc 也有很多标签,但它们对用户是隐藏的,这使得文档更容易编写和阅读。在大多数情况下,使用 LinuxDoc 编写文档的作者并不知道大多数缺失标签的存在。作者没有必要(在大多数情况下)了解它们,因为它们仅在 PC 将 LinuxDoc 转换为其他格式(如 HTML)时才存在于计算机内存(或临时文件)中。当然,可以保存一个显示添加标签的文件,但这主要是由程序员调试 LinuxDoc 计算机代码(或像我这样对它的工作原理感到好奇的人)完成的。
DocBook 标签通常比等效的 LinuxDoc 标签更长,例如 <em> 而不是 <emphasis>。有关简短的比较,请参阅作者的网站 DocBook 与 LinuxDoc 的比较
然而,在编写 LinuxDoc 时省略许多标签(但软件会找到它们)只是 LinuxDoc 文档标签较少的原因之一。另一个原因是 DocBook 实际上比 LinuxDoc 有更多的标签可以使用。例如,LinuxDoc 只有一个用于作者姓名的标签,而 DocBook 有单独的标签用于名字、中间名和姓氏。因此,从这个意义上说,DocBook 比 LinuxDoc 更强大,但在另一个意义上,它更弱,因为它找不到缺失的标签。解决这个困境的方案是将 LinuxDoc 与 DocBook 合并,以保留各自的优点。DocBook 届时将需要放弃其作为“xml”语言的当前状态,因为 xml 禁止省略标签等,而 sgml 允许这样做。
DocBook 不允许省略标签的一个原因是,这使得程序员更容易编写软件来解析它并将其转换为其他格式。不需要能够查找和添加缺失标签的软件。但是,为程序员提供便利,却使必须使用 DocBook 的更多数量的作者更加困难。
有一些特殊的编辑器或文字处理器,如 Lyx 和 Bluefish,可以更轻松地键入 DocBook 文档。例如,Bluefish 会自动添加结束标签。但是对于不想学习新编辑器或文字处理器的人来说,LinuxDoc 要容易得多,因为人们可以手动键入标签或创建一组宏来插入 (<emphasis> 标签。我使用 vim 编辑器,如果我键入 ;s,它会插入 <sect1> 标签。;r 执行 <sect>,;i 执行 <item> 等。对于文档前几行的标题标签,我只是从另一个文档中复制它们并更改标签后的单词。当然,我不需要更改作者的姓名或电子邮件。因此,LinuxDoc 的一个主要优点是,人们可以轻松地将它与他们当前使用和熟悉的编辑器或文字处理器一起使用。
一些不了解情况的人提倡通过仅使用 DocBook 标签的子集来使 DocBook 像 LinuxDoc 一样简单。但这行不通,因为由于 DocBook 不允许省略任何标签的要求,DocBook 仍然需要几倍的标签才能获得相同的结果。
尽管 LinuxDoc 具有优势,但使用 DocBook 的人数大大超过了使用 LinuxDoc 的人数,部分原因是 Linuxdoc 受到图书出版商的推广。Reuben Thomas (ld2db) 编写了一个程序,可以将 LinuxDoc 文档转换为 DocBook。它并不完美,您可能需要进行一些手动编辑。LDP 也会在您提交 LinuxDoc HOWTO 后自动将其转换为 DocBook。如果有一个程序可以自动将 DocBook 文档转换为 LinuxDoc,以便使用更简单的 LinuxDoc 标记的人可以修改它们,那就太好了。