在DTD中,元素的聲明與元素聲明。
聲明元素
在DTD中,XML元素聲明的語法如下:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
空元素
空元素的聲明通過類別關鍵詞EMPTY:
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
與解析字符數據元素
只有解析字符數據元素的聲明用括號內#PCDATA:
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
與任何內容元素
與類別關鍵字聲明的元素的任何,可以包含可解析數據的任意組合:
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
與子元素(sequences)
有一個或多個子女的元素聲明的括號內兒童元素的名稱:
<!ELEMENT element-name (child1)>
or
<!ELEMENT element-name (child1,child2,...)>
Example:
<!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)>
Example:
<!ELEMENT note (message)>
上面的例子中聲明的子元素"message"必須發生一次,並且只有內一次"note"的元素。
聲明元素的最小的一個發生
<!ELEMENT element-name (child-name+)>
Example:
<!ELEMENT note (message+)>
上述例子中的+符號聲明子元素"message"必須出現內一次或多次"note"的元素。
聲明元素的零個或多個
<!ELEMENT element-name (child-name*)>
Example:
<!ELEMENT note (message*)>
上面的例子中*符號聲明該子元素"message" ,可能會發生內部零次或多次"note"的元素。
聲明元素的零個或一個
<!ELEMENT element-name (child-name?)>
Example:
<!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"的元素。