Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · www.captiva.es Modelos de documento (Schema)

Slides:



Advertisements
Presentaciones similares
Diseño de Bases de Datos
Advertisements

Lunes 18 de Febrero 2008 Material para la clase: Elprofe3.wordpress.com.
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
BASE DE DATOS OBJETO RELACIONAL
Uso de variables de tipo valor
MANEJO DE DOCUMENTOS XML EN MHP Leire Urriza Oiz.
RECURSOS INTERACTIVOS. Cualificaciones_ NIVELES Permite añadir una definición clara, pública y personalizada de los criterios de calificación para aplicarlos.
Sesión 2 Diseño de Vocabularios XML
XML y Servicios Web David Salgado MVP C#
Curso: XML, de los datos a la presentación CAPTIVA ·
Tema: Técnicas Básicas Excel (III) Trucos, opciones y personalización de Excel Índice: 1 Vínculos absolutos y relativos, conectando datos de Excel con.
DISEÑO Y GESTIÓN DE BASES DE DATOS Luciano H. Tamargo Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca INTRODUCCIÓN.
Introducción a XML Departamento de Lenguajes y Sistemas Informáticos
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Teoría de lenguajes y compiladores
MODELO RELACIONAL.
Desarrollo Orientado a Objetos con UML
WSDL & UDDI Taller de Sistemas de Información 1
HERENCIA.
Tema 4: Estructura de documentos XML, W3C Esquemas
ESPECIFICACIÓN XML 1.0 Alberto Gimeno Arnal

POO Java Módulo 3 Elementos de programas Identificadores
SESIÓN 2. Completados por el tipo de objeto sobre el que actúan y el objeto concreto: CREATE DATABASE mibase ; Permite crear una base de datos llamada.
Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · XSLT.
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Departamento de Informática
LENGUAJE “C” Programación.
Semana 5 Subprogramas..
Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · XPath.
Espacios de nombres de XML (Namespaces)
XML DEFINICIÓN DE ESQUEMAS
Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · Modelos de documento (DTD)
Título Características y elementos fundamentales J.M. Morales-del-Castillo.
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
DOCUMENT TYPE DEFINITION DTD
Características y elementos fundamentales J.M. Morales-del-Castillo
Definition Type Document (DTD)
 El primer navegador Web incluía un lenguaje de estilo interno que utilizaba dicho navegador para mostrar las páginas HTML.  Sin embargo estos primeros.
Variables y Shapes. Variables ► Lugares de la memoria que reciben un nombre ► En VB no es necesario declarar las variables  A=8 ► Se declaran con Dim.
Informática Ingeniería en Electrónica y Automática Industrial
Sesión 2 Tablas Propiedades de los campos. Sesión 2 Borrar el contenido del directorio Mis documentos.
PUNTEROS Ing Anghello Quintero.
Asignación de Espacio No Contiguo
Sesión 2 Tablas Propiedades de los campos. Sesión 2 Borrar el contenido del directorio Mis documentos.
Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · Introducción al mundo XML.
RESTRICCIONES Ing. Carolina Moreno Departamento de Sistemas Facultad de Electrónica y Telecomunicaciones Universidad del Cauca.
APRENDIZ: SANDRA L. CAICEDO C. ORDEN: 20194
Programación en C para electrónicos
Tema 2: Base de datos relacionales
XML (Extensible Markup Language) Kostadin Koruchev Es necesario utilizar el soporte que acompaña estos apuntes.
ACCESS.
Sesión 2 Tablas Propiedades de los campos. Sesión 2 Borrar el contenido del directorio Mis documentos.
XML. La vida antes de XML ► Comunicación ► Persistencia ► Armado de Documentos.
Tema 3: Estructura de los documentos XML, DTD Ricardo Eíto Brun Sevilla, de octubre 2002.
Restricciones de Integridad
Mapeo de Estructuras XML a Bases de Datos Relacionales
2000.Nov.17 Introducción a Schema Erich Bühler
ACCESS  Para los campos Texto, esta propiedad determina el número máximo de caracteres que se pueden introducir en el campo. Siendo por defecto.
Aplicaciones para la Administración de Negocios
Marco de Trabajo para Indexación, Clasificación y Recopilación Automática de Documentos Digitales Javier Caicedo Espinoza Gonzalo Parra Chico.
Clases “ Es una Abstracción de un elemento del mundo real ”
/20 1 Registro e Identificadores Alejandra Sánchez Maganto.
GML Geography Markup Language
CURSO DE FORMACIÓN AL PORTAL WEB DE LA UNIVERSIDAD CARLOS III DE MADRID ORACLE PORTAL Manual disponible en:
LENGUAJES DE MARCAS Y SISTEMAS DE GESTIÓN DE INFORMACIÓN Bloque XML: UD4: espacios de nombres.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Introducción a programación web Martin Esses. En las presentaciones anteriores, vimos como enviar datos a un controlador usando POST y como generar formularios.
Transcripción de la presentación:

Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · Modelos de documento (Schema)

