XML 模式中可接受值的范围可以相互依赖吗?
Can the range of acceptable values in an XML Schema interdepend?
假设我正在为 XML 文档编写架构,其中有一个描述线性游戏板上棋子的文档:
<piece length="5" position="4" />
其中属性length
和position
都是大于0的非负整数。现在,length
和position
之间有一个明确的关系,进一步限制一组有意义的值。也就是说,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。
假设我正在为 XML 文档编写架构,其中有一个描述线性游戏板上棋子的文档:
<piece length="5" position="4" />
其中属性length
和position
都是大于0的非负整数。现在,length
和position
之间有一个明确的关系,进一步限制一组有意义的值。也就是说,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。