DTD Definiciones de Tipo de Documento PowerPoint PPT Presentation

presentation player overlay
1 / 23
About This Presentation
Transcript and Presenter's Notes

Title: DTD Definiciones de Tipo de Documento


1
DTDDefiniciones de Tipo de Documento
  • D. Pedro Ángel Castillo Valdivieso
  • Dpto. de Arquitectura y Tecnología de
    Computadores
  • Univ. de Granada
  • pedro_at_geneura.ugr.es

2
Definiciones de Tipo de Documento
  • Los DTD se desarrollaron para ser utilizados con
    SGML.
  • Son un conjunto de reglas sintácticas para
    definir etiquetas.
  • 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
  • lt?xml encondigUTF-8?gt
  • lt!ELEMENT listado (elemento)gt
  • lt!ELEMENT elemento (PCDATA)gt
  • 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.

3
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 localización de éstas cuando son
    creadas.
  • lt?xml version1.0?gt
  • ltlibrogt
  • lttitulogt...lt/titulogt
  • lttextogt......lt/textogt
  • lt/librogt
  • Una aplicación XML necesita que el comienzo y fin
    de todas las etiquetas y la presencia de
    elementos vacíos sea no ambigua.

libro
titulo
texto
4
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
  • lt?xml version1.0 standaloneyes?gt
  • Todas las etiquetas deben estar balanceadas.
  • Todos los valores de los atributos deben ir
    entrecomillados.
  • Un elemento vacío debe terminar con /gt o hacerlo
    no vacío
  • ltimg srcfichero.gif/gt
  • ltimg srcfichero.gifgtlt/imggt
  • Si no se usa DTD, los atributos de etiquetas
    deben ser del tipo CDATA.

5
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
  • lt?xml version1.0 encodingUTF-7?gt
  • lt!DOCTYPE libro SYSTEM http//www.host.dom/libro.
    dtdgt
  • ltlibrogt
  • ....
  • lt/librogt
  • La definición para ese tipo de documento debe ser
    accesible para la aplicación XML
  • localmente lt!DOCTYPE libro SYSTEM libro.dtdgt
  • descargándola de la red

6
Definiciones de Tipo de Documento
  • La DTD puede estar en fichero externo o en el
    mismo XML
  • lt?xml version1.0 encodingUTF-7?gt
  • lt!DOCTYPE etiqueta
  • lt!ELEMENT etiqueta (nombre,direccion)gt
  • lt!ELEMENT nombre (PCDATA)gt
  • lt!ELEMENT direccion (PCDATA)gt
  • gt
  • ltetiquetagt
  • ltnombregtJuliolt/nombregt
  • ltdirecciongtJerez de la Fronteralt/direcciongt
  • lt/etiquetagt
  • La declaración empieza con lt!DOCTYPE raiz y
    termina con gt
  • Las etiquetas (y su contenido) se definen con
    lt!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
Declaraciones de Tipo de Documento
  • Las etiquetas utilizadas deben ajustarse a las
    reglas dadas en el DTD para que el XML sea
    válido.
  • Las declaraciones empiezan por lt!ELEMENT seguidas
    por el identificador de la etiqueta declarada y
    la especificación del contenido
  • lt!ELEMENT etiqueta (titulo,ingredientes,procedimie
    nto)gt
  • lt!ELEMENT titulo (PCDATA)gt
  • ........
  • Ejemplo válido Ejemplo no válido
  • ltrecetagt ltrecetagt
  • lttitulogttitulolt/titulogt lttitulogttitulolt/titulogt
  • ltingredientesgtcosaslt/ingredientesgt
    ltingredientesgtcosaslt/ingredientesgt
  • ltprocedimientogtpasoslt/procedimientogt
    ltprocedimientogtpasoslt/procedimientogt
  • lt/recetagt ltadvertenciasgttextolt/advertenciasgt
  • lt/recetagt

8
Declaraciones de Tipo de Documento
  • Tipos de contenido
  • EMPTY
  • Etiquetas que se cierran en la misma apertura. La
    información la tienen en forma de atributos
  • lt!ELEMENT br EMPTYgt
  • ltbr/gt
  • ANY
  • La etiqueta puede tener cualquier contenido
    (texto o cualquier elemento)
  • lt!ELEMENT batiburrillo ANYgt

9
Declaraciones de Tipo de Documento
  • Tipos de contenido (cont.)
  • Mixed
  • La etiqueta puede tener texto u otras etiquetas
    (según la especificación)
  • lt!ELEMENT texto (PCDATAparrafo)gt
  • Element
  • Sólo contendrá aquellas etiquetas especificadas
  • lt!ELEMENT mensaje (remite,destinatario,texto)gt

EJERCICIO un DTD y XML para describir email
10
Modelos de Contenido
  • Son patrones que especifican el orden de
    definición de etiquetas.
  • Sencillo uno que tenga texto o un solo tipo de
    elemento
  • lt!ELEMENT aviso (parrafo)gt
  • lt!ELEMENT parrafo (PCDATA)gt
  • Secuencia usando la coma , se especifica qué
    etiqueta va detrás de otra
  • lt!ELEMENT aviso (titulo,parrafo)gt
  • Opción usando la se dan las etiquetas que
    puede contener otra dada (son opciones
    excluyentes)
  • lt!ELEMENT aviso (parrafoimagen)gt

11
Modelos de Contenido (cont.)
  • Agrupación usando los paréntesis ()
  • Frecuencia
  • ? Opcional (0 ó 1 vez)
  • Opcional (0 ó más veces)
  • lt!ELEMENT aviso (titulo?,(parrafo,grafico))gt
  • necesario y repetible (1 ó más veces)

