В DTD, элементы объявляются с декларацией ЭЛЕМЕНТОВ.
Декларирование Elements
В DTD, элементы XML объявляются с помощью следующего синтаксиса:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
Пустые элементы
Пустые элементы объявляются с помощью ключевого слова EMPTY категории:
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
Элементы с Parsed символьных данных
Элементы с только разбираемых символьных данных объявляются с #PCDATA внутри скобок:
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
Элементы с любым содержанием
Элементы объявляются с помощью ключевого слова категории ANY, может содержать любую комбинацию оформленной данных:
<!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" элементы.