DTD - элементы

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

声明一个元素

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

元素名称 类别

или

元素名称 (元素内容)

空元素

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

元素名称 EMPTY

Пример:

EMPTY

XML示例:

<br />

只有PCDATA的元素

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

元素名称 (#PCDATA)

Пример:

(#PCDATA)

包含任何内容的元素

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

元素名称

Пример:

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".