XML的任何模式语言,允许指定没有循环引用的约束?

时间:2009-01-28 15:25:06

标签: xml xsd dtd relaxng

是否有任何XML模式语言允许指定一个约束,即元素之间不能有循环引用。

作为一个玩具示例:

<animal name="A" eats="B">
<animal name="B" eats="C">
<animal name="C" eats="D">

会验证,但

<animal name="A" eats="B">
<animal name="B" eats="C">
<animal name="C" eats="D">
<animal name="D" eats="A">

不会验证。

2 个答案:

答案 0 :(得分:2)

据我所知,没有任何架构语言可用于强制执行此类约束。如果它可以用模式语言,它可能是Schematron。架构不会很漂亮。

对我而言,这表示你不应该尝试使用模式语言。使用您熟悉的任何编程语言,并在易于阅读的代码中编写约束代码。它比任何基于模式的版本更短,更容易理解。

答案 1 :(得分:1)

您可以使用schematron,然后将相同的问题发布为xslt / xpath问题。