InfoQ

新闻

XSD、Schematron与现实世界

作者 Thomas Bandholtz译者 王锐 发布于 2008年4月16日 上午10时10分

社区
SOA
主题
标签
XML

多部XML、XSL、SVG以及XQuery书籍的作者Kurt Cagle,就XSD和Schematron在模式模型语言Schema Modeling LanguageSML)中的联姻,发表了关于 XML和模型的博文。作为示范,他提供了一个SML模式的例子,这个例子涉及当前日期的处理(合同在给定的时间范围内有效)以及一个货币动态列表(其位于一个外部文档中)。毫无疑问,SML使模式编辑器能够将动态值约束作为模式的一部分表达,另一种方式是将其留给应用程序逻辑去处理。然而,XSD应该被视为是一种模型语言吗?

XSD的主要目标是“定义和描述一类XML文档”,并且不要忘记XML中的“M”代表的是标记markup而不是模型(modeling)。这个中庸的处理方式可能是它成功的秘诀之一:忽略所有那些观众可能有异议的东西,只为多数意见提供一个稳定的解决方案。在第一个十年里,这一做法使得XML和XSD向全面互操作目标迈出了巨大一步,虽然这种互操作性在目前被认为是理所应当的。

随着Schematron进一步增强XSD,当今对XSD敏感的安装库表现如何呢?它们很有可能会简单地忽略这些附加项目,就像它在著名的annotation/appinfo元素(支持非破坏性迁移的)中的聪明表现一样。

那么有谁会谈论SML?SML 1.0 大约一年以前被一个令人尊敬的大企业联盟(包括了BEA,CA,Cisco,EMC,HP,IBM,Intel,Microsoft 和Sun等公司)提交给了 W3C,目前已变成1.1版工作草案,没有做任何大改变,看起来它相当稳定。

随着XSD 1.1即将到来的升级,SML会如何应对?虽然SML工作组与XML模式工作组一起都由W3C XML活动组主管,但SML涉及到XML模式第一部分:结构第二版(2004),其中甚至没提及XSD 1.1 草案 2007-08 。XSD 1.1 试图解决“XML语言版本”以及“支持同现限制(co-occurrence constraints),它使一个属性或元素的出现依赖于其他元素或属性的出现,它们所允许的值依赖于其他元素或属性的值”的问题。

最后,这其中有什么竞争机制吗?Web服务模型语言(Web Service Modeling Language,WSML) —— 至少在名字上很相似 —— 属于已提交的四个意见书中的一个,并最终促成了另一个W3C建议:2007年的WSDL和XML模式--SAWSDL的语义注解。SAWSDL已被设计支持语义服务互操作性,它大体上打开了XSD和WSDL通向强大的基于本体建模能力的语义网的大门。

怎样才能把这三个分支汇集到一起?在先前关于XML会走向何方的讨论中,Kurt自己强调了语义相对于其它趋势的地位:

如果我是一个刚进入IT领域的IT专业大学毕业生,我会去考察语义系统和知识管理,将其作为热点领域并成为我的起点。

为什么只给年轻一代传递这个?虽然SML/Schematron方式可能会是对XSD约束表现力的一个合情合理的增强,但仅仅增加一个“为模式角落准备的鸡毛掸子”(Rick Jelliffe语)并不能使一个服务模型语言(Service Modeling Language)值得贴上一个如此有挑战意味的标签。当然一个模式是一个模型的一种,但是一个模型远远不仅仅是一个模式(即使是一个带有蜘蛛网的角落)。什么是建模语言?Kurt从一个应用开发商的角度再次提供了关键的要求:

在你写下每一行代码之前,你应该对你要在那行代码中所抽象的现实世界的一个片段有合理、深入地理解。

一个完整的模型不仅仅关于结构和约束;它需要与描述真实世界相关方面的概念联系起来。而且这正是语义需要引进的。

查看英文原文XSD, Schematron, and the Real World

没有回复

回复

独家内容

从卓越工程角度看微软中国开发团队的成长

开发团队的成长离不开优秀的人才,简捷有效的流程和高效率工具这三个卓越工程系统中的重要因素。本文作者从这三个因素分析了微软中国开发团队是如何“从优秀到卓越”的。

利用Ruby简化你的Java测试

本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。

与赵进聊SaaS

InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。

在ESB中选择路由还是编配?

在这篇文章中,Adrien Louis和Marc Dutoo在一个典型的ESB场景中讨论了编配和路由的区别和优缺点。他们讨论了几种连接服务的方法,从使用如自定义路由这样的低级别方法,到使用如工作流和编配这样面向业务的高级别方式,并总结说不存在“一边倒”的解决方案。

分布式系统中的一致性和可用性

本文是根据7月26日InfoQ中文站在杭州举行的QClub活动(第三期)后半程小组讨论总结而成。主要内容包括如何在SOA系统中实现服务编排,如何保证分布式系统中的一致性和可用性,以及如何在实施SOA的过程中控制接口的粒度等。

虚拟化导论

人们很容易想当然的以为虚拟化技术仅仅应用于服务器。而在现实中,虚拟化这一苏醒的概念正被运用于各个层面,其中包括网络,存储以及应用基础架构。在这篇导论中,InfoQ将深入每个方面,详尽向您描述虚拟化技术的运用以及其优点与不足。

用户故事估算技巧

作为开发者,同时也是ThoughtWorks的咨询师,Jay Fields总结了自己估算用户故事的有效技巧。

InfoQ案例研究:纳斯达克市场回放

在这篇案例研究中,InfoQ对Adobe AIR和Amazon的简单存储服务(Simple Storage Service ,S3)在NASDAQ市场回放程序(NASDAQ Market Replay)中的应用进行了详细的分析。