Post on 30-Oct-2015
transcript
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 1/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEB
Universidad Internacional de Andalucía / Sede Antonio M achado de Baeza
Abril / 2002
DTD
Definiciones de Tipo deDocumento
D. Pedro Ángel Castillo ValdiviesoDpto. de Arquitectura y Tecnología de ComputadoresUniv. de Granada
pedro@geneura.ugr.es
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 2/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Los DTD se desarrollaron para ser utilizados con SGML.Son un conjunto de reglas sintácticas para definiretiquetas.Indica cuáles se pueden usar en un documento,aparecer dentro de otras, cuáles 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 además puede definir tipos de datos.
Definiciones de Tipo de Documento
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 3/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Definiciones de Tipo de Documento
SGML utiliza DTD para describir las etiquetas de undocumento.Los documentos XML podemos utilizarlos con o sin DTD:Un documento sin DTD define las etiquetas por la
existencia y localización de éstas cuando son creadas.<?xml version=“1.0”?> <libro><titulo>...</titulo><texto>......</texto>
</libro>Una aplicación XML necesita que el comienzo y fin de todas
las etiquetas y la presencia de elementos vacíos sea noambigua.
libro
titulo texto
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 4/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 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
declaración 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 vacío debe terminar con /> o hacerlo no
vacío:<img src=“fichero.gif”/> <img src=“fichero.gif”></img>
Si no se usa DTD, los atributos de etiquetas deben serdel tipo #CDATA.
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 5/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Definiciones de Tipo de Documento
Los documentos XML válidos tienen un DTD asociado.Deben ser documentos bien formados y comenzar con la
declaración de tipo de documento:<?xml version=“1.0” encoding=“UTF-7”?>
<!DOCTYPE libro SYSTEM “http://www.host.dom/libro.dtd”> <libro>....</libro>
La definición para ese tipo de documento debe ser
accesible para la aplicación XML: localmente <!DOCTYPE libro SYSTEM “libro.dtd”>
descargándola de la red
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 6/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 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>
La declaración empieza con <!DOCTYPE raiz [ y termina con ]>
Las etiquetas (y su contenido) se definen con <!ELEMENT
Utilizaremos esta
forma ya que son
ejemplos simples
• ejemplo de las tarjetas
• ejemplo de los artículos
• EJERCICIO: un DTD
para describir coches.
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 7/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Declaraciones de Tipo de Documento
Las etiquetas utilizadas deben ajustarse a las reglas dadas en elDTD para que el XML sea válido.Las declaraciones empiezan por <!ELEMENT seguidas por el
identificador de la etiqueta declarada y la especificación delcontenido:
<!ELEMENT etiqueta (titulo,ingredientes,procedimiento)><!ELEMENT titulo (#PCDATA)>........
Ejemplo válido: Ejemplo no válido: <receta> <receta>
<titulo>titulo</ titulo> <titulo>titulo </titulo><ingredientes>cosas </ingredientes> <ingredientes>cosas </ingredientes><procedimiento>pasos </procedimiento> <procedimiento>pasos </procedimiento></receta> <advertencias>texto </advertencias>
</receta>
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 8/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Declaraciones de Tipo de Documento
Tipos de contenido: EMPTY
Etiquetas que se cierran en la misma apertura. La información latienen en forma de atributos:
<!ELEMENT br EMPTY><br/>
ANY
La etiqueta puede tener cualquier contenido (texto o cualquier
elemento): <!ELEMENT batiburrillo ANY>
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 9/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Declaraciones de Tipo de Documento
Tipos de contenido (cont.):
Mixed
La etiqueta puede tener texto u otras etiquetas (según la
especificación): <!ELEMENT texto (#PCDATA|parrafo)>
Element
Sólo contendrá aquellas etiquetas especificadas:
<!ELEMENT mensaje (remite,destinatario,texto)>
EJERCICIO: un DTD y
XML para describir email
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 10/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Modelos de Contenido
Son patrones que especifican el orden de definición deetiquetas. Sencillo : uno que tenga texto o un solo tipo de elemento:
<!ELEMENT aviso (parrafo)><!ELEMENT parrafo (#PCDATA)>
Secuencia : usando la coma “ ,” se especifica qué etiquetava detrás de otra:
<!ELEMENT aviso (titulo,parrafo)>
Opción : usando la “|” se dan las etiquetas que puede
contener otra dada (son opciones excluyentes): <!ELEMENT aviso (parrafo|imagen)>
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 11/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Modelos de Contenido (cont.)
Agrupación usando los paréntesis “()”
Frecuencia :? Opcional (0 ó 1 vez)
* Opcional (0 ó más veces) <!ELEMENT aviso (titulo?,(parrafo*,grafico)+)>+ necesario y repetible (1 ó más veces)
EJERCICIO: un DTD y
XML para describir artículos
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 12/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Declaración de Atributos
Los atributos añaden información adicional a lasetiquetas.
Comienza con <!ATTLIST, seguido del elemento al quese aplica, el nombre del atributo, el tipo de datos yel valor por defecto.
Opcional con valor por defecto : debe tomar unvalor dado en la lista de opciones, pero si seomite, toma el valor por defecto:
<!ELEMENT mensaje (de,a,texto)><!ATTLIST mensaje prioridad (normal|urgente) normal>
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 13/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Declaración de Atributos (cont.) Obligatorio : con #REQUIRED , no toma valor por defecto yaque hay que especificarlo:
<!ELEMENT texto (#PCDATA)><!ATTLIST texto idioma CDATA #REQUIRED>
Opcional sin valor por defecto : con#IMPLIED
, si no seespecifica 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
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 14/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Tipos de Atributos
CDATA: puede contener cualquier carácter: <!ATTLIST mensaje fecha CDATA #REQUIRED><mensaje fecha=“15 de julio de 2000”>
NMTOKEN : sólo acepta letras, números, puntos,guiones, subrayados y los dos puntos:
<!ATTLIST mensaje fecha NMTOKEN #REQUIRED><mensaje fecha=“15-7-2000”>
Enumerados y notaciones : sólo acepta un valor
de entre los dados como opciones: <!ATTLIST mensaje prioridad (normal|urgente) normal>
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 15/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Tipos de Atributos (cont.) Notaciones : el valor se debe ajustar a unanotación declarada :
<!NOTATION HTML SYSTEM “http://www.w3.org/Markup”> <!ATTLIST mensaje fecha NOTATION (ISO-DATE|EUROPEAN-DATE)
#REQUIRED>
ID e IDREF : ID asigna un identificador único queserá referenciado por un atributo de tipo IDREF:
<!ELEMENT enlace (#PCDATA)><!ATTLIST enlace apuntador IDREF #REQUIRED>
<!ELEMENT capitulo (parrafo*)><!ATTLIST capitulo identificador ID #IMPLIED>
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 16/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Declaración de Entidades
Se usan para referenciar a imágenes, pág.webs, ficheros, etc.Se declaran mediante <!ENTITY
Entidades internas : abreviaturas de contenido XML que sereemplaza en el documento:
<!DOCTYPE texto [<!ENTITY alf “Alien Life Form”> ]> <texto>ALF significa: &alf;</texto>
Entidades externas analizadas : son similares, pero obtienenel contenido de un documento, pág.web, etc.:
<! ENTITY ayuda SYSTEM “http://www.servidor.com/ayuda.xml”>
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 17/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Declaración de Entidades (cont.)
Entidades no analizadas : si el contenido de la entidad es unarchivo binario, el procesador XML no debe intentar interpretarlocomo si fuera texto XML:
<!ENTITY logo SYSTEM “http://www.servidor.com/logo.gif”>
Entidades parámetro : similares a las internas, pero sereemplazan en el DTD en lugar del documento XML:
<!DOCTYPE texto [<!ENTITY % meta-alf “<!ELEMENT alf (#PCDATA)>”> %meta-alf;
] >
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 18/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Ejemplo de DTD y XML
Definición de un lenguaje de marcado para una BD depersonas.
<?xml version=“1.0”?>
<!DOCTYPE agenda [<!ELEMENT agenda (persona+)><!ELEMENT persona (nombre,tlf)><!ATTLIST persona id ID #REQUIRED><!ELEMENT nombre (#PCDATA)>
<!ELEMENT tlf (#PCDATA)>]>
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 19/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 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.
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 20/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Elegir un Parser XML
Parsers sin validación o con validación.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/ sinvalidación
http://frontier.userland.com/stories/storyReader$1092 sinvalidación
http://www.xml.com/tools/ruwf/check.html sin
validaciónhttp://www.cogsci.ed.ac.uk/~richard/xml-check.htm con
validaciónhttp://www.stg.brown.edu/service/xmlvalid/ con
validación
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 21/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Elegir un Parser XML
Parsers de línea de comandos :RXP
Disponible para Linux y Windows. Por defecto sólocomprueba la sintaxis. Con validación con la opción – V.
Salida con detalles con la opción –v.rxp –s – V ejemplo-sin-error.xmlrxp –s – V ejemplo-con-error.xml
EXPAT
Disponible para Linux y Windows. xmlwf ejemplo-sin-error.xmlxmlwf ejemplo-con-error.xml
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 22/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Elegir un Parser XML
Parsers de línea 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/xerces-
c1_3_0-linux/lib/
$ ./bin/SAXPrint bin/SAXPrint ejemplo-sin-error.xml$ ./bin/SAXPrint bin/SAXPrint ejemplo-con-error.xml
7/16/2019 XML Dtd Pedro
http://slidepdf.com/reader/full/xml-dtd-pedro 23/23
El lenguaje XML y su aplicación a la Construcción de Sitios WEBUniversidad Internacional de Andalucía / Sede Antonio M achado de BaezaAbril / 2002
Usar Perl para programar un Parser#!/usr/bin/perl -wuse 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};
}}