DTD - Elements
在 DTD 中,元素使用 ELEMENT 宣告來宣告。
宣告元素
在 DTD 中,XML 元素使用以下語法宣告:
<!ELEMENT element-name category>
或
<!ELEMENT element-name (element-content)>
空元素
空元素使用類別關鍵字 EMPTY 來宣告。
<!ELEMENT element-name EMPTY>
示例
<!ELEMENT br EMPTY>
XML 示例
<br />
包含已解析字元資料的元素
僅包含已解析字元資料的元素使用括號內的 #PCDATA 來宣告。
<!ELEMENT element-name (#PCDATA)>
示例
<!ELEMENT from (#PCDATA)>
包含任何內容的元素
使用類別關鍵字 ANY 宣告的元素可以包含任何可解析資料的組合。
<!ELEMENT element-name ANY>
示例
<!ELEMENT note ANY>
包含子元素的元素(序列)
包含一個或多個子元素的元素透過括號內的子元素名稱來宣告。
<!ELEMENT element-name (child1)>
或
<!ELEMENT element-name (child1,child2,...)>
示例
<!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-name (child-name)>
示例
<!ELEMENT note (message)>
上面的示例宣告,“message”子元素必須在“note”元素內出現一次且僅一次。
宣告元素至少出現一次
<!ELEMENT element-name (child-name+)>
示例
<!ELEMENT note (message+)>
上面示例中的 + 符號宣告,“message”子元素必須在“note”元素內出現一次或多次。
宣告元素出現零次或多次
<!ELEMENT element-name (child-name*)>
示例
<!ELEMENT note (message*)>
上面示例中的 * 符號宣告,“message”子元素可以在“note”元素內出現零次或多次。
宣告元素出現零次或一次
<!ELEMENT element-name (child-name?)>
示例
<!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”元素可以包含零次或多次已解析字元資料、“to”、“from”、“header”或“message”元素。