xml文档语义控制的解决方案

时间:2010-02-10 13:29:57

标签: c# xml ruby

例如,

Xml文档:

<some_document>
 <elements>
  <element>1</element>
  <element>2</element>
  <element>3</element>
 </elements>
 <sum>6</sum>
<some_document>

规则(以某种形式,可能是xml),根据给定文档的模式:

Sum of all <element> fields must match the value in <sum> field

结果: 根据规定的规则,文件是否有效?(也可能是xml格式)

所以,我需要一个实现给定功能的库,或者至少需要自己编写的库。语言并不重要。

2 个答案:

答案 0 :(得分:1)

Schematron可能是一个很好的解决方案。

Schematron是ISO标准,它提供了一种编码XML Schema中无法实现的业务规则,限制和验证的方法。这些规则被编译到XSLT中,并且可以在任何可以调用XSLT转换的环境中运行。

  

Schematron基本不同   来自其他模式语言的概念   它不是基于语法而是基于语法   在解析中找到树模式   文献。这种方法允许很多   要表示的各种结构   这是不方便和困难的   在基于语法的模式语言中。如果   你知道XPath或XSLT表达式   语言,你可以开始使用了   Schematron立刻。

答案 1 :(得分:0)

您可以使用xslt添加<element>代码的值,并与<sum>

中的值进行比较
<xsl:value-of select='sum(//element) = //sum'/>

这将返回比较结果..