Introducción  XML Schema  Descripción formal de un documento XML en XML  El más utilizado  W3C XML Schema  Otros  Relax NG, Schematron  Un XML documento que cumple con schema  instancia  Métodos para asociar instancia a schema  Atributo xsi:schemaLocation lista de namespaces y schema para cada uno  Atributo xsi:noNamespaceSchemaLocation schema para elementos sin namespace  Otros  prefijándoselo al parser, etc.

Introducción (II)  Schema vs DTD  Tipos de datos simples y complejos (en DTD  PCDATA) para contenido y atributos  Derivación y herencia de tipos  Declaración de elementos y atributos sensibles al namespace  Schema no dispone de ENTITIES  Más sencillo en DTD. Alternativa Xinclude  Namespaces  Especificación posterior a XML 1.0  No soportado por DTDs  Uso  Reutilización de nombres para diferentes contextos. P.e. Kiko  Nombre de persona, equipo, etc.  Los schemas combinan nombre con namespace

Principios  Ejemplo de XML (direccion.xml): <nombre xmlns:xsi=" xsi:noNamespaceSchemaLocation="direccion-schema.xsd"> Don Pimpón  Ejemplo de Schema (direccion-schema.xsd):  Significado:  El documento contiene elemento y admite contenido de tipo xs:string (xs  namespace del propio schema).  noNamespaceSchemaLocation  No hemos definido un namespace para nombre. Requiere hacer referencia al ns que lo define

Principios (II)  Cómo validamos nuestros ejemplos:  Editores  Jedit, Cooktop  Validadores  MSV (MultiSchemaValidator), XSV  Organización del documento  Elemento raíz   Hijo de elemento raíz  Definición de elementos raíz para instancias XML  Anotaciones  Elementos orientados a documentación del schema   A su vez contiene  (hombres) ó (máquinas, p.e. ayuda contextual)  Ejemplo Ejemplo de XML schema para curso XML (c) 2005 Captiva Soluciones y Seguridad S.L.

Principios (III)  Declaración de elementos  Formato  Tipos de contenidos  Simples  Tipos predefinidos  Complejos  Tipos definidos por el usuario

Principios (IV) TipoDescripción stringCadena unicode normalizedStringCadena con tabuladores y cambios de linea normalizados a espacios tokenIgual que anterior pero con multiples espacios substituidos por uno único y eliminados los iniciales y finales NameNombre XML languageMismo valor que atributo xml:lang. P.e.: en, es-es anyURIURI booleantrue | false | 0 | 1 byte127 = -128 integerNúmero entero positivo o negativo decimalNumero flotante de precisión arbitraria base64BinaryDatos binarios codificados Base64 dateTimeFecha y hora durationCantidad de tiempo relativa en años, días, meses, etc. ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATION, NMTOKEN, NMTOKENS Igual que XML DTD 1.0 Algunos tipos básicos

Principios (V)  Declaración de atributos  Siempre son tipos básicos  no pueden contener elementos  Pega  Un elemento de tipo básico no puede tener atributos  Se declaran mediante:  Posible definir atributos “globales” o locales a la definición de “complexType” de un elemento  Ejemplo

