Está en la página 1de 38

Validacin y Definicin de Documentos

Document Type Definition (DTD)


1

Document Type Definition (DTD)

1. DTD: Definicin de Tipo de Documento


Crear una DTD es como crear un propio lenguaje de marcado, para una aplicacin especfica. La DTD define los tipos de elementos, atributos y entidades permitidas, y puede expresar algunas limitaciones para combinarlos. La DTD puede residir en un archivo externo, y quiz compartido por vario documentos. O puede estar contenida en el propio documento XML, como parte de su definicin de tipo de documento.

Document Type Definition (DTD)

1. DTD: Definicin de Tipo de Documento (Continuacin)


Los documentos XML que se ajustan a su DTD, se denominan vlidos. El concepto de validez no tiene nada que ver con el de bien formado. Un documento bien formado simplemente respeta la estructura y sintaxis definidas por la especificacin de XML. Un documento vlido puede ser adems vlido si cumple las reglas de una DTD determinada. Tambin existen documentos XML sin una DTD asociada, en ese caso no son vlidos, pero tampoco invlidos, simplemente bien formados o no.

Document Type Definition (DTD)

2. DTD Ejemplo
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Producto [ <!ELEMENT Producto (Nombre, Marca,Precio)> <!ELEMENT Nombre (#PCDATA)> <!ELEMENT Marca (#PCDATA)> <!ELEMENT Precio (#PCDATA)> ]> <Producto> <Nombre>Computador Pentium de 460 MHZ </Nombre> <Marca> Acer </Marca> <Precio> $ 1987034 </Precio> </Producto>

Document Type Definition (DTD)

3. Otra DTD
!DOCTYPE Productos [ <!ELEMENT Productos (producto)> <!ELEMENT producto (Nombre, Marca,Precio)> <!ELEMENT Nombre (#PCDATA)> <!ELEMENT Marca (#PCDATA)> <!ELEMENT Precio (#PCDATA)> ]> <Productos> <producto> <Nombre>Computador Pentium de 460 MHZ </Nombre> <Marca> Acer </Marca> <Precio> $ 1987034 </Precio> </producto> </Productos>

Document Type Definition (DTD)

4. DTD Externa
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Producto SYSTEM "C:\Ejemplos Sistemas\Producto.dtd"> <Producto> <Nombre>Computador Pentium de 460 MHZ </Nombre> <Marca> Acer </Marca> <Precio> $ 1987034 </Precio> </Producto> <!-- La dtd externa al documento es: --> <!ELEMENT Producto (Nombre, Marca, Precio)> <!ELEMENT Nombre (#PCDATA)> <!ELEMENT Marca (#PCDATA)> <!ELEMENT Precio (#PCDATA)> Centro

Document Type Definition (DTD)

5. Declaraciones de Tipo de Elemento


Los elementos son las bases de las marcas XML, y deben ajustarse a un tipo de documento declarado en una DTD para que el documento XML sea considerado vlido. Las declaraciones de tipo de elemento deben comenzar con <!ELEMENT seguidas por el identificador genrico del elemento que se declara. Luego tienen una especificacin de contenido. Los tipos de elementos slo pueden declararse una vez. <!ELEMENT receta (titulo, ingredientes, procedimiento)>

Document Type Definition (DTD)

5. Declaraciones de Tipo de Elemento (Continuacin)


Siguiendo la definicin del elemento anterior, este ejemplo de documento XML sera vlido: <receta> <titulo>...</titulo> <ingredientes>...</ingredientes> <procedimiento>...</procedimiento> </receta>

Document Type Definition (DTD)

5. Declaraciones de Tipo de Elemento (Continuacin)


Pero no este no sera vlido: <receta> <parrafo>Esto es un prrafo</parrafo> <titulo>...</titulo> <ingredientes>...</ingredientes> <procedimiento>...</procedimiento> </receta>

Document Type Definition (DTD)

- Ejercicios

Construya las DTD, para los ejemplos del memo y la escuela.

Document Type Definition (DTD)

5. Declaraciones de Tipo de Elemento (Continuacin)


La especificacin de contenido puede ser de cuatro tipos:

Tipo de especificacin de contenido Contenido EMPTY Contenido ANY Contenido Mixed

Contenido permitido Puede no tener contenido. Suelen usarse para los atributos. Puede tener cualquier contenido. Puede tener caracteres de tipos de datos o una mezcla de caracteres y subelementos especificados en la especificacin de contenido mixto. Slo puede tener subelementos especificados en la especificacin del contenido.

Contenido Element

Document Type Definition (DTD)

5. Declaraciones de Tipo de Elemento (Continuacin)


1) EMPTY. Puede no tener contenido. Suele usarse para los atributos : !DOCTYPE Producto SYSTEM "C:\Ejemplos Centro Sistemas\Productoatributo.dtd"> <Producto> <Distribuidor compaia="Compusoftware"/> <Nombre>Computador Pentium de 460 MHZ </Nombre> <Marca_Fabricante> Acer </Marca_Fabricante> <Precio>$ 1987034 </Precio>

Document Type Definition (DTD)

5. Declaraciones de Tipo de Elemento (Continuacin)


</Producto> <!-- La DTD para este documento es : --> <!ELEMENT Producto (Distribuidor, Nombre, Marca_Fabricante, Precio)> <!ELEMENT Distribuidor EMPTY> <!ATTLIST Distribuidor compaia CDATA #REQUIRED > <!ELEMENT Nombre (#PCDATA)> <!ELEMENT Marca_Fabricante (#PCDATA)> <!ELEMENT Precio (#PCDATA)>

Document Type Definition (DTD)

5. Declaraciones de Tipo de Elemento (Continuacin)


2) ANY. Puede tener cualquier contenido. No se suele utilizar, ya que es conveniente estructurar adecuadamente los documentos XML. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE autores [ <!ELEMENT autores ANY > <!ELEMENT anonimo ANY > ]> <autores> <anonimo>soy anonimo </anonimo> <anonimo/> </autores>

Document Type Definition (DTD)

5. Declaraciones de Tipo de Elemento (Continuacin)


3) MIXED. Puede contener caracteres de tipos de datos o una mezcla de caracteres y subelementos especificados. <?xml version="1.0"?> <!DOCTYPE titulo [ <!ELEMENT enfasis (#PCDATA)> <!ELEMENT lengua-extranjera (#PCDATA)> <!ELEMENT titulo (#PCDATA | lengua-extranjera | enfasis)*> ]> <titulo>esto es <lengua-extranjera>very large </lengua-extranjera> titulo para un libro <enfasis>XML </enfasis> </titulo>

Document Type Definition (DTD)

5. Declaraciones de Tipo de Elemento (Continuacin)


4) Element Solo puede contener subelementos especificados en la especificacin de contenidos. <!ELEMENT mensaje (remite , destinatario, texto)> Para declarar que un tipo de elemento tenga contenido de elementos se especifica un modelo de contenido en lugar de una especificacin de contenido mixto o una de las claves anteriores.

Document Type Definition (DTD)

6. Modelos de Contenido
<!ELEMENT aviso (parrafo)> Esto indica que <aviso> solo puede contener un elemento llamado <parrafo>

<!ELEMENT aviso (titulo, parrafo)> La coma, en este caso denota una secuencia. Es decir, el elemento <aviso> debe contener el elemento <titulo> seguido del elemento <parrafo>.

Document Type Definition (DTD)

6. Modelos de Contenido (Continuacin)


<!ELEMENT aviso (parrafo | grafico)> La barra vertical indica una opcin. Es decir, <aviso> puede contener o bien un prrafo o bien un grfico. El nmero de opciones no est limitado a dos, y se pueden agrupar usando parntesis. <!ELEMENT aviso (titulo, (parrafo | grafico))> En este ltimo caso, el <aviso> debe contener un <titulo> seguido de un <parrafo> o de un <grafico>.

Document Type Definition (DTD)

6. Modelos de Contenido (Continuacin)


Adems, cada partcula de contenido puede llevar un indicador de frecuencia, que siguen directamente a un identificador general, una secuencia o una opcin, y no pueden ir precedidos por espacios en blanco.

Document Type Definition (DTD)

7. Ejemplo de Modelos de Contenido


<!ELEMENT aviso (titulo?, (parrafo, grafico)*)> En este caso, <aviso> puede tener un <titulo>, o no (pero solo uno), y puede tener cero o ms conjuntos <parrafo><grafico>, <parrafo><parrafo><grafico> , etc.

Document Type Definition (DTD)

8. Declaraciones de Lista de Atributos


Los atributos permiten aadir informacin adicional a los elementos de un documento. La principal diferencia entre los elementos y los atributos, es que los atributos no pueden contener subatributos. Se usan para aadir informacin corta, sencilla y desestructurada. <mensaje prioridad='urgente'> <de>Daniel Salas </de> <para>Leonardo Bermon </para> <texto idioma='espao'> Hola Leonardo Que tal? </texto> </mensaje>

Document Type Definition (DTD)V

8. Declaraciones de Lista de Atributos (Continuacin)


Otra diferencia entre los atributos y los elementos, es que cada uno de los atributos slo se pueden especificar una vez, y en cualquier orden. En el ejemplo anterior, para declarar la lista de atributos de los elementos <mensaje> y <texto> se hara lo siguiente: <!DOCTYPE mensaje [ <!ELEMENT mensaje (de, para, texto)> <!ATTLIST mensaje prioridad (normal | urgente) "normal"> <!ELEMENT de (#PCDATA)> <!ELEMENT para (#PCDATA)> <!ELEMENT texto (#PCDATA)> <!ATTLIST texto idioma CDATA #REQUIRED> ]>

Document Type Definition (DTD)

8. Declaraciones de Lista de Atributos (Continuacin)


El atributo idioma pertenece al elemento texto, y puede contener datos de carcter (CDATA). La palabra #REQURED significa que no tiene valor por defecto, ya que es obligatorio especificar este atributo. A menudo se desea omitir un atributo, sin que se adopte un valor automtico por defecto. Para esto se usa la declaracin #IMPLIED. Por ejemplo en una DTD que defina la etiqueta <IMG> de HTML: <!DOCTYPE IMG [ <!ELEMENT IMG EMPTY> <!ATTLIST IMG URL CDATA #REQUIRED ALT CDATA #IMPLIED> ]> <IMG URL=" " ALT=" "> </IMG>

Document Type Definition (DTD)

8. Declaraciones de Lista de Atributos (Continuacin)


Se pueden declarar varios atributos en una sola declaracin de lista de atributos. !DOCTYPE PERSONA [ <!ELEMENT PERSONA EMPTY> <!ATTLIST PERSONA EMAIL CDATA #REQUIRED TELEFONO CDATA #REQUIRED FAX CDATA #REQUIRED

Document Type Definition (DTD)

8. Declaraciones de Lista de Atributos (Continuacin)


]> <PERSOONA EMAIL=" " TELEFONO=" " FAX=" "/> Tambin se pueden tener varias declaraciones para un tipo de elemento. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE PERSONA [ <!ELEMENT PERSONA EMPTY> <!ATTLIST PERSONA HONORIFICO CDATA #REQUIRED> <!ATTLIST PERSONA CARGO CDATA #REQUIRED ORGANIZACION CDATA #REQUIRED> ]> <PERSONA HONORIFICO=" " CARGO=" " ORGANIZACION=" "/>

Document Type Definition (DTD)

9. Tipos de Atributos
Atributos CDATA y NMTOKEN Los atributos CDATA (character data) son los ms sencillos, y pueden contener casi cualquier cosa. Los atributos NMTOKEN (name token) son parecidos, pero solo aceptan los caracteres vlidos para nombrar cosas (letras, nmeros, puntos, guiones, subrayados y los dos puntos). <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mensaje [ <!ELEMENT mensaje EMPTY> <!ATTLIST mensaje fecha CDATA #REQUIRED mes NMTOKEN #REQUIRED > ]> <mensaje fecha="15 de julio de 1990" mes="noviembre"/>

Document Type Definition (DTD)

9. Tipos de Atributos (Continuacin)


Atributos Enumerados Son aquellos que solo pueden contener un valor entre un nmero reducido de opciones. <!ATTLIST mensaje prioridad (normal | urgente) normal>

Document Type Definition (DTD)

9. Tipos de Atributos (Continuacin)


Atributos ID El tipo ID permite que un atributo determinado tenga un valor nico. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE nombre_estudiante [ <!ELEMENT nombre_estudiante (cedula)*> <!ELEMENT cedula EMPTY> <!ATTLIST cedula nro ID #REQUIRED > ]> <nombre_estudiante> <cedula nro="a9216735"/> <cedula nro="b9216735"/> </nombre_estudiante>

Document Type Definition (DTD)

9. Tipos de Atributos (Continuacin)


Atributos IDREF e IDREFS Sirven para referenciar elementos a partir de sus ID. Los valores vlidos para este tipo de atributos pueden ser desde

Document Type Definition (DTD)

9. Tipos de Atributos (Continuacin)


Atributos ID e IDREF <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE lab_grupo [ <!ELEMENT lab_grupo (nombre_estudiante)*> <!ELEMENT nombre_estudiante (#PCDATA)> <!ATTLIST nombre_estudiante nro_estudiante ID #REQUIRED> <!ATTLIST nombre_estudiante monitor_1 IDREF #IMPLIED> <!ATTLIST nombre_estudiante monitor_2 IDREF #IMPLIED> ]>

Document Type Definition (DTD)

9. Tipos de Atributos (Continuacin)


Atributos ID e IDREF <lab_grupo> <nombre_estudiante nro_estudiante="a8904885">Alex Fontecha</nombre_estudiante> <nombre_estudiante nro_estudiante="a9011133">Sara Baral</nombre_estudiante> <nombre_estudiante nro_estudiante="a9216735" monitor_1="a9011133" monitor_2="a8904885">Juan Smith</nombre_estudiante> </lab_grupo>

Document Type Definition (DTD)

9. Tipos de Atributos (Continuacin)


IDREF e IDREFS Tambin se puede declarar un atributo que pueda mostrar ms de un IDREF declarndolo de tipo IDREFS. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE lista SYSTEM "C:\Centro Sistemas\LISTA.dtd"> <lista> <persona sexo="hombre" id="daniel"> <nombre>Daniel Salas</nombre> <email>dsalas@milano.uis.edu.co</email> <relacion amigo-de="beatriz"/> </persona> <persona sexo="mujer" id="beatriz"> <nombre>Beatriz Diaz</nombre> <email>beatriz@milano.uis.edu.co</email> </persona> </lista>

Document Type Definition (DTD)

9. Tipos de Atributos (Continuacin)


IDREF e IDREFS <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT lista (persona)+> <!ELEMENT persona (nombre, email*, relacion?)> <!ATTLIST persona id ID #REQUIRED sexo (hombre | mujer) #IMPLIED > <!ELEMENT nombre (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ELEMENT relacion EMPTY> <!ATTLIST relacion amigo-de IDREFS #IMPLIED enemigo-de IDREFS #IMPLIED >

Document Type Definition (DTD)

10. Resumen Tipos de Atributos

Document Type Definition (DTD)

11. Taller 1 DTD


Llevar al bloc de notas el ejemplo presente en las diapositivas sobre DTD

Document Type Definition (DTD)

12. Taller 2 DTD


Definir un esquema para un Libro de Invitados, donde se definen los siguientes tipos de elementos: Nombre. Solo uno. Direccin. Opcional. Telfono. Opcional. Fax. Opcional. e-mail. Al menos uno. El modelo de contenido debe contener solo elementos

Document Type Definition (DTD)

13. Taller 3 DTD


Construya una DTD para el ejercicio de la vdeo tienda. En lo posible utilice: 1. Indicadores de Frecuencia ( ?, *, + ) 2. Atributos ID

Document Type Definition (DTD)

Autores

Daniel Salas lvarez, Msc Docente Universidad de Crdoba. Ing. de sistemas.

Arnovis Alemn Romero Lic. Informtica y Medios Audiovisuales Esp. (c) Informtica y telemtica.

Universidad de Crdoba, Colombia. 2009

También podría gustarte