文檔類型定義(DTD)可定義合法的XML文檔構(gòu)建模塊。它使用1系列合法的元夙來定義文檔的結(jié)構(gòu)。
DTD 可被成行地聲明于 XML 文檔中,也可作為1個外部援用。
聲明元素
在 DTD 中,XML 元素通過元素聲明來進(jìn)行聲明。元素聲明使用下面的語法:
<!ELEMENT 元素名稱 種別> [種別可為:EMPTY、(#PCDATA)、ANY]
或
<!ELEMENT 元素名稱 (元素內(nèi)容)>
帶有 DTD 的 XML 文檔實例
<?xml version="1.0"?> <!DOCTYPE note[ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget themeeting!</body> </note>
!DOCTYPE note (第2行)定義此文檔是note 類型的文檔。!ELEMENT note (第3行)定義 note 元素有4個元素:"to、from、heading,、body"
!ELEMENT to (第4行)定義 to 元素為"#PCDATA" 類型
!ELEMENT from (第5行)定義 from 元素為"#PCDATA" 類型
!ELEMENT heading(第6行)定義 heading 元素為 "#PCDATA" 類型
!ELEMENT body (第7行)定義 body 元素為"#PCDATA" 類型
PCDATA 的意思是被解析的字符數(shù)據(jù)(parsedcharacter data),PCDATA 是會被解析器解析的文本。這些文本將被解析器檢查實體和標(biāo)記
CDATA 的意思是字符數(shù)據(jù)(characterdata)。CDATA 是不會被解析器解析的文本
<!ELEMENT note(#PCDATA|to|from|header|message)*[可以加后綴:?、*、+]>
上面的例子聲明了:"note"元素可包括出現(xiàn)零次或?qū)掖蔚?PCDATA、"to"、"from"、"header" 或 "message"。
聲明屬性
屬性聲明使用以下語法:
<!ATTLIST 元素名稱 屬性名稱 屬性類型 默許值>
以下是屬性類型的選項:
類型 描寫
CDATA 值為字符數(shù)據(jù) (character data)
(en1|en2|..) 此值是枚舉列表中的1個值
ID 值為唯1的 id
IDREF 值為另外1個元素的 id
IDREFS 值為其他 id 的列表
NMTOKEN 值為合法的 XML 名稱
NMTOKENS 值為合法的 XML 名稱的列表
ENTITY 值是1個實體
ENTITIES 值是1個實體列表
NOTATION 此值是符號的名稱
xml: 值是1個預(yù)定義的XML 值
默許值參數(shù)可以使用以下值:
值 解釋
值 屬性的默許值
#REQUIRED 屬性值是必須的
#IMPLIED 屬性不是必須的
#FIXED value 屬性值是固定的
聲明實體
語法:
<!ENTITY 實體名稱 "實體的值">