2

我正在创建一个 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>
4

2 回答 2

2

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

<!ELEMENT group (question*,questionWithAnswer,question*)>
<!ELEMENT question (#PCDATA)>
<!ELEMENT questionWithAnswer (#PCDATA)>

<!ATTLIST questionWithAnswer type (true|false) #REQUIRED>
于 2013-07-29T21:57:10.350 回答
1

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

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

于 2013-08-13T17:01:17.080 回答