EJERCICIO un DTD y XML para describir artículos
12
Declaración de Atributos
  • Los atributos añaden información adicional a las
    etiquetas.
  • Comienza con lt!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
  • lt!ELEMENT mensaje (de,a,texto)gt
  • lt!ATTLIST mensaje prioridad (normalurgente)
    normalgt

13
Declaración de Atributos (cont.)
  • Obligatorio con REQUIRED , no toma valor por
    defecto ya que hay que especificarlo
  • lt!ELEMENT texto (PCDATA)gt
  • lt!ATTLIST texto idioma CDATA REQUIREDgt
  • Opcional sin valor por defecto con IMPLIED ,
    si no se especifica no toma un valor por defecto
  • lt!ELEMENT img EMPTYgt
  • lt!ATTLIST img url CDATA REQUIRED alt CDATA
    IMPLIEDgt

EJERCICIO un DTD y XML para describir mensajes
14
Tipos de Atributos
  • CDATA puede contener cualquier carácter
  • lt!ATTLIST mensaje fecha CDATA REQUIREDgt
  • ltmensaje fecha15 de julio de 2000gt
  • NMTOKEN sólo acepta letras, números, puntos,
    guiones, subrayados y los dos puntos
  • lt!ATTLIST mensaje fecha NMTOKEN REQUIREDgt
  • ltmensaje fecha15-7-2000gt
  • Enumerados y notaciones sólo acepta un valor de
    entre los dados como opciones
  • lt!ATTLIST mensaje prioridad (normalurgente)
    normalgt

15
Tipos de Atributos (cont.)
  • Notaciones el valor se debe ajustar a una
    notación declarada
  • lt!NOTATION HTML SYSTEM http//www.w3.org/Markupgt
  • lt!ATTLIST mensaje fecha NOTATION
    (ISO-DATEEUROPEAN-DATE) REQUIREDgt
  • ID e IDREF ID asigna un identificador único que
    será referenciado por un atributo de tipo IDREF
  • lt!ELEMENT enlace (PCDATA)gt
  • lt!ATTLIST enlace apuntador IDREF REQUIREDgt
  • lt!ELEMENT capitulo (parrafo)gt
  • lt!ATTLIST capitulo identificador ID IMPLIEDgt

16
Declaración de Entidades
  • Se usan para referenciar a imágenes, pág.webs,
    ficheros, etc.
  • Se declaran mediante lt!ENTITY
  • Entidades internas abreviaturas de contenido XML
    que se reemplaza en el documento
  • lt!DOCTYPE texto
  • lt!ENTITY alf Alien Life Formgt gt
  • lttextogtALF significa alflt/textogt
  • Entidades externas analizadas son similares,
    pero obtienen el contenido de un documento,
    pág.web, etc.
  • lt! ENTITY ayuda SYSTEM http//www.servidor.com/ay
    uda.xmlgt

17
Declaración 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
  • lt!ENTITY logo SYSTEM http//www.servidor.com/logo
    .gifgt
  • Entidades parámetro similares a las internas,
    pero se reemplazan en el DTD en lugar del
    documento XML
  • lt!DOCTYPE texto
  • lt!ENTITY meta-alf lt!ELEMENT alf
    (PCDATA)gtgt
  • meta-alf
  • gt

18
Ejemplo de DTD y XML
  • Definición de un lenguaje de marcado para una BD
    de personas.
  • lt?xml version1.0?gt
  • lt!DOCTYPE agenda
  • lt!ELEMENT agenda (persona)gt
  • lt!ELEMENT persona (nombre,tlf)gt
  • lt!ATTLIST persona id ID REQUIREDgt
  • lt!ELEMENT nombre (PCDATA)gt
  • lt!ELEMENT tlf (PCDATA)gt
  • gt

19
Ejemplo de DTD y XML (Cont.)
  • ltagendagt
  • ltpersona idrickgt
  • ltnombregtRicardolt/nombregt
  • lttlfgt952459823lt/tlfgt
  • lt/personagt
  • ltpersona idpiligt
  • ltnombregtPilarlt/nombregt
  • lttlfgt957294875lt/tlfgt
  • lt/personagt
  • lt/agendagt

EJERCICIO ampliar este ejemplo para
especificar relaciones de amistad.
20
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/
    sin validación
  • http//frontier.userland.com/stories/storyReader1
    092 sin validación
  • http//www.xml.com/tools/ruwf/check.html sin
    validación
  • http//www.cogsci.ed.ac.uk/richard/xml-check.htm
    con validación
  • http//www.stg.brown.edu/service/xmlvalid/ con
    validación

21
Elegir un Parser XML
  • Parsers de línea de comandos
  • RXP
  • Disponible para Linux y Windows. Por defecto sólo
    comprueba la sintaxis. Con validación con la
    opción V. Salida con detalles con la opción 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

22
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.xm
    l
  • ./bin/SAXPrint bin/SAXPrint ejemplo-con-error.xm
    l

23
Usar Perl para programar un Parser
!/usr/bin/perl -w use strict use
XMLParser use TextWrap use GetoptStd my
(indlevel,_at_sectnums,parabuf,opts) getopts('c',
\opts) my pnew XMLParser(Stylegt'Stream')
p-gtparsefile(ARGV0) sub StartTag my
(expat,eltype)_at__ if (eltype eq "esquema")
indlevel-1 sectnums00
parabuf"" elsif (eltype eq "secc")
sectnumsindlevel sectnumsindlevel
10 print ' ' x (4indlevel),join('.',_at_sect
nums0..indlevel)," _titulo\n" print
"\n" unless optsc 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)_at__ if (eltype eq
"esquema") elsif (eltype eq "secc")
--indlevel elsif (eltype eq "para")
my ind' ' x (4indlevel) print
wrap(ind,ind,parabuf),"\n\n" unless optsc
Write a Comment
User Comments (0)
About PowerShow.com