假设我有以下XML:
<data>
<authors>
<author>
<name>
<first_name>Stephen</first_name>
<last_name>Baxter</last_name>
</name>
</author>
<author>
<name>
<first_name>Joe</first_name>
<last_name>Haldeman</last_name>
</name>
<author>
</authors>
<books>
<book>
<name>The Time Ships</name>
</book>
<book>
<name>The Forever War</name>
<book>
</books>
</data>
在我的DTD中,我如何解释“name”元素既用于作者又用于书籍,并且可以有不同的子元素 - 就像这样?
<!ELEMENT name (#PCDATA|first_name,last_name)>
答案 0 :(得分:5)
由于您的name
元素是混合内容(子元素或#PCDATA),因此您必须将元素声明更改为:
<!ELEMENT name (#PCDATA|first_name|last_name)*>
这意味着您将不得不使用除DTD之外的其他内容来强制name
包含#PCDATA
或一个first_name
后跟一个{{} 1}}。