W3C 更新 XML Schema 1.1 版本化指南

  • Jean-Jacques Dubray
  • 郭晓刚

2007 年 8 月 22 日

话题:SOA语言 & 开发架构

公平地说,XML Schema 1.0 已经获得了广泛的接受,尽管在它最初登场的时候受到了来自数据、Web 和文档社群的种种非议。人们已经停止使用DTD,甚至连轻量级的替代品如Relax NG也似乎失去了发展的动力。W3C 数年前启动的 XML Schema 1.1 工作组正准备下个月发出“最后召集”,这意味着“它将在十二个月内成为 W3C 推荐标准(Recommendation)[即最高规格的规范]”,David Orchard如是说,他是 BEA 的标准架构师以及 XML Schema 1.1 工作组的成员。

也就是说如果你有大量的 XML Schema,可能现在就应该开始着手计划迁移你的 Schema 和数据绑定策略了。

模块性、扩展性和版本化(Versioning)面向服务架构中消息格式设计的关键方面,而且从 XML Schema 出现起对于最佳使用模式的争论就一直延续至今,因为规范本身允许多种特性的组合(全局 vs 局部类型或元素、限定 vs 非限定的命名空间……)。Roger Costello 对这些模式写过一篇详尽的总结。每种模式提供的模块性和扩展性在程度上各有不同。

在新的 XML Schema 1.1版中,工作组花费了大量的时间来解决 XML Schema 的版本化。在考察了大量的用例之后,七月份 W3C 发布了《用 XML Schema 1.1 新特性对 XML 语言进行版本化的指南》(定案后将成为一份 W3C 备忘录)的阶段性更新,以及三份技术架构组(TAG)文档,分别是《语言的扩展及版本化:术语》、《语言的扩展及版本化:XML 语言》(译注:非指 XML 本身,而是指用 XML 形式定义的语言)和《语言的扩展及版本化:策略》。

XML Schema 1.1 包含很多新的扩展机制。
  1. 弱通配符(Weak Wildcard)——允许通配符紧接在可选元素之后
  2. 对 all 组的更新——可在 all 组中使用通配符
  3. 反向通配符(Negative Wildcard)——排除特定的命名空间与名字
  4. 回退到声明类型——如果 xsi:type 未知则使用声明类型。
  5. 通配符的自动插入
  6. “不在 Schema 中”通配符(Not in Schema Wildcard)——这个通配符匹配当前 Schema 中没有定义的所有事物。

其中一项关键的革新是将扩展性织入到元素序列,而在 1.0 版中,附加的元素只能紧跟在复杂类型定义的后面。版本化指南中详细描述的许多技术,毫无疑问将产生出更多的设计模式,并且创造出更灵活的服务接口,从而在服务的消费者与生产者之间达成更加松散的耦合。

查看英文原文:W3C Publishes an Update to Guide to Versioning XML Schema 1.1
SOA语言 & 开发架构