DTD - Elementos

En una DTD, los elementos se declaran mediante declaraciones de elementos.

Declarar un elemento

En DTD, los elementos XML se declaran mediante declaraciones de elementos. Las declaraciones de elementos utilizan la siguiente sintaxis:

!ELEMENT nombreDeElemento categoría

O

!ELEMENT nombreDeElemento (contenidoDeElemento)

Elementos vacíos

Los elementos vacíos se declaran con la clave de categoría EMPTY:

!ELEMENT nombreDeElemento EMPTY

Ejemplo:

!ELEMENT br EMPTY

Ejemplo de XML:

<br />

Elementos que solo contienen PCDATA

Los elementos que solo contienen PCDATA se declaran mediante #PCDATA entre paréntesis:

!ELEMENT nombreDeElemento (#PCDATA)

Ejemplo:

!ELEMENT from (#PCDATA)

Elementos con cualquier contenido

Los elementos declarados con la clave de categoría ANY pueden contener cualquier combinación de datos interpretables:

!ELEMENT nombreDeElemento ANY

Ejemplo:

!ELEMENT note ANY

Los elementos con subelementos (secuencia)

Los elementos que tienen uno o más subelementos se declaran mediante el nombre de los subelementos entre paréntesis:

<!ELEMENT elementoNombre (subElementoNombre 1)>

O

<!ELEMENT elementoNombre (subElementoNombre 1,subElementoNombre 2,...)>

Ejemplo:

<!ELEMENT note (to,from,heading,body)>

Cuando los subelementos se declaran en una secuencia separada por comas, estos subelementos deben aparecer en el documento en el mismo orden. En una declaración completa, también deben declararse los subelementos, y los subelementos pueden tener subelementos. 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)>

Declaración de elementos que solo pueden aparecer una vez.

<!ELEMENT elementoNombre (subElementoNombre)>

Ejemplo:

<!ELEMENT note (message)>

El ejemplo anterior declara que el elemento hijo "message" debe aparecer una vez y solo una vez dentro del elemento "note".

Declaración de elementos que deben aparecer al menos una vez.

<!ELEMENT elementoNombre (subElementoNombre+)>

Ejemplo:

<!ELEMENT note (message+)>

El más en el ejemplo anterior declara que el elemento hijo "message" debe aparecer al menos una vez dentro del elemento "note".

Declaración de elementos que pueden aparecer cero o más veces.

<!ELEMENT elementoNombre (subElementoNombre*)>

Ejemplo:

<!ELEMENT note (message*)>

El asterisco en el ejemplo anterior declara que el elemento hijo "message" puede aparecer cero o más veces dentro del elemento "note".

Declaración de elementos que pueden aparecer cero o una vez.

<!ELEMENT elementoNombre (subElementoNombre?)>

Ejemplo:

<!ELEMENT note (message?)>

El interrogante en el ejemplo anterior declara que el elemento hijo "message" puede aparecer cero o una vez dentro del elemento "note".

Declaración de contenido de tipo "no.../o..."

Ejemplo:

<!ELEMENT note (to,from,header,(message|body))>

El ejemplo anterior declara que el elemento "note" debe contener elementos "to", "from", "header", y elementos no "message" como "body".

Se declara contenido mixto

Ejemplo:

<!ELEMENT note (#PCDATA|to|from|header|message)*>

El ejemplo anterior declara: "El elemento "note" puede contener PCDATA que puede aparecer cero o más veces, "to", "from", "header" o "message".