我在工作表中有这个问题,但我现在已经错了5次,有人可以帮忙吗?
这是一个XML DTD:
<!DOCTYPE meal [
<!ELEMENT meal (person*,food*,eats*)>
<!ELEMENT person EMPTY>
<!ELEMENT food EMPTY>
<!ELEMENT eats EMPTY>
<!ATTLIST person name ID #REQUIRED>
<!ATTLIST food name ID #REQUIRED>
<!ATTLIST eats diner IDREF #REQUIRED dish IDREF #REQUIRED>
]>
以下哪些文件与DTD相符?
<meal>
<person name="Alice"/>
<food name="salad"/>
<eats diner="Alice" dish="salad"/>
<person name="Bob"/>
<food name="salad"/>
<eats diner="Bob" dish="salad"/>
<person name="Carol"/>
<food name="sandwich"/>
<eats diner="Carol" dish="sandwich"/>
</meal>
<meal>
<person name="Alice"/>
<person name="Bob"/>
<person name="Carol"/>
<person name="Dave"/>
<food name="salad"/>
<food name="turkey"/>
<food name="sandwich"/>
<eats diner="Alice" dish="turkey"/>
<eats diner="Bob" dish="salad"/>
<eats diner="turkey" dish="Dave"/>
</meal>
<meal>
<person name="Alice"/>
<person name="Bob"/>
<food name="salad"/>
<eats diner="Alice" dish="food"/>
<eats diner="Bob" dish="food"/>
</meal>
感谢您的帮助
答案 0 :(得分:3)
只有第二个。
第一个无效,因为meal
必须包含零个或多个person
,后跟零个或多个food
后跟零个或多个eats
。
第三个无效,因为没有值food
的ID类型属性。 (dish
是属性类型IDREF
)
答案 1 :(得分:2)
第一个示例有两个元素,id属性的值相同。
重复<food name="salad"/>
,因此无效。 (正如其他答案所述,顺序很重要)
第三个示例的idref属性值不是任何元素<eats diner="Bob" dish="food"/>
的id属性 - &#34; food&#34;不是任何元素的id。
第二个,尽管我们看起来有些奇怪,因为用<eats diner="turkey" dish="Dave"/>
解释它的人是有效的,因为这些属性都是其他地方的idref属性。 dtd没有指定idref必须是特定类型元素具有的id属性,即使这是对我们有意义的唯一方式。