Elements(元素)
在一个DTD中,XML元素是通过DTD的元素声明来声明的。
1. 声明一个元素
使用以下语法来使用DTD的元素声明来声明一个XML元素:
<!ELEMENT element-name category>
或者是
<!ELEMENT element-name (element-content)>
2. 空元素
空元素是通过关键字EMPTY来声明的。
语法格式为:
<!ELEMENT element-name EMPTY>
例:
<!ELEMENT br EMPTY>
在XML文档中使用为
<br />
3. 仅有字符数据的元素
使用(#PCDATA)来声明仅有字符数据的元素
语法格式为:
<!ELEMENT element-name (#PCDATA)>
例:
<!ELEMENT from (#PCDATA)>
4. 含有任意内容的元素
含有任意内容的元素是通过关键字ANY来声明的。
所谓任意内容是指能够包含任何结合的可被解析的数据。
语法格式为:
<!ELEMENT element-name ANY>
例:
<!ELEMENT note ANY>
5. 含有子元素的元素
如果包含一个或多个子元素的元素,它将通过含有括号的子元素名称来进行定义
语法格式为:
<!ELEMENT element-name
(child-element-name)>
或者
<!ELEMENT element-name
(child-element-name,child-element-name,.....)>
当子元素按照一定恰当分解的顺序进行声明时,那他们在文档中也必须以相同的顺序出现
在全声明中,子元素必须被全部声明,当然他们也可以有自己的子元素。
例:
以下是含有子元素的note元素的全声明
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
6. 相同的元素只出现一次的声明
语法格式为:
<!ELEMENT element-name (child-name)>
例:
<!ELEMENT note (message)>
上述例子是指子元素message必须出现一次,并且在被包含的note元素里只出现一次。
7. 相同的元素至少出现一次的声明
语法格式为:
<!ELEMENT element-name (child-name+)>
例:
<!ELEMENT note (message+)>
例中的+是指子元素message必须在被包含的note元素里出现一次或者多次。
8. 相同的元素不出现或者多次出现的声明
语法格式为:
<!ELEMENT element-name (child-name*)>
例:
<!ELEMENT note (message*)>
例中的*是指子元素message能够在被包含的note元素里不出现或者出现多次。
9. 相同的元素不出现或者出现一次的声明
语法格式为:
<!ELEMENT element-name (child-name?)>
例:
<!ELEMENT note (message?)>
例中的?是指子元素message能够在被包含的note元素里不出现或者出现一次。
10. "或"的声明
例:
<!ELEMENT note (to,from,header,(message|body))>
上例是指note元素必须包含一个to元素,一个from元素,一个header元素,
以及一个message元素或body元素
11. 混合内容的声明
例:
<!ELEMENT note (#PCDATA|to|from|header|message)*>