1.3.1 格式良好的(Well-formed)XML
遵循 XML 基本语法规则和规范的 XML 文档就可以称之为 “Well-formed XML”,中文意思就是“格式良好的XML”。一个 XML 文档首先必须是格式良好的。为什么要强调这一点呢?因为处理 XML 文档的第一步就是解析 XML 文档,将解析出来的元素信息再交给下游程序 进行下一步的处理。用于解析 XML 文档的解析器程序对应的英文术语叫做 Parser。Parser 可以独立使用,也可以称为编辑软件或浏览器的一部分。
1.3.2 XML 的约束模式
我们先看一个 XML 文档:
<书架>
<书>
<书名>Java 就业培训课程书名>
<作者 姓名="张孝祥"/>
<售价 单位="元">39.00售价>
<售价 单位="元">28.00售价>
书>
书架>
这个 XML 文档是格式良好的,用 IE 浏览器打开它不会出现任何问题。但是,一本书出现两种售价,这在逻辑上是说不通的,是不允许的。因此,XML 文档的约束模式就是定义出一套规则对 XML 文档中的内容作出限制。
XML 的约束模式定义了 XML 文档中允许出现的元素名(标记名)、元素中的属性、内容类型,以及元素之间的嵌套关系和出现顺序。如果把一个 XML 文件看做一个数据库中的表,那么 XML 约束模式就相当于数据库表结构的定义,在创建一个表时可以为其中的字段定义约束规则,XML 约束模式则是为 XML 文档标签定义约束规则。
如果没有为一个 XML 文档指定约束模式,那么该文档可以包含任何类型的标记;如果为一个 XML 文档指定了约束模式,那么它必须满足约束模式所规定的的结构、数据类型和数据关联等内容。
1.3.3 XML 的约束模式语言
XML 约束模式语言就是定义 XML 约束模式的语法规则。换句话说,XML 约束模式语言是用来创造(限制)XML 标记语言的语言。这种定义另一种语言的语言,我们称之为元语言。XML 约束模式语言就是一种元语言。约束模式通常都是在一个单独的文件中定义,我们称这个文件为模式文档。那么,依照模式文档编写的 XML 文档被称为实例文档,实例文档是真正包含 XML 数据的地方。
在这里,我们先了解一下 XML 约束模式语言有哪些?后面会详细介绍 XML 约束模式语言的语法规则。
先后出现的 XML 约束模式语言有 XML DTD、XDR、SOX、XML Schema 等,其中应用最广泛和最具有代表性的是 XML DTD 和 XML Schema。
XML DTD:XML Document Type Definition,文档类型定义;
XDR:External Data Representation,外部数据表示法;
SOX:(没有找到资料)
下面介绍一下 XML DTD 和 XML Schema。
XML DTD 是最早出现的一种 XML 约束模式语言,也是目前使用最广泛的一种 XML 约束模式,它用于定义 XML 文档中允许出现的元素名、元素数据类型和元素所能包含的内容类型、元素中的属性,以及元素之间的关系和出现顺序。
XML Schema 是对 XML 文档内容进行约束的另一种模式,其出现的目的是克服 DTD 的局限性,为 XML 文档提供丰富的语法结构。XML Schema 已经成为 W3C 的正式推荐标准,由于它比 DTD 具有更多功能和灵活性,而且采用的全是 XML 语法,XML Schema 已逐步呈现出替代 XML DTD 的趋势。
问题:XML DTD 的局限性在哪呢?学习了 XML DTD 之后思考这个问题。
1.3.4 有效的(Valid)XML
一个遵循 XML 基本语法规则,且符合为其指定的某个 XML 约束模式的 XML 文档就可以称之为 “Valid XML” 文档,即 “有效的 XML” 文档。一个 XML 文档必须是格式良好的,但并也不一定是有效的。
将一个 XML 文档和它所引用的 XML 约束模式进行比较分析,看其中的内容是否符合 XML 约束模式的过程叫做校验(validation),校验过程也是通过解析器程序软件(Parser)来处理的。根据能否对 XML 文档进行约束模式校验,可以将 XML 解析器分为两类:非校验类解析器和校验类解析器。非校验类解析器只检测 XML 文档是否是格式良好的,即是否遵循 XML 的语法规则;校验类解析器不但检测 XML 文档是否是格式良好的,还验证 XML 文档是否符合相应的约束模式。IE 浏览器属于非校验类解析器,它只检测 XML 文档是否是良好的,并不能验证 XML 文档是否符合某个约束模式。
====== 以上内容来源于 张孝祥老师的《深入体验Java Web开发内幕 》,记录下来,只作为个人读书笔记。===========