如何在具有不同父元素的 DTD 中定义同名元素?
假设我有以下 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)>
Let's say I have the following 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>
In my DTD, how would I account for the fact that the "name" element is used for both authors and books and can have different child elements--like this?
<!ELEMENT name (#PCDATA|first_name,last_name)>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于您的
name
元素是混合内容(子元素或 #PCDATA),因此您必须将元素声明更改为:这意味着您将必须使用除DTD 强制
name
包含#PCDATA
或一个first_name
后跟一个last_name
。Since your
name
element is mixed content (both child elements or #PCDATA), you're going to have to change your element declaration to this:This means that you are going to have to use something other than DTD to enforce that
name
contains#PCDATA
or onefirst_name
followed by onelast_name
.