Está en la página 1de 2

Diseño y Procesamiento de Documentos XML

DTD
________________________________________________________________________________________

REGLAS DTD

Elementos

<!ELEMENT nombreElemento >

Modelo de
Significado
Contenido
El elemento que se describe ya es hoja, o sea no tiene ni subelementos ni contenido.
Eso significa que la única información que puede inferirse de él o bien está entre sus
atributos o es el nombre de su tag.
EMPTY
Un documento XML (instancia) compatible con esta estructura tendría este elemento
como nodo hoja.
El elemento que se describe puede contener tanto contenido texto como
subelementos.
ANY
Esta regla es demasiado ambigua (cualquier cosa matcheará). Suele usarse en
etapa de desarrollo, cuando se está diseñando la estructura de un documento y no
se ha decidido la forma de dicha subjerarquía. Un elemento así puede ser hoja o no.

El elemento que se describe contiene la lista de subelementos dada por la expresión


indicada entre paréntesis.

Dicha lista puede:


a) usar “,” para indicar secuencia o concatenación (orden estricto).
b) usar “|” para indicar disyunción (OR).

Cada uno de los subelementos que lo conforman pueden tener cardinalidad


( ) (frecuencia). La misma se indica justo luego del nombre del subelemento y puede
ser:
Si no hay especificación el elemento debe aparecer
exactamente una vez
+ El elemento debe aparecer por lo menos una vez
? El elemento puede aparecer a lo sumo una vez
* El elemento debe aparecer cero o más veces

El elemento que se describe es un nodo tipo texto y que no contiene subelementos.

(#PCDATA) Si un documento XML es validado con esta estructura, el elemento dado por esta
regla de derivación tendrá un nodo hoja hijo de tipo #Text: caracteres , donde
caracteres es el texto asociado.

El elemento que se describe es un nodo que puede tener contenido mixto. O sea
puede tener texto y/o subelementos.

Es obligatorio comenzar colocando el texto (o sea el #PCDATA) y separados por pipe


(#PCDATA | … )*
los subelementos.

El símbolo * al final es obligatorio no puede cambiarse por otro (no puede usarse +,
?). Debido al * pueden repetirse los elementos tantas veces se quiera y en cualquier
orden.

1
Diseño y Procesamiento de Documentos XML
DTD
________________________________________________________________________________________

Atributos

<!ATTLIST elementoNombre atributoNombre1 atributoTipo1 valorDefault1


atributoNombre2 atributoTipo2 valorDefault2
... >

• El elementoNombre sirve para indicar a qué elemento corresponde, ya que este tag puede estar en
cualquier lugar dentro del DTD (no justo debajo del elemento).

• El atributoNombreN sirve para indicar el nombre del atributo

• El atributoTipo indica los valores posibles, y puede ser:


o CDATA: cualquier texto, es el default. No tiene nada que ver con la sección CDATA.
o ( ): para indicar enumeración o selección de entre algún valor de la lista allí mencionada. Los
valores se separan con el símbolo pipe (|).
o ID: si el valor es único dentro del documento. Es como el primary key de las bases de datos, por
lo que no puede haber más de un atributo ID para el mismo elemento. El valor de un atributo ID
debe ser alfanumérico comenzando con letra o con underscore. No puede usarse junto con
#FIXED.
o IDREF: si el valor es un ID existente de otro elemento. Es como el foreign key de las bases de
datos. Permite indicar una referencia (como punteros en C).
o IDREFS: si el valor es una lista de otros IDs.
o ENTITY, ENTITIES, NOTATION: No los vamos a usar. Sólo a modo de informativo, indicamos
que un “entity” es una asociación (shortcut) entre un nombre y cierto texto (como las macros de
lenguaje C). Su declaración es <!ENTITY entityNombre “entityValor” >. Ejemplo: <!ENTITY
email “dba@itba.edu.ar”>

• Y finalmente el valorDefaultN puede ser:


o #REQUIRED: indica que el atributo debe tener proporcionado un valor cada vez que aparezca en
el documento. O sea, indica que es obligatorio que la instancia provea un valor para él.
o #IMPLIED: indica que el valor del atributo es opcional y no hay default asumido.
o “valor”: indica que el valor del atributo sería default o sea asignado automáticamente si no se lo
proporciona.
o #FIXED “valor”: indica que sólo ese valor indicado es el admitido cada vez que aparezca en el
documento. O sea indica que el mismo no puede ser modificado, es constante y debe coincidir
exactamente con este, aunque puede omitirse en la instancia y automáticamente tomará este
valor.

También podría gustarte