【问题标题】:Requiring an attribute be defined if and only if a child element is not present for an element in a DTD当且仅当 DTD 中的元素不存在子元素时,才要求定义属性
【发布时间】:2015-02-11 07:13:25
【问题描述】:

考虑 DTD 中的以下定义:

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

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

有没有办法要求这个?

【问题讨论】:

  • 我认为即使使用 XSchema 也是不可能的,因为存在歧义。您显示声明可选并运行第二步验证(即 XSLT)
  • @Alejandro:+1。这种东西远远超出了 DTD 的能力。

标签: xml dtd


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-07-19
    • 1970-01-01
    • 2012-10-21
    • 2011-04-20
    • 1970-01-01
    • 2021-05-06
    • 2022-11-28
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多