Principios (VI)  Grupos de atributos  DTDs  Parameter entities  Definición de un xs:attributeGroup global identificado por id único name  Dentro del complex type se hace referencia al attributeGroup  Ejemplo:...

Namespaces  Un namespace se identifica con una URL  Por abreviar se suele asignar un prefijo  Hace referencia a elementos de ese namespace  El prefijo no identifica el namespace, es la URL  ¿Cómo se asocia un Schema con un namespace?  Declaración tipica <xs:schema xmlns:xs=" targetNamespace=“ xmlns=“  xmlns:xs = …  Este documento usa namespace de XMLSchema ( y se usará el prefijo xshttp://.../XMLSchema  targetNamespace = …  Los elementos definidos en este schema pertenecen al namespace “  xmlns = …  Identifica el namespace por defecto.

Namespaces (II)  ¿Cómo se asocia una instancia con un namespace?  Declaración tipica <nombre xmlns:xsi=" xsi:schemaLocation=“ direccion.xsd” xmlns=“ elementFormDefault="qualified" >Yo mismo  xmlns:xsi = …  XMLSchema en sí es una instancia XML. La hacemos accesible a través de prefijo “xsi”  xsi:schemaLocation = “schema fich-schema.xsd”  Token list con el schema a utilizar (debe coincidir con targetSchema) y fichero que contiene la def del schema  xmlns = …  Identifica el namespace por defecto.  elementFormDefault = “qualified” -> Los nombres simpre son cualificados  Evita errores

Tipos Complejos  Tipos complejos  Sólo para elementos  Definición de nuevos tipos  xs:complexType  Alternativas  Declaración global (fuera definición de cualquier elemento)  Se puede referenciar a través de atributo name  Declaración dentro de definición de elementos  Ejemplo: Fulano de Tal y Cual

Tipos Complejos (II)  Restricción de ocurrencias  Equivalente a modificadores de DTDs (+ * ?)  Parámetros minOccurs y maxOccurs de xs:element  Ejemplo:   Alternativas para contenido de un elemento  Vacío  Contenido simple  Contenido mixto  Cualquier tipo

Elementos vacíos  Elemento vacío  ó  Ejemplo de elemento vacío   Tipo complejo sin más elementos anidados  Ejemplo definición de elemento img:

Elementos con contenido simple  Se especifican con modificador   Se permite definir tipos simples derivados de los que incorpora Schema   Declaramos un tipo complejo con contenido simple y lo usamos para definir el elemento “nombre” con atributo “dni”:

Elementos con contenido simple (II)  Defininición de tipos simples  En vez de definir tipo complejo con contenido simple podemos definir tipo simple  Ej:  Facetas  Son posibles valores para los tipos simples  Para ello se emplean restricciones de valores  xs:restriction

Tipos simples: Facetas  Lista de posibles facetas  length (o minLength y maxLength )  pattern  enumeration  whiteSpace  maxInclusive y maxExclusive  minInclusive y minExclusive  totalDigits  fractionDigits

