DTD - 元素
在 DTD 中,元素使用 ELEMENT 声明进行声明。
声明元素
在 DTD 中,XML 元素使用以下语法进行声明
<!ELEMENT element-name category>
或
<!ELEMENT element-name (element-content)>
空元素
空元素使用类别关键字 EMPTY 进行声明
<!ELEMENT element-name EMPTY>
示例
<!ELEMENT br EMPTY>
XML 示例
<br />
具有解析字符数据的元素
仅具有解析字符数据的元素使用括号内的 #PCDATA 进行声明
<!ELEMENT element-name (#PCDATA)>
示例
<!ELEMENT from (#PCDATA)>
具有任何内容的元素
使用类别关键字 ANY 声明的元素可以包含任何可解析数据的组合
<!ELEMENT element-name ANY>
示例
<!ELEMENT note ANY>
具有子元素的元素(序列)
具有一个或多个子元素的元素使用括号内的子元素名称进行声明
<!ELEMENT element-name (child1)>
或
<!ELEMENT element-name (child1,child2,...)>
示例
<!ELEMENT note (to,from,heading,body)>
当子元素在用逗号分隔的序列中声明时,子元素必须在文档中以相同的顺序出现。在完整的声明中,子元素也必须被声明,并且子元素也可以有子元素。 "note" 元素的完整声明是
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
仅声明元素的一个出现
<!ELEMENT element-name (child-name)>
示例
<!ELEMENT note (message)>
上面的示例声明子元素 "message" 必须在 "note" 元素内出现一次,且仅出现一次。
声明元素的至少一次出现
<!ELEMENT element-name (child-name+)>
示例
<!ELEMENT note (message+)>
上面的示例中的 + 号声明子元素 "message" 必须在 "note" 元素内出现一次或多次。
声明元素的零次或多次出现
<!ELEMENT element-name (child-name*)>
示例
<!ELEMENT note (message*)>
上面的示例中的 * 号声明子元素 "message" 可以出现在 "note" 元素内零次或多次。
声明元素的零次或一次出现
<!ELEMENT element-name (child-name?)>
示例
<!ELEMENT note (message?)>
上面的示例中的 ? 号声明子元素 "message" 可以出现在 "note" 元素内零次或一次。
声明“或”内容
<!ELEMENT note (to,from,header,(message|body))>
上面的示例声明 "note" 元素必须包含 "to" 元素、"from" 元素、"header" 元素,以及 "message" 或 "body" 元素。
声明混合内容
<!ELEMENT note (#PCDATA|to|from|header|message)*>
上面的示例声明 "note" 元素可以包含零次或多次解析字符数据、"to"、"from"、"header" 或 "message" 元素。