DTD指南(3)-DTD-Elements(元素)[原创]

本文主要介绍了在DTD中XML元素的声明方法,包括普通元素、空元素、仅有字符数据的元素、含有任意内容的元素等多种类型元素的声明语法,并给出了相应示例,还涉及子元素不同出现情况及“或”“混合内容”等声明方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值