XML Schema 是 2001 年 5 月正式发布的 W3C(万维网联盟)的推荐标准,
经过数年的大规模讨论和开发如今终于奠定下来,成为全球公认的 XML 环境下
首选的数据建模工具。
由于 XML 是 SGML(标准通用标示语言)的一个子集,它也继承了 SGML 用
于建模的 DTD。使用 DTD 的好处是可以利用大量现有的 DTD 工具,使得开发
应用代价维持在一个相对较低的水平。然而,DTD 有不少缺陷:
1. DTD 是基于正则表达式的,描述能力有限;
2. DTD 没有数据类型的支持,在大多数应用环境下能力不足;
3. DTD 的约束定义能力不足,无法对 XML 实例文档做出更细致的语义限
制;
4. DTD 不够结构化,重用的代价相对较高;
5. DTD 并非使用 XML 作为描述手段,而 DTD 的构建和访问并没有标准
的编程接口,无法使用标准的编程方式进行 DTD 维护。
XML Schema 正是针对这些 DTD 的缺点而设计的,它完全使用 XML 作
为描述手段,具有很强的描述能力、扩展能力和处理维护能力。
XML Schema 简介
XML Schema 的主要目的是用来定义一类 XML 文档(一个 XML
Application)。因此,模式的“实例文档”形式常常被用于描述一个与特定 XML
Schema 相一致的 XML 文档。事实上,文档实例和 Schema 文档都不是必须
要以文档的形式存在,它们可以以在应用之间传递的字节流的形式存在,或者
作为一个数据库记录及 XML 的“信息项”的集合存在。然而为了简化入门,我们
总是把实例和模式看作文档或者文件,认为它们总以文档实例或是模式文档的
形式存在。
这里我们将结合一个实例来对 XML Schema 进行简单的概述,希望大家
通过阅读本节的内容初步掌握的使用方法和 XML Schema 文档实例的具体语
义。XML Schema 是 Web Services 技术中需要使用的一个基本工具,然而
并不是 XML Schema 的所有特性都会被广泛地使用,因此,本文将不对 XML
Schema 规范做系统的介绍。
在介绍 XML Schema 语法之前,先来考虑一个 XML 实例文档 po.xml。
它描述了一个由家庭产品采购/支付应用生成的家庭产品购买订单(参阅代码
1)。
<!--代码 1 po.xml,购买订单的 XML 实例文档-->