【问题标题】:When creating an XML doctype definition, how do I indicate that in a group of tags, one tag must have a specific attribute?创建 XML 文档类型定义时,如何指示在一组标签中,一个标签必须具有特定属性?
【发布时间】:2013-08-14 01:01:17
【问题描述】:

我正在创建一个 XML DTD,我有一组标签,并且只有一个标签必须包含一个属性。如何在 DTD 中执行此操作?考虑一个多项选择题/答案组。见下文:

<group>
    <question>This is a question</question>
    <question>This is another question</question>
    <question answer="true">This is another question, but this is the correct choice</question>
</group>

【问题讨论】:

    标签: xml doctype dtd


    【解决方案1】:

    一种可能性是声明一种新的元素并且只允许它一次:

    <!ELEMENT group (question*,questionWithAnswer,question*)>
    <!ELEMENT question (#PCDATA)>
    <!ELEMENT questionWithAnswer (#PCDATA)>
    
    <!ATTLIST questionWithAnswer type (true|false) #REQUIRED>
    

    【讨论】:

      【解决方案2】:

      按照公式,约束不能用 DTD 表示。

      在 DTD 中,任何元素的验证本质上是(模 ID/IDREF)上下文无关的,因此每个 question 元素的验证与其他元素隔离;没有办法使验证对外部信息敏感,例如“前面的兄弟有一个类型属性”。解决您的设计问题的最佳方法是 acdcjunior 在他对问题的回答中提出的:使用元素类型名称来捕获与验证相关的所有信息。

      【讨论】:

        猜你喜欢
        • 2016-02-24
        • 1970-01-01
        • 2021-04-07
        • 2018-01-19
        • 2015-05-28
        • 1970-01-01
        • 1970-01-01
        • 2021-08-28
        • 1970-01-01
        相关资源
        最近更新 更多