日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

文档类型定义DTD

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文档类型定义DTD 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
XML系列:文檔類型定義DTD (轉)
一,什么是DTD?
1,XMl是一種元標記語言,是描敘語言的語言,定義標記的語法結構,從而生成新標記。而DTD則是為新標記建立文檔并進行規范說明。
也就是說XML定義標記的語法結構是通過DTD來定義,并指定文檔結構的規范,而XML文檔來使用標記。
2,自描述數據的規范。

二,DTD的作用
1,DTD定義了文檔中的元素(標記和屬性)和實體,以及相互關系。數據和結構分離。
2,通過DTD驗證XML文檔的有效性。DTD為解析器提供了解析XML文檔的依據。所以每個XML文檔必須指定對于哪個DTD有效。

三,DTD的結構
1,元素的聲明:使用元素聲明來聲明XML文檔中的元素

⑴,帶有數據的元素:
<! ELEMENT 元素名 (數據類型)>
數據類型:
#CDATA:指元素包含不通過解析器解析的字符數據。特殊字符和保留字不需要轉義。
#PCDATA:指元素包括解析器可解析字符數據。特殊字符和保留字需要轉義才可以通過解析器。
ANY:元素可以包含任何聲明類型的子元素和字符數據。

⑵,帶有子元素的元素:
<! ELEMENT 元素名 (子元素1名,子元素2名)>
多個子元素用逗號隔開。
在文檔中的順序和定義中的順序一致。
子元素可以有自己的子元素。

①相同元素只出現一次:
<! ELEMENT 元素名 (子元素)>
②相同元素至少出現一次:+
<! ELEMENT 元素名 (子元素+)>
③相同元素出現零次或多次:*
<! ELEMENT 元素名 (子元素*)>
④相同元素出現零次或一次:?
<! ELEMENT 元素名 (子元素?)>

⑶ ,空元素:
<! ELEMENT 元素名 (EMPTY)>
空元素可以有屬性

⑷,混合聲明
組可以是序列或選擇子元素和/或子組:
①序列
<! ELEMENT A (B)> : 元素A由單個子元素B組成.
<! ELEMENT A (B, C)> :元素A由子元素B和C組成.
<! ELEMENT A (B, (C | D), E> :元素A由子元素B ,E和選擇子組(C或D中之一)組成.
②選擇 子元素和/或子組
<! ELEMENT A (B | C)>:元素A由子元素選擇子組(B或C)組成.
<! ELEMENT A (B | C | (D, E))>:元素A由包括序列子組(D和E)的選擇(B或C或D,E之一)組成.

2,屬性的聲明
⑴空屬性
<! ATTTLIST 元素名 EMPTY>
⑵非空屬性
<! ATTLIST 元素名 屬性名 屬性類型 屬性值>
屬性值:
①,Default屬性值:指定一個默認值
<! ATTLIST 元素名 屬性名 屬性類型 "默認值" >
DTD示例:
<! ATTLIST 售價 貨幣單位 CDATA "人民幣">
XML示例:
<售價 貨幣單位 = "人民幣">10.90</售價>
②,Implied屬性值:可以不提供該屬性,該屬性也沒有默認值。
<! ATTLIST 元素名 屬性名 屬性類型 #IMPLIED >
DTD示例:
<! ATTLIST 售價 貨幣單位 CDATA #IMPLIED>
XML示例:
<售價>10.90</售價>

③,Required屬性值:必須提供該屬性,但可以沒有默認值。
<! ATTLIST 元素名 屬性名 屬性類型 #REQUIRED >
DTD示例:
<! ATTLIST 售價 貨幣單位 CDATA #REQUIRED>
XML示例:
<售價 貨幣單位 = "美元">10.90</售價>

④,Fixed屬性值:使屬性具有固定值,不可以更改。
<! ATTLIST 元素名 屬性名 屬性類型 #FIXED "固定值">
DTD示例:
<! ATTLIST 售價 貨幣單位 CDATA #FIXED "人民幣">
XML示例:
<售價 貨幣單位 = "人民幣">10.90</售價>

屬性類型:
①,Enumerated屬性類型:使默認值成為一組固定值中之一。
<! ATTLIST 元素名 屬性名 (固定值A|固定值B|...) 默認固定值之一>
DTD示例:
<! ATTLIST 售價 貨幣單位 ("人民幣"|"美元"|"歐元") "人民幣">
XML示例:
<售價 貨幣單位 = "歐元">10.90</售價>

②,ID和IDREF屬性類型
1,ID:用于搜索某個元素的特定實例,每個元素都可以具有ID類型的屬性。
<! ATTLIST 元素名 屬性名 ID 屬性值>
DTD示例:
<! ATTLIST 售價 支付方式 ID #REQUIRED>
XML示例:
<售價 ID = "BOOK1">10.90</售價>
<售價 ID = "BOOK2">10.90</售價>
<售價 ID = "BOOK3">10.90</售價>
2,IDREF:指向一個元素,引用其他元素中的一個元素。
<! ATTLIST 元素名 屬性名 IDREF 屬性值>
DTD示例:
<! ATTLIST 售價 貨幣單位 ID #REQUIRED>
<! ATTLIST 售價 貨幣單位 IDREF #IMPLIED>
<! ATTLIST 售價 貨幣單位 CDATA #IMPLIED>
XML示例:
<售價 ID = "BOOK1" 貨幣單位 = "人民幣">10.90</售價>
<售價 ID = "BOOK2" IDREF = "BOOK1"></售價>
③,IDREFS屬性類型
指向多個元素ID,用空格分開。用于指向XML文檔中的相關元素列表。
<! ATTLIST 元素名 屬性名 IDREFS 屬性值>

四,使用DTD

1,內部DTD
XML聲明后在XDOCTYPE聲明中編寫內部DTD。
<! DOCTYPE 根元素名 [
元素聲明
。。。
]>
2,外部DTD
編寫DTD文件,擴展名為DTD,在XML文檔DOCTYPE聲明中添加DTD引用,告訴解析器外部DTD信息,
<! DOCTYPE 根元素名 SYSTEM "DTD文件名.dtd">

3,DTD中的內部實體和外部實體和
參見:XML系列:XML文檔結構 中的實體;

4,DTD中的參數實體
先用內部DTD聲明,把參數實體設置為元素名 ,在XML文件中引用 外部DTD驗證。

DTD文件
...
<! ENTITY %實體名 "字符數據">
<! ELEMENT 元素名 ( %實體名)>
<! ELEMENT %實體名 (子元素)>
...

XML文件
...
<! DOCTYPE 根元素名 SYSTEM “DTD文件名.dtd”[
<! ENTITY %實體名 "替換實體名的元素名">
]>
...

例子:不同元素的XML共同關聯一個DTD文件

DTD文件
...
<! ENTITY %element "e">
<! ELEMENT root ( %element)>
<! ELEMENT %element (name,sex,。。。)>
...

XML文件1
...
<! DOCTYPE root SYSTEM “DTD文件名.dtd”[
<! ENTITY %element "student">
]>
<root>
<student>
<name>張三學生</name>
...
<student>
</root>

XML文件2
...
<! DOCTYPE root SYSTEM “DTD文件名.dtd”[
<! ENTITY %element "teatcher">
]>
<root>
<teatcher>
<name>王五老師</name>
...
<teatcher>
</root>

轉載于:https://www.cnblogs.com/dkblog/archive/2009/05/07/1980751.html

總結

以上是生活随笔為你收集整理的文档类型定义DTD的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。