当且仅当DTD中的元素不存在子元素时,才需要定义属性

时间:2010-11-02 20:26:03

标签: xml dtd

从DTD考虑以下定义:

<!ELEMENT application (calculator)?>
<!ATTLIST application
        uri CDATA #REQUIRED
>

我的问题是,当且仅当没有uri元素时才需要定义calculator属性。

有没有办法要求这个?

1 个答案:

答案 0 :(得分:2)

@Alejandro是对的。使用DTD是不可能的,也不可能使用XML Schema。您可以使用RelaxNG架构的共现约束来执行此操作,或者您可以将Schematron与任何这些架构语言结合使用。

我之前通过使用嵌入式schematron规则和模式解决了这样的问题(在XFront上使用XSD和在XML.com上使用RelaxNG对此进行了很好的讨论)。我最近在纯粹的RelaxNG上做了类似的事情,但是你有一个只能用这种形式表达的模式。