Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porIsabell Rigor Modificado hace 9 años
1
Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · www.captiva.es Modelos de documento (DTD)
2
Introducción Freeform XML Cualquier XML bien escrito ¿Cómo restringimos “estructura” y formato de nuestra aplicación XML? ¿Cómo verificamos la gramática y vocabulario del documento? Modelado de documentos Alternativas para el modelado DTD (Document Type Definition) Schema (XMLSchema)
3
Introducción (II) Modelo Documento especial para describir lenguajes (aplicaciones) XML Qué define un modelo Qué elementos y atributos puede contener “Gramática del documento”. P.e. un elemento sólo puede contener elementos Validación XML válido que se adhiere a un modelo
4
¿Cuándo necesitamos un modelo? Casos de interés Documento XML Datos orientados a máquinas en vez de personas Campos obligatorios El modelo asegura que esos campos están presentes Ayuda a programas de edición WYSIWYG Presentan automáticamente campos a rellenar del documento Forma sencilla de crear un estándar Reutilización de trabajo anterior P.e. Docbook usa formato tablas de CALS
5
Validación de un doc Documento validado incluye document type declaration que apunta a un DTD en prólogo Localización del DTD SYSTEM Indica una URL o fichero del sistema Public ID Localización de DTDs públicos (p.e. estándares) Especifican un ID Catálogo (espec OASIS) resuelve URL Necesitamos definir documento DTD (Document Type Definition). persona.dtd Sintáxis no XML Heradado de SGML Limitaciones XML Schema
6
Validación de un doc (II) Ejemplo de DTD (persona.dtd): ¿Qué describe este documento? 6 elementos válidos Declaración de elementos No es necesario aunque aconsejable 1 declaración por línea Parentesco identidad y profesion hijos de persona nombre, apellido1 y apellido2 hijos de identidad Cardinalidad Uno y sólo un elemento identidad por persona Cero o varios elementos profesion por persona (*) Orden identidad debe preceder a profesion identidad debe contener en este orden a nombre apellido1 apellido2 Contenido Algunos nodos pueden contener hijos Otros pueden contener datos #PCDATA (Printable Character Data)
7
Validación de un doc (III) Ejemplo de archivo válido (persona.xml): Ejemplo de archivos inválidos (persona-invalido1.xml y persona-invalido2.xml)
8
Validación de un doc (IV) Orden de declaración de elementos en DTD no es importante Ejemplo de DTD alternativo (persona2.dtd):
9
Validación de un doc (V) Validación online http://www.stg.brown.edu/service/xmlvalid/ http://www.stg.brown.edu/service/xmlvalid/ Validación local Jedit XML Cooktop
10
Estructura de un DTD Partes Prólogo No es obligatorio Similar a la de un documento XML Declaraciones Elementos Atributos Entidades Notaciones Datos en bruto
11
Declaración de elementos Partes Tipos de modelos de contenido Elementos vacíos Elementos sin restricciones de contenido Elementos que contienen sólo caracteres de datos Elementos que contienen elementos Elementos con contenido mixto
12
Declaración de elementos (II) Modificadores para modelos de contenido SimboloSignificadoEjemplo,Secuencia de elementos (AND)elem1, elem2 elem2 debe seguir a elem1 |Alternativas (OR)elem1 | elem2 | elem3 Debe haber ó elem1 ó elem2 ó elem3 (contenido)Agrupa contenido(A | B), C A ó B debe preceder a C A | (B | C) A precede a B ó C ?Se permiten 0 o un elementos de este tipo elemento ? Puede haber un elemento o ninguno +Se permiten uno o más elementos de este tipo elemento + Puede haber uno o mas elemento seguidos *Se permiten 0 o más elementos de este tipo elemento * Puede haber 0,1,2,… elemento consecutivos
13
Declaración de elementos (III) Ejemplo Análisis titulo Debe haber sólo un elemento y ser el primer hijo de articulo subtitulo Es opcional y si existe debe ir después de titulo autor Es opcional y puede haber cualquier número. Debe ir después del titulo y subtitulo Texto Puede estar compuesto por elementos e tipo parrafo, tabla o lista en cualquier número. Debe haber como mínimo uno de estos elementos bibliografia Opcional y debe ser el último hijo de articulo.
14
Declaración de elementos (IV) Elementos con contenido mezclado Ejemplo DTD completo (articulo.dtd):
15
Declaración de elementos (V) Instancia de articulo invalida (articulo-invalido.xml) Ejercicio opcional: Modificar DTD para que sea válido.
16
Declaración de elementos (V) Instancia de articulo valida (articulo.xml)
17
Declaración de atributos Un documento debe declarar todos los atributos posibles, no sólo los elementos Formato Ejemplo Atributo “source” para elemento “image” contiene CDATA (cualquier carácter) y es obligatorio (#REQUIRED). <!ATTLIST > nombre_atrib1 tipo_atrib1 desc_atrib1 elemento nombre_atrib2 tipo_atrib2 desc_atrib2
18
Declaración de atributos (II) Tipos de atributos posibles CDATA NMTOKEN NMTOKENS Enumeración ID IDREF IDREFS ENTITY ENTITIES NOTATION
19
Declaración de atributos (III) Atributo tipo CDATA (character data) Tipo de atributo más general Acepta cualquier carácter XML válido Permite el uso de ENTITIES de carácter y generales Uso: Atributos válidos:
20
Declaración de atributos (IV) Atributo tipo NMTOKEN (name token) Cadena con restricciones similares a nombre de elemento (aunque puede comenzar por número o un punto) Uso: Atributos válidos: serial=“aeiou” serial=“12.12” serial=“v3.3-5” serial=“fichero.txt”
21
Declaración de atributos (V) Atributo tipo NMTOKENS Lista de NMTOKEN separada por espacios Uso: Atributos válidos: palabras_clave=“perro gato gallo” palabras_clave=“texto.txt texto.doc texto.pdf” palabras_clave=“11-2-2005 11-3-2006”
22
Declaración de atributos (VI) Atributo tipo enumeración En realidad es un conjunto de valores válido Se separan los valores con ‘|’ Uso: Ejemplos:
23
Declaración de atributos (VII) Atributo tipo ID (identificador único) Nombre XML que ha de ser único para todos los atributos ID del documento Sirve para identificar unívocamente un elemento del documento Sólo puede haber un atributo de este tipo por elemento Uso: Atributos válidos: dni=“_32232238S” Atributos inválidos: dni=“32232238S”
24
Declaración de atributos (VIII) Atributo tipo IDREF (referencia a identificador) Igual que ID solo que referencia al ID de otro elemento Si no existen ningún elemento con el ID indicado daría error Uso: Atributo tipo IDREFS Lista de IDREF separada por espacios Uso:
25
Declaración de atributos (IX) Atributo tipo ENTITY (nombre de entidad) Acepta como valor el nombre de una entidad definida en el DTD Uso: Atributos válidos: Atributo tipo ENTITIES Lista de entidades separada por espacios Uso: Atributos válidos:
26
Declaración de atributos (X) Atributo tipo NOTATION Contiene el nombre de una notación definida en el DTD Declaración de notaciones: Uso:
27
Declaración de atributos (XI) Descripciones de atributo Tras el tipo de atributo se ha de especificar una de las siguientes descripciones #IMPLIED El atributo es opcional. No se le asigna ningún valor por defecto #REQUIRED El atributo es obligatorio #FIXED Se le asigna un valor fijo al atributo incluso si no se especifica. Si se especifica ha de darle este valor. Literal Valor por defecto para un atributo
28
Declaración de entidades Tipos de declaraciones de entidades Entidad general Sirve para substituir texto. Referencia &saludo; Entidad general externa Contiene texto de una fuente externa. Entidad externa nonparsed El contenido externo no tiene por qué ser XML. Puede ser datos binarios incluso. gif es una referencia a NOTATION definida en algún lado
29
Declaración de entidades (II) Tipos de declaraciones de entidades (II) Entidad parámetro Substitución para texto de DTD La referencia a la entidad se haría con %textoparrafo; Especie de MACROS para DTDs Entidad parámetro externa Igual que la anterior pero hace referencia a DTD o trozo de DTD residente en fichero externo La referencia %tablas;
30
Declaración de entidades (III) Modularización de DTDs Entidad parámetro externas Permiten importar ficheros Entidad parámetro pueden redefinirse. Tiene más prioridad última definición Permite adaptar entidades incluidas a través de entidades parámetro externa Inclusión condicional <![CONDICION[ ]]> Si CONDICION == “INCLUDE” se incluye el fragmento de DTD Si CONDICION == “IGNORE” no se incluye
31
Declaración de entidades (IV) Modularización de DTDs (II) Ejemplo: Fichero casas.dtd Fichero miscasas.dtd %fich_casas; <[ %condicion; [ <!-- Al ser condicion == “INCLUDE” se redefine elemento casa --> ]]>
32
Internal subset Zona dentro de documento XML para definir elementos de DTD <!DOCTYPE persona SYSTEM “/dtds/persona.dtd” [ ]> El internat subset tiene más prioridad que el external subset (el fichero DTD especificado con DOCTYPE) Útil para redefinir elementos de un DTD genérico sólo para la instancia dada de XML
33
Internal subset Zona dentro de documento XML para definir elementos de DTD <!DOCTYPE persona SYSTEM “/dtds/persona.dtd” [ ]> El internal subset tiene más prioridad que el external subset (el fichero DTD especificado con DOCTYPE) Útil para redefinir elementos de un DTD genérico sólo para la instancia dada de XML
34
Ejemplo I: Articulo Fichero (articulo- completo.dtd) Se ha incorporado ENTITIES Incorporamos atributos a algunos elementos
35
Ejemplo I: Articulo (II) Fichero (articulo- completo.xml) Definimos dos Unparsed Entities para indicar las imágenes a usar como elemento de listas Incorporamos referencias cruzadas entre y de bibliografía
36
Otros ejemplos Estándar XHTML 1.0 Strict Directorio ‘xhtml’ dentro de prácticas http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd Fichero xhtml1-strict.dtd en directorio Ejemplos de ficheros XHTML ejemplo_local_novalidable.html ejemplo_publico_invalido.html ejemplo_publico_validado.html
37
Ejercicio Coger casino.xml de 2º capítulo Crear DTD, teniendo en cuenta las limitaciones Puede haber 0,1 o más mesas de juego Se definirán las siguientes ENTITIES al comienzo del DTD: %juegos %palos %palo_por_defecto Los juegos posibles son: “brisca”, “tute”, “poker” Cada mesa debe tener como mínimo un jugador Cada jugador debe tener al menos una carta El jugador puede tener o no nombre Las cartas han de ser de los palos: “oros”, “copas”, “espadas” ó “bastos”, no siendo obligatorio indicarlo. Por defecto será de tipo “oros” Segunda parte Añadir un identificador único “dni” para cada jugador Añadir un juego más posible: “sieteymedia”
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.