1

我正在尝试生成一个 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 中的那些元素?

感谢您的帮助,并提前感谢您。

4

1 回答 1

2

你应该在<!ELEMENT td>定义中引用它们

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

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

请参阅w3.org 上的元素声明

于 2009-06-11T02:43:57.383 回答