XML 模式中可接受值的范围可以相互依赖吗?

Can the range of acceptable values in an XML Schema interdepend?

假设我正在为 XML 文档编写架构,其中有一个描述线性游戏板上棋子的文档:

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

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

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

显然是无稽之谈。

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

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

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

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

替代方法是使用 Schematron。