Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
哪个XML DTD是有效的_Xml_Database_Dtd - Fatal编程技术网

哪个XML DTD是有效的

哪个XML DTD是有效的,xml,database,dtd,Xml,Database,Dtd,我在工作表上有这个问题,但我现在已经错了5次了,有人能帮忙吗 下面是一个XML DTD: <!DOCTYPE meal [ <!ELEMENT meal (person*,food*,eats*)> <!ELEMENT person EMPTY> <!ELEMENT food EMPTY> <!ELEMENT eats EMPTY> <!ATTLIST person name ID #REQUIR

我在工作表上有这个问题,但我现在已经错了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>





  • 只有第二个
  • 只有第二个和第三个
  • 只有第一个和第三个
  • 只有第一个
感谢您的帮助

仅此一秒

第一个是无效的,因为
膳食
必须包含零个或多个
,然后是零个或多个
食物
,然后是零个或多个
食物

第三个无效,因为没有值为
food
的ID类型属性。(
dish
是一种属性类型
IDREF

只有第二种

第一个是无效的,因为
膳食
必须包含零个或多个
,然后是零个或多个
食物
,然后是零个或多个
食物


第三个无效,因为没有值为
food
的ID类型属性。(
dish
是一种属性类型
IDREF

第一个示例具有两个id属性值相同的元素。
被重复,因此这是无效的。(如另一个答案所述,顺序很重要)

第三个示例具有一个idref属性值,该属性不是任何元素的id属性


第二个,虽然在我们看来有点奇怪,因为人类用
解释它是有效的,因为这些属性在其他地方都是idref属性。dtd没有指定idref必须是特定类型的元素所具有的id属性,即使这是我们理解它的唯一方式。

第一个示例中有两个id属性值相同的元素。
被重复,因此这是无效的。(如另一个答案所述,顺序很重要)

第三个示例具有一个idref属性值,该属性不是任何元素的id属性


第二个,虽然在我们看来有点奇怪,因为人类用
解释它是有效的,因为这些属性在其他地方都是idref属性。dtd没有指定idref必须是特定类型的元素所具有的id属性,即使这是唯一对我们有意义的方法。

在第一个实例中很好地抓住了重复id。我在手机上看到了这一点,一旦发现了明显的问题,我就不再寻找问题+1在第一个实例中,对重复ID的捕获良好。我在手机上看到了这一点,一旦发现了明显的问题,我就不再寻找问题+1.
<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>