DTD:Document Type Definition 文檔定類型定義。
作用:是用來約束XML的書寫規範。
寫法:
內部聲明:
假如 DTD 被包含在您的 XML 源文件中,它應當通過下面的語法包裝在一個 !DOCTYPE 聲明中:<!DOCTYPE根元素 [元素聲明]>
外部聲明:
本地:
<!DOCTYPE 根元素 SYSTEM "dtd文件名">
外地(網上):
<!DOCTYPE 根元素 PUBLIC “dtd的名稱” “dtd的路徑”>
DTD語法:
<!ELEMENT 元素名稱 使用規則>
使用規則:
(#PCDATA):指示元素的主體內容只能是普通的文本.(Parsed Character Data)
EMPTY:用於指示元素的主體爲空。比如<br/>
ANY:用於指示元素的主體內容爲任意類型。
(子元素):指示元素中包含的子元素
定義子元素及描述它們的關係:
如果子元素用逗號分開,說明必須按照聲明順序去編寫XML文檔。
如: <!ELEMENT FILE (TITLE,AUTHOR,EMAIL)>
如果子元素用“|”分開,說明任選其一。
如:<!ELEMENT FILE (TITLE|AUTHOR|EMAIL)>
用+、*、?來表示元素出現的次數
如果元素後面沒有+*?:表示必須且只能出現一次
+:表示至少出現一次,一次或多次
*:表示可有可無,零次、一次或多次
?:表示可以有也可以無,有的話只能有一次。零次或一次
如: <!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>
定義屬性:在DTD文檔中使用ATTLIST關鍵字來爲一個元素聲明屬性。
語法:
<!ATTLIST 元素名 屬性名1 屬性值類型 設置說明 屬性名2 屬性值類型 設置說明 … > 如: <!ATTLIST 商品 類別 CDATA #REQUIRED 顏色 CDATA #IMPLIED > 對應的XML爲:<商品 類別=“服裝” 顏色=“***”/>
屬性值類型:
設置說明:
CDATA:表示屬性的取值爲普通的文本字符串
ENUMERATED (DTD沒有此關鍵字):表示枚舉,只能從枚舉列表中任選其一,如(雞肉|牛肉|豬肉|魚肉)
ID:表示屬性的取值不能重複
#REQUIRED:表示該屬性必須出現
#IMPLIED:表示該屬性可有可無
#FIXED:表示屬性的取值爲一個固定值。語法:#FIXED "固定值"
直接值:表示屬性的取值爲該默認值
定義實體:
爲一段內容指定一個名稱,使用時通過這個名稱就可以引用其所代表的內容。
在DTD文檔中使用ENTITY關鍵字來聲明一個實體。
實體可分爲:引用實體和參數實體,兩者的語法不同
引用實體語法:<!ENTITY 實體名稱 “實體內容”>
在XML中引用方式:&實體名稱
參數實體語法:<!ENTITY % 實體名稱 “實體內容”>
在DTD中引用方式:%實體名稱
示例(網上搜的):
<?xmlversion="1.0"?> <!DOCTYPE note[ <!ELEMENT note(to,from,heading,body)> <!ELEMENT to(#PCDATA)> <!ELEMENT from(#PCDATA)> <!ELEMENT heading(#PCDATA)> <!ELEMENT body(#PCDATA)> ]> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don'tforgetmethisweekend</body> </note>
!DOCTYPE note (第二行)定義此文檔是 note 類型的文檔。
!ELEMENT note (第三行)定義 note 元素有四個元素:"to、from、heading,、body"
!ELEMENT to (第四行)定義 to 元素爲 "#PCDATA" 類型
!ELEMENT from (第五行)定義 from 元素爲 "#PCDATA" 類型
!ELEMENT heading (第六行)定義 heading 元素爲 "#PCDATA" 類型
!ELEMENT body (第七行)定義 body 元素爲 "#PCDATA" 類型
備註:用的時候具體看W3School的DTD教程,地址:http://www.w3school.com.cn/dtd/index.asp