日期:2013-09-18  浏览次数:21355 次

在一个DTD中,XML元素通过DTD元素声明来进行声明。

声明一个元素

在DTD中,XML元素通过元素声明来进行声明。元素声明使用下面的语法:

<!ELEMENT 元素名称 类别>

或者

<!ELEMENT 元素名称 (元素内容)>

空元素

空元素通过类别关键词EMPTY进行声明:

<!ELEMENT 元素名称 EMPTY>

例子:

<!ELEMENT br EMPTY>

XML例子:

<br />

只要PCDATA的元素

只要PCDATA的元素通过圆括号中的#PCDATA进行声明:

<!ELEMENT 元素名称 (#PCDATA)>

例子:

<!ELEMENT from (#PCDATA)>

带有内容的元素

通过类别关键词ANY声明的元素,可包含任何可解析数据的组合:

<!ELEMENT 元素名称 ANY>

例子:

<!ELEMENT note ANY>

带有子元素(序列)的元素

带有一个或多个子元素的元素通过圆括号中的子元素名进行定义:

<!ELEMENT 元素名称 (子元素名称)>

或者

<!ELEMENT 元素名称 (子元素名称,子元素名称,.....)>

例子:

<!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 note (message)>

上面的例子声明了:message子元素必须出现一次,并且必须在"note"元素中出现一次。

声明最少出现一次的元素

<!ELEMENT 元素名称 (子元素名称+)>

例子:

<!ELEMENT note (message+)>

上面的例子中的加号声明了:message子元素必须在"note"元素内出现至少一次。

声明出现零次或多次的元素

<!ELEMENT 元素名称 (子元素名称*)>

例子:

<!ELEMENT note (message*)>

上面的例子中的星号声明了:子元素message可在"note"元素内出现零次或多次。

声明出现零次或一次的元素

<!ELEMENT 元素名称 (子元素名称?)>

例子:

<!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"元素可包含出现零次或多次的PCDATA、"to"、"from"、"header"或者"message"。