En un DTD, los elementos se declaran con una declaración de elemento.
La declaración de los elementos
En un DTD, elementos XML se declaran con la siguiente sintaxis:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
Elementos vacíos
Los elementos vacíos se declaran con la categoría de palabras clave vacío:
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
Analizada elementos con datos de caracteres
Los elementos con los datos de caracteres analizados solamente se declaran con #PCDATA entre paréntesis:
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
Los elementos con cualquier Contenido
Elementos declarados con la categoría de palabras clave CUALQUIER, puede contener cualquier combinación de datos apta para su procesamiento:
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
Los elementos con los niños (sequences)
Los elementos con uno o más hijos se declaran con el nombre de los elementos de niños entre paréntesis:
<!ELEMENT element-name (child1)>
or
<!ELEMENT element-name (child1,child2,...)>
Example:
<!ELEMENT note (to,from,heading,body)>
Cuando los niños se declaran en una secuencia separada por comas, los niños deben aparecer en la misma secuencia en el documento. En una declaración completa, los niños también deben ser declarados, y los niños también pueden tener hijos. La declaración completa de la "note" elemento es:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Declarando Una sola ocurrencia de un elemento
<!ELEMENT element-name (child-name)>
Example:
<!ELEMENT note (message)>
El ejemplo anterior declara que el niño elemento "message" debe presentarse una, y sólo una vez dentro de la "note" elemento.
Declarando mínimo una ocurrencia de un elemento
<!ELEMENT element-name (child-name+)>
Example:
<!ELEMENT note (message+)>
El signo + en el ejemplo anterior declara que el niño elemento "message" debe producirse una o más veces dentro de la "note" elemento.
La declaración de cero o más apariciones de un elemento
<!ELEMENT element-name (child-name*)>
Example:
<!ELEMENT note (message*)>
El signo * en el ejemplo anterior declara que el niño elemento "message" puede aparecer cero o más veces dentro de la "note" elemento.
La declaración de cero o uno apariciones de un elemento
<!ELEMENT element-name (child-name?)>
Example:
<!ELEMENT note (message?)>
Los ? firmar en el ejemplo anterior declara que el niño elemento "message" puede ocurrir cero o una vez dentro de la "note" elemento.
La declaración de cualquiera / o contenido
<!ELEMENT note (to,from,header,(message|body))>
El ejemplo anterior declara que la "note" elemento debe contener una "to" elemento, un "from" elemento, una "header" elemento, y, o bien un "message" o un "body" elemento.
La declaración de contenido mixto
<!ELEMENT note (#PCDATA|to|from|header|message)*>
El ejemplo anterior declara que la "note" elemento puede contener cero o más ocurrencias de datos de caracteres analizados, "to" , "from" , "header" , o "message" elementos.