从DTD考虑以下定义:
<!ELEMENT application (calculator)?>
<!ATTLIST application
uri CDATA #REQUIRED
>
我的问题是,当且仅当没有uri
元素时才需要定义calculator
属性。
有没有办法要求这个?
答案 0 :(得分:2)
@Alejandro是对的。使用DTD是不可能的,也不可能使用XML Schema。您可以使用RelaxNG架构的共现约束来执行此操作,或者您可以将Schematron与任何这些架构语言结合使用。
我之前通过使用嵌入式schematron规则和模式解决了这样的问题(在XFront上使用XSD和在XML.com上使用RelaxNG对此进行了很好的讨论)。我最近在纯粹的RelaxNG上做了类似的事情,但是你有一个只能用这种形式表达的模式。