1、XML Schema:
?定义可出现在文档中的元素
?定义可出现在文档中的属性
?定义哪个元素是子元素
?定义子元素的次序
?定义子元素的数目
?定义元素是否为空,或者是否可包含文本
?定义元素和属性的数据类型
?定义元素和属性的默认值以及固定值
2、XML Schematron:
Schematron 文档基本上是一组应用于 XML 数据的约束。可以以两种方式之一表达具体的 Schematron 约束:
作为断言,这意味着对应用于实例文档的特定条件进行测试。实例文档要想有效,所有断言的计算结果都必须是 true。
作为报告,在这种情况下也对应用的条件进行测试。但是,测试的意义与断言的意义正好相反。如果测试结果是 true,那么文档将处于无效状态。
Schematron 允许将断言和报告一起分组在称为规则 的结构中,然后将这些规则一起分组在模式 中。
可以使用 XPath 指定测试条件,还可以指定应用测试条件的上下文。Schematron 作者还可以提供在违反条件时应用的文本。这些文本应该是人可阅读的,用来向正在操纵数据实例的最终用户进行说明。另外,这些文本也可以具有更强的技术性,从而向正在构造 XML 实例的 XML 开发人员指出 XML 实例必须符合给定 Schematron 文档中定义的约束。
在本文中,我们使用 清单 1 中的简单 XML 实例文档。
清单 1. 简单 XML 文档
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org Simple.xsd">
100
0
清单 1 中的 XML 实例文档引用一个称为 Simple.xsd 的模式,这个模式的内容见 清单 2。
清单 2. 简单 XML 文档的 XML 模式
targetNamespace="http://www.example.org"
xmlns:ex="http://www.example.org"
elementFormDefault="qualified">
清单 2 中的 XML 模式文档声明元素 A 和元素 B 的类型是 integer。但是,XML 模式无法定义对这两个元素的值的约束 —— 例如,它们的和等于 100。但是,在 Schematron 中很容易定义这个约束,见 清单 3。
清单 3. 简单 XML 文档的 Schematron 定义
The sum of the values of A and B must be 100.
尽管目前对 Schematron 的介绍还很简短,但是您可以很容易地看出这个文档的作用。对于应用这个文档的任何 XML 数据,A 和 B 的和值必须等于 100,这是由惟一的 assert 元素的 test 属性中的 XPath 表达式声明的。
Schematron 断言语言提供了一种机制来对使用 XPath 表达式的 XML 文档的有效性进行断言。在一个 Schematron 文档中有 6 个常用元素:schema、ns、pattern、rule、assert 和 report。Schematron 断言语言所使用的元素的命名空间 URI 是 http://www.ascc.net/xml/schematron。
A book must have at least one author
Every book that is on loan must have a return date
see="http://www.example.com/books/guidelines.html"
name="Test for non-zero number of authors">
A book must have at least one author
A book must have at least one author
A book must have at least one author
Every book that is on loan must have a return date