Deben comenzar con una cadena <! ELEMENT ", que será seguida por el identificador del elemento declarado. A continuación, tienen una especificación de contenido específico.
<!ELEMENT noticia(titulo, entrada, cuerpo)>
En este ejemplo, los elementos <noticia> <titulo>, <entrada> y <cuerpo> son elementos que también se definen en el DTD y pueden tener más elementos dentro. Al establecer la definición del elemento de ejemplo, este sería un documento XML válido:
<noticia>
<titulo>...</titulo>
<entrada>...</entrada>
<cuerpo>...</cuerpo>
</noticia>
Pero así no:
<noticia>
<paragrafo>No se que hago aqui</paragrafo>
<titulo>...</titulo>
<entrada>...</entrada>
<cuerpo>...</cuerpo>
</noticia>
Sintaxis:
<!ELEMENT nombre-elemento categoria> o
<!ELEMENT nombre-elemento (contenido)>
Es posible no tener contenido. Se suele utilizar para los atributos.
<!ELEMENT linea EMPTY>
<!DOCTYPE ejemplo [ <!ELEMENT ejemplo EMPTY> ]>
<ejemplo></ejemplo>
<ejemplo />
<ejemplo>Esto es un ejemplo</ejemplo>
<!-- No esta bien, no tiene que tener contenido -->
<ejemplo><a></a></ejemplo>
<!-- No esta bien, no puede tener elementos -->
Puede ser una mezcla de subelementos y caracteres especificados en los datos del tipo de caracteres o en la especificación de contenido mixto.
<!ELEMENT importante (#PCDATA)>
<!ELEMENT paragrafo (#PCDATA|enfasis)>
Los primeros elementos definidos en el ejemplo (<importante>), pueden contener datos de tipo (#PCDATA). Los segundos datos de tipo (<paragrafo>) o (#PCDATA) pueden contener subelementos de tipo <enfasis>.
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo (#PCDATA)>
]>
<ejemplo />
<ejemplo>Esto es un ejemplo</ejemplo>
<ejemplo><a></a></ejemplo> <!-- No es correcto, no necesita elemento a -->
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo ANY>
]>
<ejemplo />
<ejemplo>Hau adibidea da</ejemplo>
<ejemplo><a></a></ejemplo>
Sólo contiene sub-elementos especificados en la especificación de contenido.
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo (a, b)>
<!ELEMENT a EMPTY>
<!ELEMENT b EMPTY>
]>
<ejemplo><a /><b /></ejemplo>
<ejemplo><a /><b /><c /></ejemplo>
<!-- <c /> no se declara. Sobra. -->
<ejemplo><a /></ejemplo>
<!-- <b /> falta -->
<adibidea><b /><a /></adibidea>
<!-- no están en orden -->
<!ELEMENT mensaje (quien, para, texto)>
MODELOS DE CONTENIDO
Un modelo es un modelo que establece los subelementos soportados y su orden. Un solo patrón puede contener solo un subelemento:
<!ELEMENT mensaje (parrafo)>
Dependiendo de esto, los elementos <mensaje> pueden contener un solo párrafo <parrafo>.
<!ELEMENT mensaje (titulo, parrafo)>
La coma representa una secuencia. <mensaje> debe tener un <titulo> seguido de un <parrafo> uno.
<!ELEMENT mensaje (parrafo | imagen)>
La opción de barra vertical indica elección. Es decir, <mensaje> puede contener un elemento <parrafo> o <imagen>. Solo hay dos opciones que se pueden agrupar usando corchetes.
<!ELEMENT mensaje (titulo, (parrafo | imagen))>
En este último ejemplo,<mensaje> debe tener elementos <titulo> y luego <parrafo> o <imagen>.
Además, cada elemento del contenido puede tener un indicador de frecuencia:
Indicadores de frecuencia
<!ELEMENT mensaje(titulo?, (parrafo+, imagen?)*)>
En este ejemplo <mensaje> puede tener <titulo> o no , y puede tener los grupos <parrafo><imagen>, <parrafo><parrafo><imagen>..
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo (a | b)>
<!ELEMENT a EMPTY>
<!ELEMENT b EMPTY>
]>
<ejemplo><a /></ejemplo>
<ejemplo><b /></ejemplo>
<ejemplo><a /><b /></ejemplo>
<!-- Uno o el otro. No pueden aparecer los dos a la vez-->
<ejemplo></ejemplo>
<!-- No aparece ni uno ni el otro-->
: Puede aparecer, una vez solo. Ejemplo:
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo (a, b?)>
<!ELEMENT a EMPTY>
<!ELEMENT b EMPTY>
]>
<ejemplo><a /></ejemplo>
<ejemplo><a /><b /></ejemplo>
<ejemplo><b /></ejemplo>
<!-- <a /> falta el elemento a -->
<ejemplo><b /><b /></ejemplo
>
<!-- <b /> aparece 2 veces -->
*: El elemento no aparece o aparece las que veces que sean. Ejemplo:
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo (a*, b)>
<!ELEMENT a EMPTY>
<!ELEMENT b EMPTY>
]>
<ejemplo><b /></ejemplo>
<ejemplo><a /><b /></ejemplo>
<ejemplo><a /><a /><b /></ejemplo>
<ejemplo><b /><a /></ejemplo>
<!-- No aparecen en el orden correcto, primero <a /> y luego <b /> -->
+: una o mas veces, aparecerá (como mínimo una). Ejemplo
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo (a+, b)>
<!ELEMENT a ejemplo>
<!ELEMENT b EMPTY>
]>
<ejemplo><a /><b /></ejemplo>
<ejemplo><a /><a /><b /></ejemplo>
<ejemplo><b /></ejemplo>
<!-- <a /> falta -->
(): deben ir juntos. Ejemplo:
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo (a, (a|b))>
<!ELEMENT a EMPTY>
<!ELEMENT b EMPTY>
]>
<ejemplo><a /><a /></ejemplo>
<ejemplo><a /><b /></ejemplo>
<ejemplo><a /></ejemplo>
<!-- Falta el segundo elemento <a /> o <b /> -->
Ejemplo:
En un correo electronico, <email> elemento obligatorio <receptor>, <cc> (opcional), <cco>(opcional), <asunto> y <cuerpo> seria la secuncia de los elementos. :
<!ELEMENT email (receptor, cc?, cco?, asunto, cuerpo)>
<!ELEMENT receptor(#PCDATA)>
<!ELEMENT cc (#PCDATA)>
...
Ejemplo:
Un contrato tiene una lista de cláusulas.Cada cláusula se compone de una serie de epígrafes y desarrollos relacionados, que termina con un solo epílogo:
<!ELEMENT clausulas (clausula)+>
<!ELEMENT clausula ((epigrafe, desarrollo)+, epilogo)>
...
Mezcla de contenido, mezcla de texto y elementos posteriores.
Ejemplo:
Se pretende describir el elemento <parrafo> que simula el párrafo de un editor de texto, y el texto sin formato, la letra <negrita> (con esa etiqueta en cualquier lado) o la letra <cursiva> (en ambos lados). Estas etiquetas, a su vez, pueden tener un texto sin formato etiquetado. Por lo tanto, <parrafo>, <negrita> y <cursiva> son elementos de contenido mixtos. A continuación, se detallan las reglas para describirlos:
<!ELEMENT parrafo (negrita | cursiva | #PCDATA)*>
<!ELEMENT negrita (cursiva | #PCDATA)*>
<!ELEMENT cursiva (negrita | #PCDATA)*>
NOTA: El cuantificador no se puede utilizar con un contenido mixto; por eso se ha utilizado *.
Documento XML válido con respecto a las reglas anteriores de DTD:
<parrafo>
Aqui<cursiva>una materia <negrita>importante</negrita></cursiva>a resaltar
</parrafo>
Ejer Ejemplo:
El elemento <tipoSangre> está destinado a ser uno de sólo cuatro de los siguientes elementos: A, B, AB u O. Indica la correcta declaración de dicho elemento.
<!ELEMENT tipoSangre (A?B?AB?O) >
<!ELEMENT tipoSangre (A,B,AB,O) >
<!ELEMENT tipoSangre (A|B|AB|O) >
<!ELEMENT tipoSangre (A+B+AB+O) >
Ejer Ejemplo 2:
¿Qué afirmación es correcta, con respecto al este elemento?
<!ELEMENT contenido (alfa | beta*) >
Tanto el elemento alfa como el elemento beta pueden aparecer en 0 o más ocasiones
Tanto el elemento alfa como el elemento beta pueden aparecer una vez como máximo.
Ambos elementos alfa y elementos beta deben aparecer una vez más como máximo.
Los elementos alfa deben aparecer una vez que los elementos beta aparezcan en 0 o más ocasiones.
AVISO: Los documentos HTML no tienen que configurarse correctamente para que se muestren en los navegadores. Por este motivo, en las DTD que validan estos documentos se utiliza una determinada nomenclatura, que un elemento de la expresión puede estar abierto o cerrado. Si, después del nombre del elemento, aparecen dos guiones, el comienzo y el final de la etiqueta inicial son necesarios. Poco después de una letra "O" Si aparece, no hay necesidad de la etiqueta final. Si hay un par de letras en "O", la etiqueta inicial y el final no son necesarias.