DTD - Elementos
En una DTD, los elementos se declaran con una declaración ELEMENT.
Declaración de elementos
En una DTD, los 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 palabra clave de categoría EMPTY:
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
Elementos con datos de caracteres analizados
Los elementos con solo datos de caracteres analizados se declaran con #PCDATA entre paréntesis:
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
Elementos con cualquier Contenido
Los elementos declarados con la palabra clave de categoría ANY pueden contener cualquier combinación de datos analizables:
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
Elementos con Niños (secuencias)
Los elementos con uno o más hijos se declaran con el nombre de los elementos hijos 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, también se deben declarar los hijos, y los hijos también pueden tener hijos. La declaración completa del elemento "note" es:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Declarar solo una ocurrencia de un elemento
<!ELEMENT element-name (child-name)>
Example:
<!ELEMENT note (message)>
El ejemplo anterior declara que el elemento secundario "mensaje" debe ocurrir una vez, y solo una vez dentro del elemento "nota".
Declarar 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 elemento secundario "mensaje" debe aparecer una o más veces dentro del elemento "nota".
Declarar cero o más ocurrencias de un elemento
<!ELEMENT element-name (child-name*)>
Example:
<!ELEMENT note (message*)>
El signo * en el ejemplo anterior declara que el elemento secundario "mensaje" puede aparecer cero o más veces dentro del elemento "nota".
Declarar cero o una ocurrencia de un elemento
<!ELEMENT element-name (child-name?)>
Example:
<!ELEMENT note (message?)>
El ? firmar en el ejemplo anterior declara que el elemento secundario "mensaje" puede ocurrir cero o una vez dentro del elemento "nota".
Declarar uno o ambos contenidos
<!ELEMENT note (to,from,header,(message|body))>
El ejemplo anterior declara que el elemento "note" debe contener un elemento "to", un elemento "from", un elemento "header" y un elemento "message" o "body".
Declaración de contenido mixto
<!ELEMENT note (#PCDATA|to|from|header|message)*>
El ejemplo anterior declara que el elemento "note" puede contener cero o más apariciones de datos de caracteres analizados, elementos "to", "from", "header" o "message".