Está en la página 1de 15

XML Document Type Definitios

(DTDs)
Los DTDs permiten establecer un tipo de documento,
los elementos y atributos que stos pueden tener.
Es la gramtica de un tipo de documento XML.
Se puede usar un parser (analizador sintctico) para
validar si un documento XML cumple con las
definiciones del DTD.
Los DTDs se pueden asociar a un documento XML:
Internamente
Externamente

XML- DTD asociado internamente


<?xml version=1.0?>
<!DOCTYPE name [
<!ELEMENT name (first, middle, last)>
<!ELEMENT first (#PCDATA)>
<!ELEMENT middle (#PCDATA)>
<!ELEMENT last (#PCDATA)>
]>
<name>
<first>Joseph</first>
<middle>John</middle>
<last>Fawcett</last>
</name>

Opcional, pero se recomienda por


compatibilidad con nuevas versiones
Document type declaration (con DTD va
al inicio)
Elemento raz
Cuerpo del DTD

XML- DTD asociado externamente


System identifiers
Tiene dos elementos:
La palabra clave SYSTEM
El URI que apunta a la ubicacin del documento
El URI puede ser un archivo en el disco local, en la intranet, en Internet

SYSTEM va luego del nombre del elemento raz:


<!DOCTYPE name SYSTEM name.dtd [...]>
<!DOCTYPE name SYSTEM file:///c:/name.dtd [ ]>
<!DOCTYPE name SYSTEM http://dominio.com/hr/name.dtd [ ]>

XML- DTD asociado externamente


Public identifiers
Permite especificar la ubicacin del DTD como un recurso en un
catlogo pblico en lugar de un archivo.
Deben tener el formato FPI (Format Public Identifiers) (ISO 9070);
la ISO aprueba y administra los estndares.
FPI -//Owner//Class Description//Language//Version
<!DOCTYPE name PUBLIC -//Beginning XML//DTD Name Example//EN name.dtd>
Ver: name.dtd y name-doc-xml

XML- Estructura de un DTD


Contiene tres partes bsicas:
Declaracin de Elementos
Declaracin de Atributos
Declaracin de entidades

XML Estructura de un DTD


Declaracin de elementos: contiene tres partes:
La declaracin ELEMENT
El nombre del elemento
El modelo del contenido del elemento
<!ELEMENT name (first, middle, last)>
El modelo del elemento define el contenido que se
permite en el elemento.
Un elemento puede contener un elemento hijo, texto, la
combinacin de los dos, o puede ser vaco.

XML Estructura de un DTD


Declaracin de elementos:
<!ELEMENT contact (name)>
<!ELEMENT contact (name, location, phone, knows, description)>
Elementos hijos pueden ser:
Secuencias: <!ELEMENT name (first, middle, last)>

3 elementos
en ese orden

Choices: <!ELEMENT location (address | GPS)>

Uno de los
dos
elementos

<!ELEMENT location (address | (latitude, longitude))>

XML Estructura de un DTD


Elementos
<!ELEMENT nombre ( modelo_contenido )>
donde modelo_contenido establece la composicin de un
elemento:

Lista de elementos que lo compone separados por


comas, pueden incluir:
+ Una o ms ocurrencias de ese elemento
* 0 o ms ocurrencias del elemento
? El elemento es opcional

#PCDATA. Indica que el elemento esta compuesto por


datos
EMPTY. Indica que el elemento no contiene nada.

XML Estructura de un DTD


Elementos ejemplos:
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT

a (b, (c | d)*, e+, f?) >


libro (autor+, titulo, isbn?, estado)>
autor (nombre, apellido+) >
titulo ( #PCDATA ) >
estado EMPTY >

XML Estructura de un DTD


Atributos
<!ATTLIST nombre_elem n_atr1 tipo_atr1 .val_atr1. . >
tipo_atr. Puede tomar los valores:
CDATA. El atributo es una cadena de caracteres cualquiera (no analizables).
NMTOKEN (o NMTOKENS). El atributo toma una palabra (o varias) como valor.
ID. El valor debe ser un nombre clave (nico).
IDREF (o IDREFS). El valor (o valores) indica su relacin con el ID de otro
elemento.
Lista de nombres. El atributo toma uno de los valores.

val_atr. Puede tomar los valores


#REQUIRED. El atributo debe terne un valor especfico.
#IMPLIED. El valor del atributo no es requerido.
"valor". Valor por defecto para el atributo.
#FIXED "value". Establece el valor que debe tomar el atributo.

XML ejemplo DTD


<!--archivo biblioteca.dtd -->
<!ELEMENT biblioteca (libro+)>

<?xml version="1.0" encoding="ISO-8859-1"?


>
<!DOCTYPE bilbioteca SYSTEM .bibloteca.dtd. >

<!ELEMENT libro (autor+, titulo, isbn?,


estado)>

<biblioteca>

<!ELEMENT autor (nombre, apellido+) >

<libro cod="0002" relac=0001>

<!ELEMENT titulo ( #PCDATA ) >


<!ELEMENT isbn ( #PCDATA ) >

<titulo>XML en 48 horas</titulo>
<autor>
<nombre>Juan Ramn</nombre>
<apellido>Lpez</apellido>

<!ELEMENT estado EMPTY >


<!ELEMENT nombre ( #PCDATA ) >

<apellido>Prats</apellido>
</autor>

<!ELEMENT apellido ( #PCDATA ) >

<isbn>8-12345-09</isbn>

<!ATTLIST libro cod ID #REQUIRED

<estado prestado=Si/>

relacionados IDREFS #IMPLIED>


<!ATTLIST estado prestado (Si | No) No>

</libro>

</biblioteca>

XML ejemplo DTD


Revisar:
mensaje.dtd
mensaje.xml

XML - trabajo
Crear el DTD para el siguiente documento
XML:
<buzon>
<mensaje prioridad="urgente">
<de>Juan</de>
<a>Pepe</a>
<texto idioma=es">
Estimado amigo: ..
</texto>
</mensaje>
<mensaje>
<de>Joss</de>
<a>Pepe</a>
<texto idioma=en">
Querido colega:..
</texto>
</mensaje>

</buzon>

XML Crear el documento XML para el siguiente DTD


<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT agenda (persona+)>
<!ELEMENT persona (nombre, email*, telefono, relacion?)>
<!ATTLIST persona id ID #REQUIRED>
<!ATTLIST persona sexo (hombre | mujer) #IMPLIED>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT telefono (#PCDATA)>
<!ELEMENT relacion EMPTY>
<!ATTLIST relacion amigo-de IDREFS #IMPLIED>
Conociendo que los contactos son
Juan Ruiz. juan@empresa.com juan@particular.net 0999354325 amigo de Eva
Eva Gmez (email desconocido) 0999254125 (amigo no conocido)
Manuel Lpez manuel@empresa.net 098457457 amigos Eva y Juan

XML- elaborar el DTD para un recetario


de cocina
Cada receta tiene:

Un atributo obligatorio que puede tomar los valores: 1plato, 2plato, postre
Un nombre (texto)
Varios ingredientes
Varios pasos para su elaboracin

Cada ingrediente contiene:


Atributo con la cantidad
Atributo con el nombre

Cada paso contiene:


Un atributo identificador que establece el orden
Un atributo que referencia otros pasos del cual depende ste
Texto con la explicacin

También podría gustarte