Está en la página 1de 23

El lenguaje XML y su aplicacin a la Construccin de Sitios WEB

Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza

DTD Definiciones de Tipo de Documento


D. Pedro ngel Castillo Valdivieso
Dpto. de Arquitectura y Tecnologa de Computadores Univ. de Granada pedro@geneura.ugr.es

Abril / 2002

Definiciones de Tipo de Documento


Los DTD se desarrollaron para ser utilizados con SGML. Son un conjunto de reglas sintcticas para definir etiquetas. Indica cules se pueden usar en un documento, aparecer dentro de otras, cules tienen atributos, etc. No siguen la sintaxis XML que conocemos, sino una propia:
<?xml encondig=UTF-8?> <!ELEMENT listado (elemento)+> <!ELEMENT elemento (#PCDATA)>

Una alternativa que est teniendo xito son los Xschemas. Un Xschema utiliza la sintaxis XML, tiene la misma potencia que los DTD pero adems puede definir tipos de datos.
El lenguaje XML y su aplicacin a la Construccin de Sitios WEB
Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Definiciones de Tipo de Documento


SGML utiliza DTD para describir las etiquetas de un documento. Los documentos XML podemos utilizarlos con o sin DTD: Un documento sin DTD define las etiquetas por la existencia y localizacin de stas cuando son creadas.
<?xml version=1.0?> <libro> <titulo>...</titulo> <texto>......</texto> </libro>

libro

titulo

texto

Una aplicacin XML necesita que el comienzo y fin de todas las etiquetas y la presencia de elementos vacos sea no ambigua.
El lenguaje XML y su aplicacin a la Construccin de Sitios WEB
Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Definiciones de Tipo de Documento


Todos los documentos XML deben ser bien formados. Si no se usa DTD, el XML debe comenzar con la declaracin de documento nico:
<?xml version=1.0 standalone=yes?>

Todas las etiquetas deben estar balanceadas. Todos los valores de los atributos deben ir entrecomillados. Un elemento vaco debe terminar con /> o hacerlo no vaco:
<img src=fichero.gif/> <img src=fichero.gif></img>

Si no se usa DTD, los atributos de etiquetas deben ser del tipo #CDATA.
El lenguaje XML y su aplicacin a la Construccin de Sitios WEB
Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Definiciones de Tipo de Documento


Los documentos XML vlidos tienen un DTD asociado. Deben ser documentos bien formados y comenzar con la declaracin de tipo de documento:
<?xml version=1.0 encoding=UTF-7?> <!DOCTYPE libro SYSTEM http://www.host.dom/libro.dtd> <libro> .... </libro>

La definicin para ese tipo de documento debe ser accesible para la aplicacin XML: localmente <!DOCTYPE libro SYSTEM libro.dtd> descargndola de la red
El lenguaje XML y su aplicacin a la Construccin de Sitios WEB
Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Definiciones de Tipo de Documento


La DTD puede estar en fichero externo o en el mismo XML:
<?xml version=1.0 encoding=UTF-7?> <!DOCTYPE etiqueta [ <!ELEMENT etiqueta (nombre,direccion)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT direccion (#PCDATA)> ]> <etiqueta> <nombre>Julio</nombre> <direccion>Jerez de la Frontera</direccion> </etiqueta>
Utilizaremos esta forma ya que son ejemplos simples

ejemplo de las tarjetas ejemplo de los artculos EJERCICIO: un DTD para describir coches. ]>

La declaracin empieza con <!DOCTYPE raiz [ y termina con Las etiquetas (y su contenido) se definen con <!ELEMENT
El lenguaje XML y su aplicacin a la Construccin de Sitios WEB
Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Declaraciones de Tipo de Documento


Las etiquetas utilizadas deben ajustarse a las reglas dadas en el DTD para que el XML sea vlido. Las declaraciones empiezan por <!ELEMENT seguidas por el identificador de la etiqueta declarada y la especificacin del contenido:
<!ELEMENT etiqueta (titulo,ingredientes,procedimiento)> <!ELEMENT titulo (#PCDATA)>
........

Ejemplo vlido:
<receta> <titulo>titulo</titulo> <ingredientes>cosas</ingredientes> <procedimiento>pasos</procedimiento> </receta>

Ejemplo no vlido:
<receta> <titulo>titulo</titulo> <ingredientes>cosas</ingredientes> <procedimiento>pasos</procedimiento> <advertencias>texto</advertencias> </receta>
Abril / 2002

El lenguaje XML y su aplicacin a la Construccin de Sitios WEB


Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza

Declaraciones de Tipo de Documento


Tipos de contenido:

EMPTY
Etiquetas que se cierran en la misma apertura. La informacin la tienen en forma de atributos:
<!ELEMENT br EMPTY> <br/>

ANY
La etiqueta puede tener cualquier contenido (texto o cualquier elemento):
<!ELEMENT batiburrillo ANY>

El lenguaje XML y su aplicacin a la Construccin de Sitios WEB


Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Declaraciones de Tipo de Documento


Tipos de contenido (cont.):

Mixed
La etiqueta puede tener texto u otras etiquetas (segn la especificacin):
<!ELEMENT texto (#PCDATA|parrafo)>

Element
Slo contendr aquellas etiquetas especificadas:
<!ELEMENT mensaje (remite,destinatario,texto)> EJERCICIO: un DTD y XML para describir email
El lenguaje XML y su aplicacin a la Construccin de Sitios WEB
Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Modelos de Contenido
Son patrones que especifican el orden de definicin de etiquetas.

Sencillo: uno que tenga texto o un solo tipo de elemento:


<!ELEMENT aviso (parrafo)> <!ELEMENT parrafo (#PCDATA)>

Secuencia: usando la coma , se especifica qu etiqueta


va detrs de otra:
<!ELEMENT aviso (titulo,parrafo)>

Opcin: usando la | se dan las etiquetas que puede


contener otra dada (son opciones excluyentes):
<!ELEMENT aviso (parrafo|imagen)>

El lenguaje XML y su aplicacin a la Construccin de Sitios WEB


Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Modelos de Contenido (cont.)


Agrupacin usando los parntesis () Frecuencia:
? Opcional (0 1 vez) * Opcional (0 ms veces) <!ELEMENT aviso (titulo?,(parrafo*,grafico)+)> + necesario y repetible (1 ms veces)
EJERCICIO: un DTD y XML para describir artculos

El lenguaje XML y su aplicacin a la Construccin de Sitios WEB


Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Declaracin de Atributos
Los atributos aaden informacin adicional a las etiquetas. Comienza con <!ATTLIST, seguido del elemento al que se aplica, el nombre del atributo, el tipo de datos y el valor por defecto.

Opcional con valor por defecto: debe tomar un


valor dado en la lista de opciones, pero si se omite, toma el valor por defecto:
<!ELEMENT mensaje (de,a,texto)> <!ATTLIST mensaje prioridad (normal|urgente) normal>
El lenguaje XML y su aplicacin a la Construccin de Sitios WEB
Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Declaracin de Atributos (cont.)

Obligatorio: con #REQUIRED , no toma valor por defecto ya


que hay que especificarlo:
<!ELEMENT texto (#PCDATA)> <!ATTLIST texto idioma CDATA #REQUIRED>

Opcional sin valor por defecto : con #IMPLIED , si no se


especifica no toma un valor por defecto:
<!ELEMENT img EMPTY> <!ATTLIST img url CDATA #REQUIRED alt CDATA #IMPLIED>

EJERCICIO: un DTD y XML para describir mensajes

El lenguaje XML y su aplicacin a la Construccin de Sitios WEB


Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Tipos de Atributos

CDATA: puede contener cualquier carcter:


<!ATTLIST mensaje fecha CDATA #REQUIRED> <mensaje fecha=15 de julio de 2000>

NMTOKEN: slo acepta letras, nmeros, puntos,


guiones, subrayados y los dos puntos:
<!ATTLIST mensaje fecha NMTOKEN #REQUIRED> <mensaje fecha=15-7-2000>

Enumerados y notaciones: slo acepta un valor


de entre los dados como opciones:
<!ATTLIST mensaje prioridad (normal|urgente) normal>

El lenguaje XML y su aplicacin a la Construccin de Sitios WEB


Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Tipos de Atributos (cont.)

Notaciones: el valor se debe ajustar a una


notacin declarada :
<!NOTATION HTML SYSTEM http://www.w3.org/Markup> <!ATTLIST mensaje fecha NOTATION (ISO-DATE|EUROPEAN-DATE) #REQUIRED>

ID e IDREF:

asigna un identificador nico que ser referenciado por un atributo de tipo IDREF:
ID
<!ELEMENT enlace (#PCDATA)> <!ATTLIST enlace apuntador IDREF #REQUIRED> <!ELEMENT capitulo (parrafo*)> <!ATTLIST capitulo identificador ID #IMPLIED>

El lenguaje XML y su aplicacin a la Construccin de Sitios WEB


Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Declaracin de Entidades
Se usan para referenciar a imgenes, pg.webs, ficheros, etc. Se declaran mediante <!ENTITY

Entidades internas: abreviaturas de contenido XML que se


reemplaza en el documento:
<!DOCTYPE texto [ <!ENTITY alf Alien Life Form> ]> <texto>ALF significa: &alf;</texto>

Entidades externas analizadas: son similares, pero obtienen


el contenido de un documento, pg.web, etc.:
<! ENTITY ayuda SYSTEM http://www.servidor.com/ayuda.xml>

El lenguaje XML y su aplicacin a la Construccin de Sitios WEB


Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Declaracin de Entidades (cont.)


Entidades no analizadas: si el contenido de la entidad es un
archivo binario, el procesador XML no debe intentar interpretarlo como si fuera texto XML:
<!ENTITY logo SYSTEM http://www.servidor.com/logo.gif>

Entidades parmetro: similares a las internas, pero se


reemplazan en el DTD en lugar del documento XML:
<!DOCTYPE texto [ <!ENTITY % meta-alf <!ELEMENT alf (#PCDATA)>> %meta-alf; ]>
El lenguaje XML y su aplicacin a la Construccin de Sitios WEB
Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Ejemplo de DTD y XML


Definicin de un lenguaje de marcado para una BD de personas.
<?xml version=1.0?> <!DOCTYPE agenda [ <!ELEMENT agenda (persona+)> <!ELEMENT persona (nombre,tlf)> <!ATTLIST persona id ID #REQUIRED> <!ELEMENT nombre (#PCDATA)> <!ELEMENT tlf (#PCDATA)> ]>

El lenguaje XML y su aplicacin a la Construccin de Sitios WEB


Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Ejemplo de DTD y XML (Cont.)


<agenda> <persona id=rick> <nombre>Ricardo</nombre> <tlf>952459823</tlf> </persona> <persona id=pili> <nombre>Pilar</nombre> <tlf>957294875</tlf> </persona> </agenda>
EJERCICIO: ampliar este ejemplo para especificar relaciones de amistad.
El lenguaje XML y su aplicacin a la Construccin de Sitios WEB
Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Elegir un Parser XML


Parsers sin validacin o con validacin. Las aplicaciones que usemos incluyen sus propios parsers (MS IExplorer utiliza el parser incluido en MSXML.DLL) Parsers on-line:
http://geneura.ugr.es/~pedro/xml/progs/parserJS/
validacin
validacin validacin validacin validacin sin sin sin

http://frontier.userland.com/stories/storyReader$1092 http://www.xml.com/tools/ruwf/check.html

http://www.cogsci.ed.ac.uk/~richard/xml-check.htm
http://www.stg.brown.edu/service/xmlvalid/
El lenguaje XML y su aplicacin a la Construccin de Sitios WEB
Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza

con
con

Abril / 2002

Elegir un Parser XML


Parsers de lnea de comandos:

RXP
Disponible para Linux y Windows. Por defecto slo comprueba la sintaxis. Con validacin con la opcin V. Salida con detalles con la opcin v.
rxp s V ejemplo-sin-error.xml rxp s V ejemplo-con-error.xml

EXPAT
Disponible para Linux y Windows.
xmlwf ejemplo-sin-error.xml xmlwf ejemplo-con-error.xml

El lenguaje XML y su aplicacin a la Construccin de Sitios WEB


Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Elegir un Parser XML


Parsers de lnea de comandos (cont.):

XERCES
El que usa el proyecto Apache (Cocoon).

$ cd /home/user/xerces-c1_3_0-linux/ $ export LD_LIBRARY_PATH /home/user/xercesc1_3_0-linux/lib/ $ ./bin/SAXPrint bin/SAXPrint ejemplo-sin-error.xml $ ./bin/SAXPrint bin/SAXPrint ejemplo-con-error.xml

El lenguaje XML y su aplicacin a la Construccin de Sitios WEB


Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

Usar Perl para programar un Parser


#!/usr/bin/perl -w use strict; use XML::Parser; use Text::Wrap; use Getopt::Std; my ($indlevel,@sectnums,$parabuf,%opts); getopts('c',\%opts);

my $p=new XML::Parser(Style=>'Stream'); $p->parsefile($ARGV[0]);


sub StartTag { my ($expat,$eltype)=@_; if ($eltype eq "esquema") { $indlevel=-1; $sectnums[0]=0; $parabuf=""; } elsif ($eltype eq "secc") { ++$sectnums[++$indlevel]; $sectnums[$indlevel+1]=0; print ' ' x (4*$indlevel),join('.',@sectnums[0..$indlevel])," $_{titulo}\n"; print "\n" unless $opts{c}; } elsif ($eltype eq "para") { } else { die "invalid element: $eltype"; } }

sub Text { tr/\n/ /; s/^\s+//; s/\s+$//; return if $_ eq ""; $parabuf=$_; } sub EndTag { my ($expat,$eltype)=@_; if ($eltype eq "esquema") { } elsif ($eltype eq "secc") { --$indlevel; } elsif ($eltype eq "para") { my $ind=' ' x (4*$indlevel); print wrap($ind,$ind,$parabuf),"\n\n" unless $opts{c}; } }

El lenguaje XML y su aplicacin a la Construccin de Sitios WEB


Universidad Internacional de Andaluca / Sede Antonio Machado de Baeza
Abril / 2002

También podría gustarte