【问题标题】:Any schema language for XML that allows for specifying constraints like no cyclic references?任何允许指定约束(如无循环引用)的 XML 模式语言?
【发布时间】:2009-01-29 04:20:03
【问题描述】:

是否有任何 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">

不会验证。

【问题讨论】:

    标签: xml xsd dtd relaxng


    【解决方案1】:

    据我所知,没有设计用于强制执行这种约束的模式语言。如果在模式语言中是可能的,它可能是 Schematron。架构不会很漂亮。

    对我来说,这意味着您不应该尝试使用模式语言来执行此操作。使用您熟悉的任何编程语言,并以易于阅读的代码编写约束。它将比任何基于模式的版本更短且更易于理解。

    【讨论】:

    • :-) 是的,实际上我已经开始使用代码验证这个约束,当时我想到也许存在一些使用模式语言的“更好”/“正确”方法。
    【解决方案2】:

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

    【讨论】:

    • 无法使用 Schematron 验证此类循环引用。您可以编写一个 XSLT 样式表来实现验证,但就像@bart-schuller 所说,您可以使用任何您喜欢的语言。
    猜你喜欢
    • 2014-01-06
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 2015-02-27
    相关资源
    最近更新 更多