从前面可以看出,虽然XML标准本身简单,但与XML相关的标准却种类繁多。其实上一小节中列出的还只是XML的基础标准,实际上还有很多用XML定义的应用标准,也是我们这一章中讲述的重点。到目前为止,仅W3C制定的相关标准就有二十多个,采用XML制定的重要的电子商务标准又有十多个。这一方面说明XML确实是一种非常实用的结构化语言,并且已经得到广泛应用;另一方面,这又为学习了解这些标准带来一定得困难,除了标准种类繁多外,标准之间通常还互相引用,特别是应用标准,它们的制定不仅仅使用的是XML标准本身,还常常用到了其他很多标准。对某一特定的应用领域哪些标准是重要的呢?哪些标准是基础的,被其他标准广泛引用呢?这些标准之间的相互关系如何呢?XML标准的体系是怎样的呢?
下面我们就给出XML标准体系的框架。不过由于XML脱胎于SGML,二者的体系也非常相似,所以我们不妨先占用一点篇幅说说XML的老祖宗——SGML。
SGML文件的组成主要有三部分,即SGML声明、DTD和文件实例。
- SGML声明是说明DTD和文件实例所使用的语法,其中包括文件和语法元素使用的字符集、定界符和命名规则、名字字符的使用、保留名的替换、可选的特征,如是否允许标记省略或子文件出现,另外此声明还指出系统的一些数量特征,称为容量集,例如名字允许的最大长度。SGML这部分体现了"抽象语法"的思想,即对于不同的系统环境、民族习惯及键盘设置,SGML的语法是可以改变的。
声明部分在XML中被极大地简化,许多在SGML声明中的内容,被直接以固定的取值形式写入XML标准之中。但这并不影响XML的灵活性与可扩展性,因为XML已经有其明确的应用对象与应用背景,而恰恰是这种简化,大大降低了其复杂性,从而适应了WWW的应用要求。
- DTD(Document Type
Definition)称文档类型定义,与XML中的DTD一样,主要作用是定义一类文件的结构。在DTD中说明此类文件中有哪些元素,它们之间是怎样包含的,及出现的限制。
- 文件实例是文件实际要表达的信息,是由文件数据内容和描述结构的置标组成。这一部分内容也就相当于XML数据文档中的内容。
下图对SGML、HTML和XML的文件组成进行了比较:

从上图可以看出,SGML文件首先要进行SGML声明,但对于只由一个系统处理的SGML文件也可隐含SGML声明。通常,一个SGML声明也代表着一个SGML处理系统的特征与性能。在具有相同的SGML声明的情况下,可定义不同的DTD,每个DTD定义的是一类SGML文件实例。XML文件的XML声明大大简化,许多SGML声明中的内容都已作为XML标准的一部分内容被固定下来,但XML还是有充分的灵活性定义DTD。而对于HTML来说,DTD则已经是固定的了。
在XML标准出现之前,SGML标准已形成完善的体系,并有许多建立于其上的应用系统与应用标准。如下图所示,SGML标准的体系可分为三个层次:第一层次是元语言标准:SGML标准;第二层次是基础标准,如:HyTime、DSSSL等,是该体系的基本标准;第三层次是具体的应用标准,如:Internet上已广泛应用的HTML、VRML等标准。

现在,再仔细地看看中间那层的基础标准。这些基础标准可分为三类:信息描述标准、信息表现标准和信息关联标准。
-
信息描述:这一类标准是与SGML标准本身直接相关的标准,如:SGML公共标识符注册标准(ISO
9070)、SGML技术报告(ISO TR 9573)、SGML一致性测试系统标准(ISO/IEC
13673)、文档处理APIs标准等等。
-
信息表现:这一类标准是关于组合文档、超媒体文档的描述与处理的标准。如:文档处理框架与逻辑文档格式化、多语种字体信息、信息交换与服务等等。具体标准包括:文档样式语义与规范语言标准DSSSL(ISO/IEC
10179)、标准页面描述语言SPDL(ISO/IEC 10180)、字体标准Fonts (ISO/IEC 9541)、字体注册标准Font
Registration (ISO/IEC 10036)等等。
-
信息关联:这一类标准是关于基于SGML进行信息管理与交换的标准,如:信息的链接与定位、基于时间的信息管理、知识结构与索引的表示法、交互式文档中的动作管理。具体的标准包括:超媒体/基于时间的结构化语言标准HyTime
(ISO/IEC 10744)、基于主题的地图导航标准 (ISO/IEC
13250)、可更改交互文档交换标准ISMID。
在这些协议中,信息表现部分最重要的标准是DSSSL(Document Style Semantics and
Specification Language),信息关联部分最重要的是HyTime(Information processing --
Hypermedia/Time-based Structuring Language (HyTime) - 2d
edition)。这两个标准也是对XML标准体系中影响最为深刻的两个。其中前者是一种与平台无关的进行SGML文件处理的语言,其中主要包括转换语言、样式语言、表达式语言和标准文档查询语言(SDQL),XML相关标准中的CSS、XSL、XSLT、XPath,就有很多内容是从DSSSL中继承过来的。后者则定义了一个元素类型的集合,以便使用者可以利用这些类型,以一种标准的方式,在已有的SGML文档中提供超链及其他功能。在XML相关标准中,XPath、XPointer继承了这方面的内容。