写点什么

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:101449
用户头像

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

关注

评论

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

HarmonyOS Connect FAQ第四期

HarmonyOS开发者

HarmonyOS

利用现有数据库管理系统创建一个安全的分布式数据库集群

亚马逊云科技 (Amazon Web Services)

大数据 分布式 Tech 专栏

OceanBase发布“珊瑚计划”,让合作伙伴成为OceanBase成功的关键

OceanBase 数据库

传统堡垒机数据可以迁移到云堡垒机上吗?方式有哪些?

行云管家

云计算 网络安全 堡垒机

基础到高级涵盖11个技术,Alibaba最新出品711页Java面试神册真香

收到请回复

Java 大数据 架构 编程语言 语言 & 开发

膜拜阿里!首次发布「10亿级并发系统设计文档」(内部绝密)

退休的汤姆

阿里 面经 Java工程师 秋招 并发系统设计

什么!阿里最新版Spring Cloud Alibaba项目文档,竟将重要组件弃用

收到请回复

Java spring 阿里巴巴 面试 spring-cloud

大数据毕业设计

Geek_Q

学习总结-网关 架构演进

C++后台开发

网络编程 API 网关 C/C++后台开发 C/C++开发

开源一夏 | 如何使用谷歌浏览器 Chrome 更好地调试

海拥(haiyong.site)

JavaScript chrome 开源 Google 8月月更

PingCAP Clinic 服务:贯穿云上云下的 TiDB 集群诊断服务

TiDB 社区干货传送门

多并发下线程创建、释放的阻塞问题

TiDB 社区干货传送门

云堡垒机主要针对运维过程中的什么进行管理和审计?

行云管家

运维 堡垒机 IT运维 云堡垒机

某站下载量过W的近4000页“Java面试合集”号称大厂面试零门槛

收到请回复

Java 程序员 面试 金九银十

五天玩转EMAS Serverless

云端explorer

云计算 Serverless emas

对话ACE第五期:到底什么才是真正的HTAP?

OceanBase 数据库

私有化部署的低代码平台 更安全的信息化解决方案

力软低代码开发平台

TiDB 和 Golang 的简单 CRUD 应用程序

TiDB 社区干货传送门

魅族高校新生充电计划进行中,直播课让科目一新生直呼厚道

极客天地

希捷亮相OCP China Day 2022,与生态伙伴共话绿色存储之道

极客天地

一对一直播软件——如何实现音视频传播?

开源直播系统源码

软件开发 直播系统源码 一对一语音聊天软件 语音直播系统

采访22年第一批秋招上岸的同学后,我整理了这份Java面试手册

Java面试那些事儿

Java 编程 程序员 架构 面试

Go-Excelize API源码阅读(十四)——GetSheetFormatPr

Regan Yue

开源 源码刨析 Go 语言 8月日更 8月月更

离线部署系列文章之二:TiDB集群升级(5.3.0->5.4.2)&缩扩容 TiDB Server、PD、TiKV、TiFlash

TiDB 社区干货传送门

版本升级 集群管理 管理与运维 安装 & 部署

TiDB 和 Java 的简单 CRUD 应用程序

TiDB 社区干货传送门

如何让 TiDB 集群管理“更省心”?TiUniManager(原 TiEM)使用教程来了

TiDB 社区干货传送门

大数据训练营毕业总结

Geek_Q

X-mask神秘面具NFT挖矿dapp系统开发逻辑详情

开发微hkkf5566

TiFlash Proxy 模块介绍

TiDB 社区干货传送门

2022 OceanBase 年度发布会:发布四大策略,迈入4.0时代

OceanBase 数据库

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