XML第四讲:DTD元素、属性深度详解

上一讲我们讲解了XML中DTD的一些基本内容,现在我们继续上一讲的内容。

1. 元素的定义_1

  在其中ANY属性用的非常少,因为如果写上ANY,DTD就没有起到约束的作用了。

2. 元素的定义_2

3. 元素的定义_3

4. 元素的定义_4

第二个写法是错误的,因为PCDATA不允许嵌套子元素。

5. 元素的定义_5

+ 与 * 符号与正则表达式有一些关系,这个我们我们要先明白。

6.下面我们具体讲一下XML中的修饰符号的定义【重要】

<!ELEMENT poem ((古龙|金庸|梁羽生), (王朔|余杰), 毛毛)>

表示:poem 里面的三组信息必须是按照以上顺序进行的。第一个元素必须是 古龙|金庸|梁羽生 中的一个,它们之间是互斥的,出来一个另外一个就不能再出现了,同样第二元素可以是 王朔|余杰中的一个,第三元素必须是毛毛

写一个合法的例子如下:

<poem>
    <古龙></古龙>
    <余杰></余杰>
    <毛毛></毛毛>
</poem>

7. 属性的定义

  属性有一个特点,元素可以单独出现,而属性不能单独出现,属性必须依附于一个元素,表示谁的属性。所以定义属性的时候属性的名字,属性的类型,属性有什么特点(是必须要有的,还是可有可无的),这个属性属于哪一元素,这些都要告诉DTD,DTD才能去校验XML文档。

(1) 属性特点:

#REQUIRED 属性必须要出现
#IMPLIED 属性可以出现,也可以不出现,可有可无的
#FIXED value 属性是否有确定的值,
Default value 属性是否有默认的值

(2) 属性定义的例子

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem [
	<!ELEMENT poem (author+, title*, content?)>
	<!ELEMENT author (#PCDATA)>
	<!ELEMENT title (#PCDATA)>
	<!ELEMENT content (#PCDATA)>
	<!ATTLIST title name CDATA #REQUIRED>
]>
<poem>
	<author>王维</author>
	<author>李白</author>
	<title name = "zhangsan">鹿柴</title>
	<content>空山不见人,但闻人语声。  
             返景入深林,复照青苔上。</content>
</poem>

(3)属性类型---CDATA
   
[注意]

CDATA 与 CDATA节的区别CDATA是用来定义属性的,表示是字符串类型,CDATA节表示里面的数据不被XML所解析
CDATA 与 #PCDATA 的区别:#PCDATA 是用来定义元素的。

(4) 属性类型---NMTOKEN/NMTOKENS

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem [
	<!ELEMENT poem (author+, title*, content?)>
	<!ELEMENT author (#PCDATA)>
	<!ELEMENT title (#PCDATA)>
	<!ELEMENT content (#PCDATA)>
	<!ATTLIST title name CDATA #REQUIRED>
	<!ATTLIST content name NMTOKEN #REQUIRED>
]>
<poem>
	<author>王维</author>
	<author>李白</author>
	<title name = "zhangsan">鹿柴</title>
	<content name = "lisi">空山不见人,但闻人语声。  
             返景入深林,复照青苔上。</content>
</poem>


(5) 属性类型 ---ID  (比较常用的)
    这个表示学号,身份证号是比较常用的

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem [
	<!ELEMENT poem (author+, title*, content?)>
	<!ELEMENT author (#PCDATA)>
	<!ELEMENT title (#PCDATA)>
	<!ELEMENT content (#PCDATA)>
	<!ATTLIST author name ID #REQUIRED>
	<!ATTLIST title name CDATA #REQUIRED>
	<!ATTLIST content name NMTOKEN #REQUIRED>
]>
<poem>
	<author name="wangwu">王维</author>
	<author name="xiaoliu">李白</author>
	<title name = "zhangsan">鹿柴</title>
	<content name = "lisi">空山不见人,但闻人语声。  
             返景入深林,复照青苔上。</content>
</poem>

属性类型----IDREF/IDREFS

属性类型 -- Enumerated(类似枚举)


8. 属性的特点  --- #REQUIRED  

 表示:属性的值是必须要有的


属性的特点  ----#IMPLIED

表示:这个属性的值是可有可无的


属性的特点 ---#FIXED value  (用的比较少)



属性的特点 --- Default value

表示:如果不提供属性的值,则为默认的值,如果提供了属性的值,则使用提供的这个值,同时覆盖了这个默认值。这个跟以前学习的注解是类似的。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值