DTD学习笔记(二)--DTD元素构建

首先,得理解这样一个关系,DTD是用来定义XML合法构建模块。我理解的意思就是给他设定一个规则,如果XML标签不符合这个规则,他就是不合法的。也就是说他是用来给XML设定规则用的。那么要学习DTD元素构建,首先就要了解XML的元素。

一.XML文档有哪些模块 元素呢?
1.元素(element)
这个是XML以及HTML文档的主要构建模块 ,例如HTML
元素的例子就是"body" “table”这样主要用来展示的标签。
XML元素的例子是“note”"message"这样用 来放数据的标签,html标签用来解决在哪里展示,怎么展示的问题。xml用来解决展示什么内容(就是数据)的问题。
2.属性
这个是跟在标签后面的,可以提供有关元素的额外信息。例如:

<img src="computer.gif" />

这里面img表示一个图像标签,src就是属性,代表这个图像资源的名字
3.实体
当遇到一些特殊符号的时候解析器可能会出现一些错误。
例如< > &这样的符号,需要使用实体引用来表示这些符号

实体引用	字符
&lt;	 <
&gt;	 >
&amp;  	&
&quot; 	"
&apos; 	'

4.PCDATA
表示被解析的字符数据(parsed character data)开始标签和结束标签之间的文本会被解析器检查实体和标记。像< > &等这些字符不应该出现在这里,应该使用上面3中的实体引用来表示。
5.CDATA
是字符数据,和4不同的是这些数据不会被解析器解析。

好了,有了以上的知识,现在就可以来看DTD中的元素了。先来看语法。
1.怎么声明一个元素

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

element-name:就是元素名字,也就是所谓的标签。例如

<!ELEMENT bean (#PCDATA)>

这里我声明了一个只有PCDATA元素的标签。xml可以写

<bean>Hello World</bean>

后面category就是元素类型了。

之后的就简单了,
总体格式就是

<!ELEMENT 元素名称 元素类型>。

有以下几类:
1.空元素
就是元素类型为EMPTY.

<!ELEMENT element-name EMPTY>

2.只有 PCDATA 的元素
元素类型为(#PCDATA) 注意这里有圆括号

<!ELEMENT element-name (#PCDATA)>

实例:

<!ELEMENT from (#PCDATA)>

3.带有任何内容的元素
元素类型为ANY

<!ELEMENT element-name ANY>

实例:

<!ELEMENT note ANY>

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

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

实例:

<!ELEMENT note (to,from,heading,body)>

这里还有一种完整的写法:

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

我理解是先声明一个note,他有四个子元素to from heading body。然后在分别声明他四个子element的声明。

为了省事期间,下面只写说明和语法说明
5.声明只出现一次的元素

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

实例:

<!ELEMENT note (message)>

上面的例子声明了:message 子元素必须出现一次,并且必须只在 “note” 元素中出现一次。
6.声明最少出现一次的元素

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

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

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

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

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

9.声明"非…/即…"类型的内容

<!ELEMENT note (to,from,header,(message|body))>

上面的例子声明了:“note” 元素必须包含 “to” 元素、“from” 元素、“header” 元素,以及非 “message” 元素即 “body” 元素。
10.声明混合型的内容

<!ELEMENT note (#PCDATA|to|from|header|message)*>

上面的例子声明了:“note” 元素可包含出现零次或多次的 PCDATA、“to”、“from”、“header” 或者 “message”。

总结:
总体来看还是很简单的,无非就是定义
ELEMENT是什么样的属性,element里面还包含了哪些element,以及他的属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值