developerWorks XML 专区包含有差不多数百篇文章、教程和技巧,帮助开发人员完成与 XML 有关的大多数应用程序。但是对于试图在一个新的领域寻找前进方向的用户而言,大量的信息可能会使他陷入迷途。本文把所有的 XML 技术基础知识放在适当的上下文中,并与相关的 developerWorks 文章、教程和技巧、IBM 学习服务教育、网上演播、专题讨论会和 IBM 产品联系在一起,供进一步学习之用。本文为希望学习 XML 但不知道从哪里开始的读者提供了一个基础。
什么是 XML?
可扩展标记语言(Extensible Markup Language,XML)提供了一种标记内容的方式,可以添加关于数据用途的信息。信息使用 XML 存储之后,称为解析器的应用程序就能够可靠地提取相关信息,并根据不同的需要处理。
XML 可用于各种不同的应用程序,但其实质是:XML 是一种表示数据的方式。有时候数据是为数据库准备的,有些时候则是供人阅读的。与这两方面应用相关的技术,比如数据验证和 XML 转换也已经随着 XML 自身一起发展起来。
XML 包括验证或者确认的能力、文档结构和文档(在某种意义上的)内容。验证文档有助于防止数据与期望具有特定结构的应用程序进行交互时出现问题,当 XML 与非 XML 的遗留系统交互时这一点尤其有用。最初的 XML 1.0 推荐标准包括对文档类型定义(Document Type Definitions,DTD)的支持,DTD 提供了一些验证能力。W3C XML Schemas 扩展了这种功能,并提供了一种更加类似 XML 的语法。
可通过多种方式使用 XML 封装的数据。一种常见的处理方式是通过使用可扩展样式表语言转换(Extensible Stylesheet Language Transformations,XSLT),开发人员可以使用 XSLT 定义对 XML 文档的操作,以生成特定的结果。这种动态转换信息的能力允许从单个源文档产生多种输出,无论输出到不同的数据库还是输出到不同的浏览器。
XSL 格式化对象(XSL Formatting Objects,XSL-FO)是一种强大而灵活的格式化数据的 XML 词汇表,常与 XSLT 结合使用,把 XML 和 HTML 转化成 PDF(可移植文档格式)。
开发 XML 应用程序时常用到几种模型。您可以使用根据这些模型创建的 API 来分析和操纵 XML 结构,这些模型可以是基于对象的,如文档对象模型(Document Object Model,DOM)和 JDOM;也可以是基于事件的,如 Simple API for XML(SAX)。另外,Java API for XML Parsing(JAXP)提供了使用 DOM、SAX 和 XSLT 处理 XML 文档的通用接口。
其中最常用的 API 是 COM,在这种模型里文档的每个成分被描述成特定类型的节点。这些节点按照父子关系组织。各种不同的语言中都有 DOM API 的绑定,如 Java、C++、Perl 和 Python。
SAX 是第二种应用最广的 API。和基于对象的 DOM 模型不同,SAX 是一种基于事件的模型,把文档转化成一系列回调,如 startElement()。
因为 XML 实质上是一种简单的文本,任何人都可以创建处理 XML 的 API。事实上,SAX 并不是由正式的组织创建的,而是由 XML-DEV 邮件列表的成员完成的。由松散组织创建的另一种 API 是 JDOM――它是基于对象的。JDOM 和 DOM 类似,但是和 Java 语言的联系更密切。
进一步学习请参考:
教程“理解 DOM ”和“理解 SAX”详细介绍了如何创建 Java 应用程序来读取和操纵 XML 文档,但是也包括同样适用于其他语言的概念。
XML 的优势在于它能够在多种环境中使用。大量涌现的各种 XML 词汇表,使人们能够立即互相理解。三种最常用的词汇表是可扩展超文本标记语言(Extensible HyperText Markup Language,XHTML)、资源定义框架(Resource Definition Framework,RDF)和可缩放向量图形(Scalable Vector Graphics,SVG)。
XHTML 是 XML 形式的 HTML 修订版。XHTML 文档就是遵守 XML 规则的 HTML 文档。同时,从业务和表示两方面定义了其他的 XML 词汇表:RDF 提供了一种向 XML 文档添加信息的方式;SVG 提供了一种使用 XML 指定图形元素的方式(因为 SVG 是基于文本的 XML,不仅可用于动态生成图形,还可用于动画和脚本);语音可扩展标记语言(Voice Extensible Markup Language,Voice XML)则用于电话菜单和其他语音相关的系统。
IBM DB2 数据库不仅提供了关系数据库存储,也提供了与 XML 有关的工具,如 DB2 XML Extender 搭起了 XML 与关系系统之间的桥梁。DB2 是业内第一个通过各种方式支持 Web 的关系数据库管理系统,提供了一流的可靠性、性能和可伸缩性。关于 DB2 的更多信息,请访问 DB2 开发者园地。