在DTD中定义重复的子元素

时间:2009-06-11 02:24:10

标签: xml dtd

我正在尝试生成DTD,我想知道如何允许子元素包含已在DTD中声明的元素。你必须再申报一次吗?举个例子:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE document [
  <!ELEMENT document (author,title,body)>
  <!ELEMENT author (#PCDATA)>
  <!ELEMENT title (#PCDATA)>
  <!ELEMENT body (br*,hr*,img*,table*)>
  <!ELEMENT br EMPTY>
  <!ELEMENT hr EMPTY>
  <!ELEMENT img EMPTY>
  <!ELEMENT table (tr+)>
  <!ELEMENT tr (td+)>
  <!ELEMENT td (#PCDATA)>

<!--hr element--> <!ATTLIST hr width CDATA "0">

<!--img element--> <!ATTLIST img height CDATA "0"> <!ATTLIST img src CDATA #REQUIRED> <!ATTLIST img width CDATA "0">

<!--td element--> <!ATTLIST td width CDATA "0"> ]> <document> <author>My Author</author> <title>My Title Test</title> <body> <hr /> <table> <tr> <td>Would like elements here</td> </tr> </table> </body> </document>

在上面的XML中,我想例如允许br,hr,img和table标签位于td标签内。我是否必须在DTD中重新定义这些元素?

我感谢任何帮助,并提前感谢你。

1 个答案:

答案 0 :(得分:2)

您应该在<!ELEMENT td>定义

中引用它们

编辑: 如果要在td元素中维护已解析的字符数据以及新标记,可以定义混合内容元素。 例如:

<!ELEMENT td (#PCDATA | br? | hr? | img?)>

请参阅w3.org上的element declarations