目录

DTD-- 元素


在 DTD 中,元素是用 ELEMENT 声明来声明的。


声明元素

在 DTD 中,XML 元素使用以下语法声明:

<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>

空元素

空元素用类别关键字 EMPTY 声明:

<!ELEMENT element-name EMPTY>

Example:

<!ELEMENT br EMPTY>

XML example:

<br />

具有已解析字符数据的元素

仅包含已解析字符数据的元素在括号内使用 #PCDATA 进行声明:

<!ELEMENT element-name (#PCDATA)>

Example:

<!ELEMENT from (#PCDATA)>


具有任何内容的元素

使用类别关键字 ANY 声明的元素可以包含可解析数据的任意组合:

<!ELEMENT element-name ANY>

Example:

<!ELEMENT note ANY>

带有儿童的元素(序列)

具有一个或多个子元素的元素使用括号内的子元素名称进行声明:

<!ELEMENT element-name (child1)>
or
<!ELEMENT element-name (child1,child2,...)>

Example:

<!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)>

Example:

<!ELEMENT note (message)>

上面的示例声明子元素 "message" 必须出现一次,并且只能在 "note" 元素内出现一次。


声明元素至少出现一次

<!ELEMENT element-name (child-name+)>

Example:

<!ELEMENT note (message+)>

上例中的 + 号声明子元素 "message" 必须在 "note" 元素内出现一次或多次。


声明元素出现零次或多次

<!ELEMENT element-name (child-name*)>

Example:

<!ELEMENT note (message*)>

上例中的 * 符号声明子元素 "message" 可以在 "note" 元素内出现零次或多次。


声明元素出现零次或一次

<!ELEMENT element-name (child-name?)>

Example:

<!ELEMENT note (message?)>

这 ?上例中的sign 声明子元素"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" 元素。