我正在尝试生成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中重新定义这些元素?
我感谢任何帮助,并提前感谢你。
答案 0 :(得分:2)
您应该在<!ELEMENT td>
定义
编辑: 如果要在td元素中维护已解析的字符数据以及新标记,可以定义混合内容元素。 例如:
<!ELEMENT td (#PCDATA | br? | hr? | img?)>
请参阅w3.org上的element declarations