Em uma DTD, os elementos são declarados com uma declaração de elemento.
declarando Elements
Em uma DTD, XML elementos são declarados com a seguinte sintaxe:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
Elementos vazios
Os elementos vazios são declarados com a palavra-chave categoria vazia:
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
Elementos com dados Parsed Character
Elementos com dados de caracteres única analisados são declarados com #PCDATA entre parênteses:
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
Elementos com qualquer Conteúdo
Elementos declarada com a palavra-chave categoria ANY, pode conter qualquer combinação de dados parsable:
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
Elementos com Crianças (sequences)
Elementos com uma ou mais crianças são declarados com o nome dos elementos filhos dentro dos parênteses:
<!ELEMENT element-name (child1)>
or
<!ELEMENT element-name (child1,child2,...)>
Example:
<!ELEMENT note (to,from,heading,body)>
Quando as crianças são declarados em uma seqüência separados por vírgulas, as crianças devem aparecer na mesma sequência no documento. Em uma declaração completa, as crianças também devem ser declarados, e as crianças também podem ter filhos. A declaração completa da "note" elemento é:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Declarando Só Uma ocorrência de um elemento
<!ELEMENT element-name (child-name)>
Example:
<!ELEMENT note (message)>
O exemplo acima declara que a criança elemento "message" deve ocorrer uma vez, e apenas uma vez dentro da "note" elemento.
Declarando mínima Uma ocorrência de um elemento
<!ELEMENT element-name (child-name+)>
Example:
<!ELEMENT note (message+)>
O sinal + no exemplo acima declara que a criança elemento "message" deve ocorrer uma ou mais vezes dentro da "note" elemento.
Declarando zero ou mais ocorrências de um elemento
<!ELEMENT element-name (child-name*)>
Example:
<!ELEMENT note (message*)>
O * sinal no exemplo acima declara que a criança elemento "message" pode ocorrer zero ou mais vezes dentro da "note" elemento.
Declarando zero ou uma ocorrências de um elemento
<!ELEMENT element-name (child-name?)>
Example:
<!ELEMENT note (message?)>
O ? assinar no exemplo acima declara que a criança elemento "message" pode ocorrer zero ou uma vez dentro da "note" elemento.
Declarando ou / ou conteúdo
<!ELEMENT note (to,from,header,(message|body))>
O exemplo acima declara que a "note" elemento deve conter um "to" elemento, um "from" elemento, um "header" elemento, e quer uma "message" ou um "body" elemento.
Declarando conteúdo misto
<!ELEMENT note (#PCDATA|to|from|header|message)*>
O exemplo acima declara que a "note" elemento pode conter zero ou mais ocorrências de dados de caracteres analisados, "to" , "from" , "header" ou "message" elementos.