您的位置:首页 > 其它

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

2013-03-12 22:28 274 查看
上一讲我们讲解了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

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: