XSLT 2.0 中模式(Schemas)的使用与类型注解
1. XSLT 1.0 与 2.0 在模式感知上的差异
XSLT 2.0 引入了模式感知,这是与 XSLT 1.0 的一个重大区别。在 XSLT 1.0 中,对 XML 文档的访问主要局限于格式良好的 XML 文档所提供的信息,即文档中实际存在的元素、属性及其排列方式。而在 XSLT 2.0 中,这些信息可以通过模式中的信息进行补充,包括默认和固定的元素与属性,以及每个节点的类型。
XSLT 2.0 有两种一致性级别:基本 XSLT 处理器类似于 XSLT 1.0 处理器,无法访问模式信息;而支持模式感知的 XSLT 处理器则支持在模式验证期间进行注解的节点树。
2. 模式与类型注解
模式用于定义标记语言,指定允许的元素、属性及其可包含的文本类型。常见的模式语言包括:
- DTDs:XML 内置的模式语言。
- XML Schema:W3C 官方的模式语言。
- RELAX NG:最初来自 OASIS,现为 ISO 标准。
- Schematron:一种非常灵活的基于规则的模式语言,也是 ISO 标准。
从概念上讲,对于 XSLT 2.0 而言,模式包含三种重要信息:
- 元素声明:指定特定上下文中特定名称元素的预期类型,以及元素所属的替换组。
- 属性声明:指定特定上下文中特定名称属性的预期类型。
- 类型定义:定义元素或属性允许的内容,并在类型层次结构中与其他类型相关联。
模式的主要目的是对 XML 文档进行验证。验证会检查 XML 文档是否符合标记语言的规则,要么给出文档中包含的有效