一、什麼是DTD
文檔類型定義
Document Type Definition
DTD用來描述xml文檔結構,一個DTD文檔包含:
元素的定義規則
元素之間的關系規則
屬性的定義規則
二、為什麼要有DTD
1.有了DTD,每個xml檔案可以攜帶一個自身格式的描述
2.有了DTD,不同組織的人可以使用一個通用DTD用來交換資料
3.應用程式可以使用一個标準DTD校驗外部接收的xml資料是否有效
三、如何編寫一個DTD文檔
1.文法
DTD文檔的聲明及引用
内部DTD文檔(Students.xml)
<!DOCTYPE 根元素 [定義内容]>
外部DTD文檔
<!DOCTYPE 根元素 SYSTEM "DTD檔案路徑">
内外部DTD文檔結合
<!DOCTYPE 根元素 SYTEM "DTD檔案路徑" [定義内容]>
四、元素的定義
文法
<!ELEMENT NAME CONTENT>
ELEMENT:關鍵字
NAME:元素名稱
CONTENT:元素類型
EMPTY:該元素不能包含子元素和文本,但可以有屬性
#PCDATA:可以包含任何字元資料,但是不能在其中包含任何子元素
純元素類型:隻包含子元素,并且這些子元素外沒有文本
ANY:該元素可以包含任何在DTD中定義的元素内容
符号:
<!DOCTYPE CCTV-6[
<!ELEMENT CCTV-6 (電影+)>
<!ELEMENT 電影 (名稱,主演+,類型?,片長)>
<!ELEMENT 名稱 (#PCDATA)>
<!ELEMENT 主演 (#PCDATA)>
<!ELEMENT 類型 (#PCDATA)>
<!ELEMENT 片長 (#PCDATA)>
]>
定義屬性的文法結構
<!ATTLIST 元素名稱
屬性名稱 屬性類型 屬性特點
...
>
屬性類型:CDATA
<!ELEMENT 人
姓名 CDATA #REQUIRED
屬性類型ID取值必須是唯一的。
<!ATTLIST 公司職員
編号 ID #REQUIRED
屬性類型IDREF/IDREFS
屬性類型Enumerated
<!ATTLIST person 性别(男|女) #REQUIRED>
屬性特點
#REQUIRED必須出現
<!ATTLIST 元素名 屬性名 屬性類型 #REQUIRED>
#IMPLIED可以省略
<!ATTLIST 元素名 屬性名 屬性類型 #IMPLIED>
#FIXED必須是固定值
<!ATTLIST 元素名 屬性名 屬性類型 #FIXED "VALUE">
#Default預設值
<!ATTLIST 元素名 屬性名 屬性類型 "value">
<!ELEMENT 家庭 (人+,家電*)>
<!ELEMENT 人 EMPTY>
<!ELEMENT 家電 EMPTY>
<!ATTLIST 人
名字 CDATA #REQUIRED
年齡 CDATA #REQUIRED
性别 (男|女) "女"
住址 CDATA #FIXED "北京"
愛好 CDATA #IMPLIED
>
<!ATTLIST 家電
名稱 CDATA #REQUIRED
數量 CDATA #REQUIRED
實體
<!ENTITY 實體名 "實體值">
本文轉自 素顔豬 51CTO部落格,原文連結:http://blog.51cto.com/suyanzhu/1561410