DTD - 元素

在一個 DTD 中,元素通過元素聲明來進行聲明。

聲明一個元素

在 DTD 中,XML 元素通過元素聲明來進行聲明。元素聲明使用下面的語法:

<!ELEMENT 元素名稱 類別>

或者

<!ELEMENT 元素名稱 (元素內容)>

空元素

空元素通過類別關鍵詞EMPTY進行聲明:

<!ELEMENT 元素名稱 EMPTY>

例子:

<!ELEMENT br EMPTY>

XML例子:

<br />

只有 PCDATA 的元素

只有 PCDATA 的元素通過圓括號中的 #PCDATA 進行聲明:

<!ELEMENT 元素名稱 (#PCDATA)>

例子:

<!ELEMENT from (#PCDATA)>

帶有任何內容的元素

通過類別關鍵詞 ANY 聲明的元素,可包含任何可解析數據的組合:

<!ELEMENT 元素名稱 ANY>

例子:

<!ELEMENT note ANY>

帶有子元素(序列)的元素

帶有一個或多個子元素的元素通過圓括號中的子元素名進行聲明:

<!ELEMENT 元素名稱 (子元素名稱 1)>

或者

<!ELEMENT 元素名稱 (子元素名稱 1,子元素名稱 2,.....)>

例子:

<!ELEMENT note (to,from,heading,body)>

當子元素按照由逗號分隔開的序列進行聲明時,這些子元素必須按照相同的順序出現在文檔中。在一個完整的聲明中,子元素也必須被聲明,同時子元素也可擁有子元素。"note" 元素的完整聲明是:

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to      (#PCDATA)>
<!ELEMENT from    (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body    (#PCDATA)>

聲明只出現一次的元素

<!ELEMENT 元素名稱 (子元素名稱)>

例子:

<!ELEMENT note (message)>

上面的例子聲明了:message 子元素必須出現一次,并且必須只在 "note" 元素中出現一次。

聲明最少出現一次的元素

<!ELEMENT 元素名稱 (子元素名稱+)>

例子:

<!ELEMENT note (message+)>

上面的例子中的加號聲明了:message 子元素必須在 "note" 元素內出現至少一次。

聲明出現零次或多次的元素

<!ELEMENT 元素名稱 (子元素名稱*)>

例子:

<!ELEMENT note (message*)>

上面的例子中的星號聲明了:子元素 message 可在 "note" 元素內出現零次或多次。

聲明出現零次或一次的元素

<!ELEMENT 元素名稱 (子元素名稱?)>

例子:

<!ELEMENT note (message?)>

上面的例子中的問號聲明了:子元素 message 可在 "note" 元素內出現零次或一次。

聲明“非.../既...”類型的內容

例子:

<!ELEMENT note (to,from,header,(message|body))>

上面的例子聲明了:"note" 元素必須包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。

聲明混合型的內容

例子:

<!ELEMENT note (#PCDATA|to|from|header|message)*>

上面的例子聲明了:"note" 元素可包含出現零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。