XML Schema中可接受值的范围是否可以相互依赖?

时间:2017-02-01 10:17:42

标签: xml xsd relaxng

假设我正在为XML文档编写一个模式,其中有一个文档描述了线性游戏板上的碎片:

<piece length="5" position="4" />

其中属性lengthposition都是大于0的非负整数。现在,lengthposition之间存在明确的关系限制有意义的值集。也就是说,position永远不会超过length,例如XML片段

<piece length="5" position="6" />

显然是荒谬的。

我的问题是,是否有任何方法可以使用XML Schema强制执行此限制?如果不是W3C XML Schema语言,那么RELAX NG呢?假设在不受限制的情况下(即对于任何正整数),我所要求的是不可能的,对于受约束的,有限的可能性集合是什么?也就是说,假设我们说length永远不会超过四个。鉴于上述限制,这仅为length留下了4个可能的值。是否然后可以实现我想要的,即使它意味着手动?

1 个答案:

答案 0 :(得分:2)

要表达此类约束,您需要XSD 1.1断言,例如

<xsl:assert test="@position lt @length"/>

XSD 1.1在Saxon,Xerces和Altova中实现。

另一种方法是使用Schematron。