[InfoQ中文站]多部XML、XSL、SVG以及XQuery书籍的作者Kurt Cagle,就XSD和Schematron在模式模型语言(Schema Modeling Language,SML)中的联姻,发表了关于 XML和模型的博文。作为示范,他提供了一个SML模式的例子,这个例子涉及当前日期的处理(合同在给定的时间范围内有效)以及一个货币动态列表(其位于一个外部文档中)。毫无疑问,SML使模式编辑器能够将动态值约束作为模式的一部分表达,另一种方式是将其留给应用程序逻辑去处理。然而,XSD应该被视为是一种模型语言吗?
XSD的主要目标是“定义和描述一类XML文档”,并且不要忘记XML中的“M”代表的是标记(markup)而不是模型(modeling)。这个中庸的处理方式可能是它成功的秘诀之一:忽略所有那些观众可能有异议的东西,只为多数意见提供一个稳定的解决方案。在第一个十年里,这一做法使得XML和XSD向全面互操作目标迈出了巨大一步,虽然这种互操作性在目前被认为是理所应当的。
随着Schematron进一步增强XSD,当今对XSD敏感的安装库表现如何呢?它们很有可能会简单地忽略这些附加项目,就像它在著名的annotation/appinfo元素(支持非破坏性迁移的)中的聪明表现一样。
那么有谁会谈论SML?