写点什么

XSD、Schematron 与现实世界

  • 2008-04-16
  • 本文字数:1380 字

    阅读完需:约 5 分钟

多部 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?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

2008-04-16 10:101193
用户头像

发布了 29 篇内容, 共 39680 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

体育直播系统多功能开发:专家分析、竞猜比分引爆用户互动欲望

软件开发-梦幻运营部

鸿蒙系统明年将不再适配安卓

不在线第一只蜗牛

鸿蒙 安卓 HarmonyOS

Util应用框架基础(七)- 二级缓存

何镇汐

开源 后端 .net core

JNPF开发平台凭什么火?

互联网工科生

低代码 JNPF

Util应用框架开发环境搭建(十)- 安装 Redis

何镇汐

开源 后端 .net core

这6个复盘模型,你知道几个?让你轻松搞定年终总结

彭宏豪95

个人成长 复盘 年终总结 在线白板 项目复盘

软件测试/人工智能丨人工智能会取代软件测试工程师吗

测试人

人工智能 软件测试

从大模型到内容生成,初窥门径的AI新次元

阿里云CloudImagine

云计算 视频云 AIGC

Java多线程消费消息

不在线第一只蜗牛

Java 多线程 RocketM

技术分享| anyRTC之RTN网络

anyRTC开发者

音视频 网络 RTC RTN

使用 LCM LoRA 4 步完成 SDXL 推理

快乐非自愿限量之名

逻辑思维 流程模型

bitget钱包VS imtoken 钱包大比拼,全方面对比

大瞿科技

RTC技术沦陷后,人类或将一夜回到解放前?

X2Rtc

RTC 未来世界 科技趋势

item_search_pro-高级关键字搜索淘宝商品api接口

技术冰糖葫芦

API 文档

杜绝硬编码,为系统安全保驾护航

尚思卓越

网络安全 硬编码 内嵌账号

如何选择适合的开源框架来构建微服务架构?

EquatorCoco

开源 微服务 框架

inBuilder低代码平台新特性推荐-第九期

inBuilder低代码平台

低代码

文心一言 VS 讯飞星火 VS chatgpt (140)-- 算法导论11.4 5题

福大大架构师每日一题

福大大架构师每日一题

软件测试/人工智能丨引领未来:软件测试中的人工智能

测试人

人工智能 软件测试

青椒云云桌面系统_企业上云桌面云服务解决方案

青椒云云电脑

云桌面 云桌面解决方案 云桌面系统

开源流程设计器的对比与选型

小狗围观科幻

Util应用框架基础(七)- API

何镇汐

开源 后端 .net core

Vue公共loading升级版(处理并发异步差时响应)

快乐非自愿限量之名

Vue 前端 处理机制

原来 TinyVue 组件库跨框架(Vue2、Vue3、React、Solid)是这样实现的?

OpenTiny社区

开源 Vue 前端 React SOLID

最新demo版|如何0-1开发支付宝小程序之如何调试小程序(二)

盐焗代码虾

支付宝小程序 小程序调试 如何调试

如何理解低代码开发工具?

树上有只程序猿

低代码 应用开发 JNPF

国内外传输大文件有哪些好用又便宜的文件传输工具?

镭速

传输大文件 文件传输工具 国内外传输大文件

云桌面架构的全面剖析

青椒云云电脑

云桌面 云桌面解决方案 云桌面系统

体育赛事平台开发:赛事数据分析驱动体育平台创新

软件开发-梦幻运营部

全栈程序员太难了,这个报表工具别再错过了!!

秃头小帅oi

程序员 前端 后端 低代码 全栈

2G内存搞定一亿数据的分析引擎

Western Panda

数据库 大数据 开源 数据分析 OLAP

XSD、Schematron与现实世界_SOA_Thomas Bandholtz_InfoQ精选文章