在一個(gè) DTD 中,元素通過元素聲明來進(jìn)行聲明。
DTD - 元素
聲明一個(gè)元素
在 DTD 中,XML 元素通過元素聲明來進(jìn)行聲明。元素聲明使用下面的語法:
<!ELEMENT 元素名稱 類別>
或者
<!ELEMENT 元素名稱 (元素內(nèi)容)>
空元素
空元素通過類別關(guān)鍵詞EMPTY進(jìn)行聲明:
<!ELEMENT 元素名稱 EMPTY>
例子:
<!ELEMENT br EMPTY>
XML例子:
<br />
只有 PCDATA 的元素
只有 PCDATA 的元素通過圓括號(hào)中的 #PCDATA 進(jìn)行聲明:
<!ELEMENT 元素名稱 (#PCDATA)>
例子:
<!ELEMENT from (#PCDATA)>
帶有任何內(nèi)容的元素
通過類別關(guān)鍵詞 ANY 聲明的元素,可包含任何可解析數(shù)據(jù)的組合:
<!ELEMENT 元素名稱 ANY>
例子:
<!ELEMENT note ANY>
帶有子元素(序列)的元素
帶有一個(gè)或多個(gè)子元素的元素通過圓括號(hào)中的子元素名進(jìn)行聲明:
<!ELEMENT 元素名稱 (子元素名稱 1)>
或者
<!ELEMENT 元素名稱 (子元素名稱 1,子元素名稱 2,.....)>
例子:
<!ELEMENT note (to,from,heading,body)>
當(dāng)子元素按照由逗號(hào)分隔開的序列進(jìn)行聲明時(shí),這些子元素必須按照相同的順序出現(xiàn)在文檔中。在一個(gè)完整的聲明中,子元素也必須被聲明,同時(shí)子元素也可擁有子元素。"note" 元素的完整聲明是:
<!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
聲明只出現(xiàn)一次的元素
<!ELEMENT 元素名稱 (子元素名稱)>
例子:
<!ELEMENT note (message)>
上面的例子聲明了:message 子元素必須出現(xiàn)一次,并且必須只在 "note" 元素中出現(xiàn)一次。
聲明最少出現(xiàn)一次的元素
<!ELEMENT 元素名稱 (子元素名稱+)>
例子:
<!ELEMENT note (message+)>
上面的例子中的加號(hào)聲明了:message 子元素必須在 "note" 元素內(nèi)出現(xiàn)至少一次。
聲明出現(xiàn)零次或多次的元素
<!ELEMENT 元素名稱 (子元素名稱*)>
例子:
<!ELEMENT note (message*)>
上面的例子中的星號(hào)聲明了:子元素 message 可在 "note" 元素內(nèi)出現(xiàn)零次或多次。
聲明出現(xiàn)零次或一次的元素
<!ELEMENT 元素名稱 (子元素名稱?)>
例子:
<!ELEMENT note (message?)>
上面的例子中的問號(hào)聲明了:子元素 message 可在 "note" 元素內(nèi)出現(xiàn)零次或一次。
聲明“非.../既...”類型的內(nèi)容
例子:
<!ELEMENT note (to,from,header,(message|body))>
上面的例子聲明了:"note" 元素必須包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。
聲明混合型的內(nèi)容
例子:
<!ELEMENT note (#PCDATA|to|from|header|message)*>
上面的例子聲明了:"note" 元素可包含出現(xiàn)零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。
上一篇: XLink 和 XPointer 語法 下一篇: 您已經(jīng)學(xué)習(xí)了 DTD,下一步呢?