XML 文档结构化

作者:Terry Dawson
Structuring XML Documents
  • 作者:David Megginson

  • 出版社:Prentice Hall

  • 电子邮件:info@prenhall.com

  • 网址:http://www.prenhall.com/

  • 价格:44.95美元

  • ISBN: 0-13-642299-3

  • 评论员:Terry Dawson

仔细看看 Linux 社区中正在进行的各种文档项目,您会发现 SGML。Linux 文档项目、Debian 文档项目和其他项目都在使用 SGML 作为生成结构化和风格一致文档的主要工具。为了寻找更复杂的 HTML 替代品,人们开发了 XML,它在很大程度上基于 SGML。XML 几乎拥有 SGML 的所有功能和特性,但由于网络驱动的浏览器和编辑器市场,它可能会得到更好的支持。因此,XML 可能会在许多应用中取代 SGML。

SGML 和 XML 都提供了一种描述文档结构的方法。SGML 和 XML 依赖于称为 DTD(文档类型定义)的定义,这些定义描述了文档结构。

在本书中,David Megginson 胜任地解释了高质量 DTD 设计的过程。虽然书名暗示它是 XML 特有的,但事实并非如此。SGML 和 XML 有如此多的相似之处,以至于可以同时描述两者,并在出现差异时突出显示两者之间的差异。本书是 Charles F. Goldfarb 系列的又一本,Megginson 先生在书中描述了使用 SGML 和 XML 进行文档结构化,并设法避免在此过程中让读者感到困惑。本书分为四个主要部分,并包含一张 CD-ROM,其中包含实现 XML 解析器的软件以及精选的现代和流行的 DTD。

第一部分提供了一些关于 XML 的背景知识,描述了它与 SGML 的不同之处,并检查了五个流行的和有用的 DTD。本章不适合没有 SGML 或 XML 经验的人,也不是为了教您这两者中的任何一个,但如果您至少熟悉其中之一,它将帮助您了解另一个。关于 DTD 语法的章节清楚地说明了两者之间的异同。详细检查的 DTD 是

  • ISO-12083

  • DocBook

  • 文本编码倡议 (TEI)

  • MIL-STD-38784 (CALS)

  • 超文本标记语言 (HTML 4.0)

前四个 DTD 在常用,并启发了许多其他 DTD 设计。例如,CALS 表格设计已被多次借用并在其他 DTD 中使用。

第二部分涵盖了 DTD 分析的原则。本书的核心内容从这些章节开始。它们描述了如何从三个重要的角度批判性地分析 DTD:易学性、易用性和易处理性。特定 DTD 的易学性对于 DTD 被作者接受至关重要。如果 DTD 难以学习,作者将倾向于不使用它,只使用它的一小部分,或者更糟的是,通过弯曲它来适应他们的需求而误用它。Megginson 先生描述了如何分析 DTD 的易学性,目的是指导您如何设计易于学习的 DTD。

题为“易用性”的章节描述了如何分析 DTD 以确定作者在编写文档时是否容易使用它。探索的一些问题包括标签和属性的命名、何时使用新标签以及何时向现有标签添加属性,以及可以简化或复杂化作者工作的结构问题。

关于易处理性的章节对于那些发布和开发处理工具的人特别感兴趣。DTD 可能易于作者学习和使用,但这并不总是转化为易于处理成印刷或出版形式的东西。这些课程大多是将常识应用于 DTD 设计的具体任务。

本书的第三部分涵盖了许多高级 DTD 维护和设计问题。它主要对那些打算将 SGML 或 XML 用于发布以外目的的人感兴趣,例如数据库系统或其他信息管理应用程序。涵盖的第一个主题是 DTD 兼容性。我之前提到过 CALS 表格设计已被借用以用于其他 DTD。当 DTD 相似时,将文档从一个 DTD 转换为另一个 DTD 非常简单。如果您希望与具有不同 DTD 的组交换文档,这将非常有用。本章描述了如何识别兼容性以及在设计 DTD 时牢记兼容性的优势。

第二个主题将此讨论扩展到交换文档片段。文档片段可能是书中的单个章节或段落。如果您希望与使用不同 DTD 的组共享文档的某些部分,您将在本章中找到简化任务的有用技巧。

本节的最后一个主题是 DTD 自定义。DTD 自定义是采用现有 DTD 并对其进行修改以适应您的特定用途的过程。设计复杂的 DTD 可能是一项复杂的任务。通常,没有理由从头开始设计 DTD;现有的 DTD 可能提供您需要的 95%,只需要少量自定义即可完全满足您的需求。这可以节省大量时间,并在文档交换和兼容性方面提供优势。本章描述了如何自定义 DTD,以及如何设计易于自定义的 DTD。例如,DocBook DTD 在设计时就考虑了允许轻松自定义的钩子。

本书的第四个也是最后一个部分涵盖了使用称为架构形式的技术进行 DTD 设计。架构形式允许 DTD 设计者指定将其 DTD 转换为一个或多个其他 DTD 的方法。架构形式允许您编写对于多个不同 DTD 同时有效的文档。本书的这一部分描述了架构形式的概念和实现,并为希望使用此功能的开发者提供了有用的提示和建议。我发现本书的这一部分有点难以理解,但这几乎肯定是因为我对需要使用这种高级技术的应用程序接触有限。我相信,任何有架构形式应用程序的人都会发现所提供的信息是对该主题的良好介绍。

我很高兴地报告 CD-ROM 包含 Linux 版本的 XML 解析软件。提供了两个 XML 解析器。第一个是流行的“SP”解析器的预编译版本。第二个是基于 Java 的 XML 解析器,名为“Aelfred”。本书中描述的每个 DTD 都以其 SGML 形式包含,以及许多指向 Internet 上有用资源的链接。CD-ROM 提供了一些基于 HTML 的文档,但在其他方面文档记录不完善。我给人的印象是 CD-ROM 是本书的临时补充;然而,它确实提供了工具,使读者能够试验所描述的技术,并且就此而言,它是足够的。

我发现 XML 文档结构化 是一本有趣且内容丰富的书,我肯定会在未来将其用作参考。David Megginson 在简洁地捕捉大量材料的同时,保持节奏足够慢,以便人们能够相当舒适地吸收信息,这方面做得很好。本书非常适合 SGML 或 XML 设计者,SGML 设计者不应被书名误导。我建议任何对 DTD 设计感兴趣的人,特别是那些参与 Linux 相关文档项目的人,都应该看看这本书。它肯定会对您的工作有所帮助。

Structuring XML Documents
Terry Dawson 是一位全职 Linux 倡导者,他的儿子 Jack 的出生让他沉浸在“父亲”的新角色中。Dawson 先生的联系方式是 terry@perf.no.itg.telecom.com.au。
加载Disqus评论