我需要你的建议。如何在替代选择中描述相同的元素。例如:
<!DOCTYPE offers [
<!ELEMENT offers (offer+)>
<!ELEMENT offer ((name, cost) | (id?, name, tag, desc?) | (prefix, title, desc?))>
<!ELEMENT name (#PCDATA)>
<!ELEMENT cost (#PCDATA)>
<!ELEMENT tag (#PCDATA)>
<!ELEMENT desc (#PCDATA)>
<!ELEMENT prefix (#PCDATA)>
<!ELEMENT title (#PCDATA)>
] >
<offers>
<offer>
<name>Name1</name>
<cost>123</cost>
</offer>
<offer>
<id>123</id>
<name>Name2</name>
<tag>sale</tag>
<desc>Some Description</desc>
</offer>
<offer>
<prefix>Book</prefix>
<title>Little Pony</title>
</offer>
</offers>
标记名称在两个变体中重复,如何在dtd中描述元素期间解决此问题。 请求帮助
答案 0 :(得分:0)
我认为这个内容模型最接近您的需求:
<!ELEMENT offer ((id?, name, (cost | (tag, desc?))) | (prefix, title, desc?)) >
但是,通过这种方式,您还可以在内容模型之前插入<id>
<name>
和<cost>
,这似乎不是您的情况原始的DTD - 但我不知道怎样才能获得你想要的东西。
PS:您还需要在DTD id
<!ELEMENT id (#PCDATA)>
元素
PS 2:您的原始文档使用Xerces正确解析。