Tipos simples: Facetas (II)  Espaciado  Antes de “parsear” el dato se normalizan los espacios  Con whiteSpace podemos determinar cómo se normalizan  Posibles valores:  preserve  Deja todos los espacios intactos  replace  Substituye \t \r \n por espacio (#x20)  collapse  Hace replace y luego substituye multiples espacios por uno sólo

Tipos simples: Facetas (III)  Longitud  Tres alternativas:  length  Fija longitud exacta permitida  minLength  Fija longitud mínima  maxLength  Fija longitud máxima  Ejemplo  Ejemplo  direccion-tipobasico.xml y direccion-schema- tipobasico.xsd

Tipos simples: Facetas (IV)  Enumeraciones  Lista de valores válidos (DTD  (a | b | c) )

Tipos simples: Facetas (V)  Restricciones numéricas  Rangos: minInclusive ( =), maxExclusive (>)  Control de valores decimales: totalDigits, fractionDigits Ejemplo restricción decimal a XXX.XX

Tipos simples: Facetas (VI)  Formato específico de cadenas  Se utiliza para especificar el patrón que ha se seguir la cadena  Algunos ejemplos de patrones:  [a-z]  Letras de la ‘a’ a la ‘z’  \d  Dígito numérico  \D  Cualquier carácter que no sea un dígito .  Cualquier carácter excepto CR LF  \s  Espacio, tabulador o CR o LF  Más información:  Ejemplo definición tipo DNI:

Tipos simples: Facetas (VII)  Listas  Lista de elementos de tipo básico separados por espacios  Sintaxis:  Atención: No va dentro de restriction.  Se pueden aplicar restricciones que se aplican a todos los elementos  Ejemplo lista de DNIs:

Tipos simples: Facetas (VIII)  Uniones  Alternativa entre varios tipos posibles  Sintaxis:  Atención: No va dentro de restriction  Ejemplo:

Elementos con contenido mixto  Contenido mixto  Texto y elementos  DTD  Número ilimitado de combinación texto elementos  Schema  Además control del número y secuencia de elementos mezclados con texto  ¿Cómo se permite contenido mixto?

Elementos con contenido mixto (II)  Mezclado de texto con secuencia de elementos  Ejemplo: carta.xml y carta-schema.xsd  Ejercicio: Abrir carta.xml y validar. Después cambiar en xsd mixedContent=“false” y repetir.

Elementos con contenido mixto (II)  Mezclado de texto con elementos alternativos  En vez de mezclar con utilizamos  Ejemplo

Elementos con contenido mixto (III)  Mezclado de texto con secuencias desordenadas  Se utiliza la construcción  Implica que todos los elementos han de estar presentes pero en cualquier orden  Ejemplo  Fragmento XML que es válido de acuerdo al schema Puedes traerme 3 kg de alubias, unos 5 kg de pimientos y quizá también 8 kg de naranjas

Elementos con contenido mixto (IV)  Una vuelta más de tuerca: Agrupaciones  Utlizando la construcción podemos combinar y  Ejemplo

Cualquier contenido  Cualquier elemento, incluso de schemas externos  Sintaxis:  Cualquier elemento  Ejemplo podemos incluir texto XHTML dentro de nuestro doc. XML: <xs:any namespace=" minOccurs="0" maxOccurs="unbounded“ processContents="skip"/>

Cualquier contenido (II)  Inclusión de declaraciones en ficheros externos  Sintaxis:  El fichero incluido no es un fragmento es un schema completo  Para utlizar elementos definidos externamente  Utilizar correctamente namespaces  Ejemplos:  carta-partida.xml se valida contra carta-partida-schema.xsd que incluye carta- partida-include-schema.xsd, donde se define el tipo tipoCarta  carta-partida-schema.xsd

Cualquier contenido (III)  Inclusión de definiciones de otros namespaces  Para ello utilizamos namespace  Redefinición de tipos de otros schemas  Se utiliza  Funciona como pero adicionalmente permite redefinir tipos  Ejemplo, redefinimos tipoCarta (secuencia con saludo, cuerpo, despedida):

Derivación de tipos complejos  Alternativas para derivar tipos complejos  Por extensión   Equivale a añadir contenidos a los contenidos de la declaración base  Ej. Añadimos código postal a tipoDireccionFisica para formar el nuevo tipo tipoDireccionPostal

Derivación de tipos complejos  Alternativas para derivar tipos complejos (II)  Por restricción   Si el tipo derivado es subtipo del original  Con tipos simples es sencilla su utilización (facets)  Con tipos complejos hay que volver a definir el tipo base eliminando los elementos o atributos que deseamos restringir

Derivación de tipos complejos (II)  Polimorfismo  Característica interesante de tipos derivados  Permite instanciar objetos derivados como si fueran hijos.  El atributo xsi:type permite especificar a qué tipo derivado conforma una instancia.  Ejemplo: <nombreCompleto xmlns:xsi" xsi:schemaLocation=" nombre.xsd“ xmlns= xsi:type=“tipoNombreCorto”> Pedro Ruiz

Derivación de tipos complejos (III)  Grupos de substitución  Mediante el atributo substitutionGroup de podemos crear formas de llamar al mismo elemento con otro nombre.  Ejemplo trozo schema:  Serían igualmente válidos: Madrid 43 Berlin 34

Control sobre derivación  Elementos y tipos abstractos  Si atributo abstract=true en definición de elemento o tipo  No puede instanciarse el mismo  Atributo final  Si atributo final de complexType puede tener los valores #all, extension, restriction para restringir la derivación.  P.e.:  Evita que se derive por extension este tipo  Facetas fijas  Algunas facetas admiten atributo fixed=“true”  Evita que futuras derivaciones anulen la restricción impuesta por ella

Control sobre derivación (II)  Valores únicos  El elemento xs:unique permite definir valores únicos para elementos y atributos.  Funcionamiento  Se utiliza una expresión xpath para coger subcojunto del documento  xs:selector  Se utiliza otra expresión xpath para seleccionar el campo determinado dentro de subgrupo  xs:field  Si dos campos son iguales se genera un error  Ejemplo. Vamos a limitar en “contactos” contactos con mismo nombre:

Control sobre derivación (III)  Claves  Igual que xs:unique pero no pueden ser nulas y se crean con xs:key  Referencias  Con xs:keyref puede referenciarse una clave definida previamente  Ejemplo:  Definimos clave única nombre del personaje  Definimos campo “amigo-de” que debe apuntar a un nombre de personaje <xs:keyref name=“nomPersonajeRef” refer=“nomPersonaje”> Mortadelo Filemón Pi camaleónico

Ejemplo: articulo  Articulo-schema.xsd (1/3):

Ejemplo: articulo (II)  Articulo-schema.xsd (2/3):

Ejemplo: articulo (II)  Articulo-schema.xsd (3/3):

Ejercicio (1/3)  Partir de casino.xml de 2º capítulo y modificarlo ligeramente  Añadir un elemento a cada jugador (detrás de las cartas):  Añadir al elemento “jugador” un atributo “dni” con el formato visto en los ejemplos  Crear un XML Schema que permita verificar el fichero casino.xml.  Para crearlo ir definiendo primero tipos simples y luego tipos complejos  De tal forma que no sea necesario definir tipos complejos dentro de elementos  La última línea del fichero ha de ser de la forma:

Ejercicio (2/3)  Tipos simples a ir definiendo en orden:  tipoCadena  xs:string que “colapsa” espacios  tipoNombreCarta  Derivada de tipoCadena con valores: “As”, “Dos”, … ”Rey”  tipoPalo  “oros”, “copas”, “espadas”, “bastos”  tipoDNI  Copiar de ejemplo  tipoJuego  “brisca”, “tute”, “poker”, “mus”  tipoMoneda  “€”, “$”  tipoValorDinero  Decimal con 2 números decimales máximo

Ejercicio (3/3)  Tipos complejos (Nota  Todos los atributos han de tener atributo use=“required”)  tipoCarta  Contenido: Simple de tipo “tipoNombreCarta”  Atributos: “palo” de tipo “tipoPalo”  tipoDinero  Contenido: Simple de tipo “tipoValorDinero”  Atributos: “moneda” de tipo “tipoMoneda”  tipoJugador  Contenido: Secuencia de “nombre”, “carta” (1-10), “apuesta”  Atributos: “dni” de tipo “tipoDNI”  tipoMesa  Contenido: Secuencia de “jugador” (2-infinito)  Atributos: “juego” de tipo “tipoJuego”  tipoCasino  Contenido: Secuencia de “bienvenida”, ”mesa” (1-infinito)  Restricciones: El atributo “dni” de cada jugador es una clave única  xs:key  Hacer pruebas sobre casino.xml (poner apuestas sin tipo de moneda, poner formato incorrecto en campos, repetir DNIs, etc…)