在DTD中,元素的声明与元素声明。
声明元素
在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)>
与任何内容元素
与类别关键字声明的元素的任何,可以包含可解析数据的任意组合:
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
与子元素(sequences)
有一个或多个子女的元素声明的括号内儿童元素的名称:
<!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?)>
的? 上面的例子签署声明的子元素"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"的元素。