DTD - Elements
在 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”元素。