DTD - Elemente

在一个 DTD 中,元素通过元素声明来进行声明。

声明一个元素

在 DTD 中,XML 元素通过元素声明来进行声明。元素声明使用下面的语法:

<!ELEMENT 元素名称 类别>

或者

<!ELEMENT 元素名称 (元素内容)>

空元素

空元素通过类别关键词EMPTY进行声明:

<!ELEMENT 元素名称 EMPTY>

Beispiel:

<!ELEMENT br EMPTY>

XML例子:

<br />

只有 PCDATA 的元素

只有 PCDATA 的元素通过圆括号中的 #PCDATA 进行声明:

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

Beispiel:

<!ELEMENT from (#PCDATA)>

带有任何内容的元素

通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合:

<!ELEMENT 元素名称 ANY>

Beispiel:

<!ELEMENT note ANY>

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

带有一个或多个子元素的元素通过圆括号中的子元素名进行声明:

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

或者

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

Beispiel:

<!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 元素名称 (子元素名称)>

Beispiel:

<!ELEMENT note (message)>

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

声明至少出现一次的元素

<!ELEMENT Elementname (Subelementname+)>

Beispiel:

<!ELEMENT note (message+)>

Das Pluszeichen im obigen Beispiel bedeutet: Das "message"-Subelement muss im "note"-Element mindestens einmal auftreten.

Erklärung von Elementen, die null oder mehrmals auftreten

<!ELEMENT Elementname (Subelementname*)>

Beispiel:

<!ELEMENT Elementname (Subelementname*)>

Das Sternchen im obigen Beispiel bedeutet: Das "message"-Subelement kann im "note"-Element null oder mehrmals auftreten.

Erklärung von Elementen, die null oder einmal auftreten

<!ELEMENT Elementname (Subelementname?)>

Beispiel:

<!ELEMENT note (message?)>

Der Fragezeichen im obigen Beispiel bedeutet: Das "message"-Subelement kann im "note"-Element null oder einmal auftreten.

Erklärung von "nicht.../oder..."-Inhalten

Beispiel:

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

Der obige Beispiel erklärt: Das "note"-Element muss das "to"-Element, das "from"-Element, das "header"-Element und das nicht "message"-Element, das "body"-Element enthalten.

Erklärung von gemischtem Inhalt

Beispiel:

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

Der obige Beispiel erklärt: Das "note"-Element kann PCDATA, "to", "from", "header" oder "message" enthalten, die null oder mehrmals auftreten können.