假设我正在为XML文档编写一个模式,其中有一个文档描述了线性游戏板上的碎片:
<piece length="5" position="4" />
其中属性length
和position
都是大于0的非负整数。现在,length
和position
之间存在明确的关系限制有意义的值集。也就是说,position
永远不会超过length
,例如XML片段
<piece length="5" position="6" />
显然是荒谬的。
我的问题是,是否有任何方法可以使用XML Schema强制执行此限制?如果不是W3C XML Schema语言,那么RELAX NG呢?假设在不受限制的情况下(即对于任何正整数),我所要求的是不可能的,对于受约束的,有限的可能性集合是什么?也就是说,假设我们说length
永远不会超过四个。鉴于上述限制,这仅为length
留下了4个可能的值。是否然后可以实现我想要的,即使它意味着手动?
答案 0 :(得分:2)
要表达此类约束,您需要XSD 1.1断言,例如
<xsl:assert test="@position lt @length"/>
XSD 1.1在Saxon,Xerces和Altova中实现。
另一种方法是使用Schematron。