DTD 元素
在DTD中,元素是用元素声明来声明的。
声明元素
在DTD中,XML元素使用以下语法声明:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
Empty 元素
空元素用关键字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"元素。