Schematron是一种基于XPath断言的XML语义验证语言,专注业务规则而非结构约束。它通过context定位节点、assert检查条件,支持跨元素关系、计算逻辑和日期函数,常与XSD分层配合使用。

Schematron 是一种基于规则的 XML 验证语言,它不依赖元素结构或数据类型定义(如 DTD、XML Schema 或 Relax NG),而是通过编写逻辑断言(assertions)和报告(reports)来检查 XML 文档是否符合业务规则、语义约束或领域特定要求。
核心思想:用 XPath 表达“应该是什么”
Schematron 的验证逻辑围绕 上下文(context) 和 条件断言(assert) 展开。你指定一个 XPath 表达式定位到某类节点,再用另一个 XPath 判断该节点或其周围环境是否满足某种业务条件。
- 例如:要求每个
<invoice></invoice>下必须有且仅有一个<total></total>,且值大于 0 —— 这在 XSD 中难以直接表达,但在 Schematron 中可写为:<rule context="invoice"><assert test="count(total) = 1 and total > 0">发票必须有唯一且正数的总金额</assert></rule> - 它不描述“文档长什么样”,而是回答“文档是否合理”——更贴近人工校验逻辑。
与 XSD 等结构型 Schema 的关键区别
XSD 主要约束元素顺序、出现次数、数据类型;Schematron 则专注跨元素关系、计算逻辑、条件依赖等“软性规则”。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~