XML-Schema. XML-Schema. XML-Schema. XML-Schema. Ventajas de XML-Schema con respecto a las DTD s:



Documentos relacionados
XML-Schema. XML-Schema. Espacios de Nombre. W3C XML Schema intenta superar las limitaciones de las DTDs con respecto a ellos

Validación de un XML

XML Schema. Sergio Luján Mora.

Realizar un esquema para el almacenamiento de CD musicales con las

Sistemas de Información 12/13 XML (extensible Mark-up Language)

XML Namespaces. Sergio Luján Mora.

ESQUEMAS INTRODUCCION A LA VALIDACIÓN DE DOCUMENTOS MEDIANTE ESQUEMAS. 7.3 Partes importantes de los esquemas Repeticiones de elementos

Práctica 4 Manejo avanzado de Bison

Modulo 1 El lenguaje Java

Contenido. Complemento Nomina. Estructura

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Análisis de esquemas XML [1]

XML, parte 3. M. en C. Erika Vilches

DIRECCIONAMIENTO IPv4

Funciones en Excel (II)

Transformación de documentos XML con

Introducción a los certificados digitales

Modelado de datos XML: XML-Schema

Datos Estadísticos y el Lenguaje XML

Depto de Cs e Ing. de la Computación Universidad Nacional del Sur

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

PROGRAMACIÓN ORIENTADA A OBJETOS

Instructivo de Microsoft Excel 2003

UTILIZACION DE ESQUEMAS XML DE LA AGENCIA TRIBUTARIA PARA CALCULO RETENCIONES

DIAGRAMA DE CLASES EN UML

XML para FP : Introducción

Fundamentos de las tecnologías de la información

XML. Introducción. Cómo se usa? XML Tree. Sintaxis XML

XML. Necesitamos un formato de datos: Posibles usos. Estandard Robusto Extensible

EDWIN KÄMMERER ORCASITA INGENIERO ELECTRÓNICO

Computación I Representación Interna Curso 2011

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

extensible Markup Language (XML)

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

3.1 Tipos de DTDs. ! Si queremos validar un documento XML (para comprobar si cumple las normas de un dialecto) tendremos que validarlo contra el DTD.

Claves para las fórmulas: Incrementos Decrementos Porcentajes Múltiplos - Partes - Diferencia

by Tim Tran:

Programa Presupuestos de Sevillana de Informática.

SINTAXIS DE LOS XML SCHEMA

INSTRUCTIVO DEL COMANDO MAKE

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

NÚMEROS NATURALES Y NÚMEROS ENTEROS

Unidad 3 Direccionamiento IP (Subnetting)

Listados y Etiquetas personalizados de PrefGest WhitePaper Julio 2008

2 Estructura de un Documento XML

La ventana de Microsoft Excel

Modelos y Bases de Datos

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

UNIVERSIDAD NACIONAL DE ASUNCION FACULTAD POLITÉCNICA CARRERA: LCIK MATERIA: Bases de Datos I Prof: Lic. Lilian Riveros Unidad 2: Modelo Relacional

3.2 Operaciones aritmético-lógicas en Pascal

Creación de documentos XML

TRABAJO PRACTICO Nº 1 Formateador de contenidos CSV

Contenido. Complemento Vales de Despensa

SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION

Otros tipos de Consultas

Operación de Microsoft Word

TEMA 2: Representación de la Información en las computadoras

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Diseño Estructurado de Algoritmos

Gestión de usuarios en la web educativa del centro con JOOMLA!

A25. Informática aplicada a la gestión Curso 2005/2006 Excel Tema 7. Funciones avanzadas de Excel II

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

Centro de Capacitación en Informática

Base de datos relacional

SISTEMAS DE NUMERACIÓN. Sistema decimal

Documento de Recomendación de Uso de Firma Digital en Comunicación PISEE. Ministerio Secretaría General de la Presidencia

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

MICROSITIOS. Perfiles

MATERIAL 2 EXCEL 2007

DEFINICIÓN DE ONTOLOGÍAS EN SOFIA2

Estructura. Elementos Elemento: Retenciones Diagrama

XML y XQuery. Qué es XML? Qué es XML? (II) Ejemplo de fichero XML. Cuerpo de un documento XML. Estructura de un documento XML

XCP XML para comunicación, importación y exportación de Carteras de Propiedades Inmobiliarias.

UNIDAD 6. POLINOMIOS CON COEFICIENTES ENTEROS

Requisitos para la generación de Xml válido

Lección 24: Lenguaje algebraico y sustituciones

2.3 Declaraciones de listas de atributos para los tipos de elementos... 8

TEMA 20: CONCEPTOS BÁSICOS DE SQL

Microsoft Excel Unidad 6. La Hoja de Cálculo

SECRETARÍA DE FINANZAS DEL DISTRITO FEDERAL P05 PANEL DE CONTROL DEL PROGRAMA HONORARIOS

BANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco?

Capítulo 1 Documentos HTML5

Cualquier número de cualquier base se puede representar mediante la siguiente ecuación polinómica:

Informática I Notas del curso

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

USO DEL COMANDO. Fdisk. Autor :. Alejandro Curquejo. Recopilación :. Agustí Guiu i Ribera. Versión :.. 1.0

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Tecnologías XML Esquemas XML

Figura 1.1. Figura 1.2

TEMA 7: DIAGRAMAS EN UML

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

BASE DE DATOS RELACIONALES

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Estructura. Elementos Elemento: Dividendos Diagrama

Matemáticas para la Computación

CONSULTAS MULTITABLAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

MANUAL DE USUARIO CONTROL LOGÍSTICO DE TIEMPOS

Transcripción:

Es una tecnología creada inicialmente por Microsoft basándose en los trabajos y recomendaciones del W3C: XML-Data: vocabulario XML para describir la estructura de los documentos DCD (Document Content Description) basada en RDF (Resource Description Framework vocabulario XML para representar metadatos) permite describir estructuras de documentos. La especificación actual es XML Schema 1.0 El W3C está ya trabajando en XML Schema 1.1 Ejemplo. Derivar un Schema de una instancia de documento XML <?xml version= 1.0?> <library> <book id= b0334455 available = true > <isbn> 089567654</isbn> <title lang= es > El último encuentro </title> <author id= NM > <name> Sándor Márai </name> <born> 13-4-1900 </born> <dead> 16-6-1989 </dead> </author> <character id= CH1 > <name> El general </name> <born> 13-12-1924</born> <qualification> severo, triste </qualification> </character> <character> </character> </book> </library> Ventajas de con respecto a las DTD s: Usa sintaxis XML Permite definir tipos de datos (int, float, boolean, date,...) Presenta un modelo de datos abierto (usa conceptos de la OO) Soporta la integración de los espacios de nombres Ejemplo. Derivar un Schema de una instancia de documento XML Elementos: library, book, author, born, character, dead, isbn, name, qualification, title Atributos: id, available, lang Permite expresar conjuntos (elementos que ocurren en cualquier orden) Permite construir tipos complejos 1 2

Tipos de elementos: Vacío: sin contenido Simple: contenido de tipo texto Complejo: contenido formado por otros elementos Mixto: contenido formado por otros elementos y texto Tipos de elementos para : Tipo simple: modelo de contenido simple y sin atributos Tipo complejo: cualquier otro modelo Los atributos son siempre de tipo simple Ejemplo. Derivar un Schema de una instancia de documento XML Modelos de contenido simple: <title lang= es > El último encuentro</title> <name> Sándor Márai </name> <born> 13-4-1900 </born> Modelos de contenido complejo: <library> <book id= b0334455 available = true > </book> </library> <character id= CH1 > <name> El general </name> <born> 13-12-1924</born> <qualification> severo, triste </qualification> </character> Ejemplo. Derivar un Schema de una instancia de documento XML Tipo simple: <name> Sándor Márai </name> <born> 13-4-1900 </born> Tipo complejo: <library> <book id= b0334455 available = true > </book> </library> <character id= CH1 > <name> El general </name> <born> 13-12-1924</born> <qualification> severo, triste </qualification> </character> <title lang= es > El último encuentro </title> 3 4

Elementos de : schema datatype elementtype element group attributetype attribute description Ejemplo. Derivar un Schema de una instancia de documento XML Comenzamos definiendo los elementos de tipo simple Ejemplo: <name> Sándor Márai </name> utilizamos el elemento element del XML Elementos de : schema Es el elemento raíz del schema <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> Define el espacio de nombres en el que están definidos los elementos y tipos de datos de Ejemplo. Derivar un Schema de una instancia de documento XML La definición de todos los elementos simples y atributos quedaría: <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name= name type= xs:string /> <xs:element name= qualification type= xs:string /> <xs:element name= born type= xs:date /> <xs:element name= dead type= xs:date /> <xs:element name= isbn type= xs:string /> <xs:attribute name= id type= xs:id /> <xs:attribute name= available type= xs:boolean /> <xs:attribute name= lang type= xs:language /> / </xs:schema> 5 6

Ejemplo. Derivar un Schema de una instancia de documento XML Vamos a definir un elemento de tipo complejo: <title lang= es > El último encuentro </title> <xs:element name= title > <xs:simplecontent> <xs:extension base= xs:string > <xs:attribute ref= lang /> </xs:extension> </xs:simplecontent> Ejemplo. Derivar un Schema de una instancia de documento XML Vamos a definir otro elemento de tipo complejo: <author> <xs:element name= author > <xs:element ref= name /> <xs:element ref= born /> <xs:element ref= dead minoccurs= 0 /> <xs:attribute ref= id /> Opcional, puede ocurrir 0 veces Ejemplo. Derivar un Schema de una instancia de documento XML Vamos a definir otro elemento de tipo complejo: <library> <xs:element name= library > <xs:element ref= book maxoccurs= unbounded /> Sin límite: 1..n Elementos de : Los atributos maxoccurs y minoccurs: permiten definir el número máximo y mínimo de ocurrencias Su valor por defecto es 1 (el elemento debe aparecer 1 vez) El valor unbounded con maxoccurs indica que el número máximo de ocurrencias es ilimitado Los atributos de un elemento de tipo complejo con secuencia deben ser definidos después de la secuencia 7 8

<?xml version= 1.0?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name= name type= xs:string /> <xs:element name= qualification type= xs:string /> <xs:element name= born type= xs:date /> <xs:element name= dead type= xs:date /> <xs:element name= isbn type= xs:string /> <xs:attribute name= id type= xs:id /> <xs:attribute name= available type= xs:boolean /> <xs:attribute name= lang type= xs:language /> <xs:element name= title > <xs:simplecontent> <xs:extension base= xs:string > <xs:attribute ref= lang /> </xs:extension> </xs:simplecontent> <xs:element name= library > <xs:element ref= book maxoccurs= unbounded /> <xs:element name= character > <xs:element ref= name /> <xs:element ref= born /> <xs:element ref= qualification /> <xs:attribute ref= id /> </xs:schema> <xs:element name= author > <xs:element ref= name /> <xs:element ref= born /> <xs:element ref= dead minoccurs= 0 /> <xs:attribute ref= id /> <xs:element name= book > <xs:element ref= isbn /> <xs:element ref= title /> <xs:element ref= author minoccurs= 0 maxoccurs= unbounded /> <xs:element ref= character minoccurs= 0 maxoccurs= unbounded /> <xs:attribute ref= id /> <xs:attribute ref= available /> En el esquema ejemplo cada componente (elemento o atributo) se define directamente dentro del elemento documento xs:schema Los componentes definidos así se denominan globales Se pueden referenciar en cualquier parte del esquema y en otros esquemas que lo importen Se pueden utilizar como elementos raíz de un documento 9 10

Definiciones locales de elementos y atributos Definición de <library>: <xs:element name= library > <xs:element ref= book maxoccurs= unbounded /> Se hace referencia a un elemento book definido en otra parte del schema Se puede reemplazar la referencia a book con la definición de dicho elemento <?xml version= 1.0?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name= library > <xs:element name= book maxoccurs= unbounded /> <xs:element name= isbn type= xs:string /> <xs:element name= title > <xs:simplecontent> <xs:extension base= xs:string > <xs:attribute name= lang type= xs:language /> </xs:extension> </xs:simplecontent> <xs:element name= author minoccurs= 0 maxoccurs= unbounded > <xs:element name= name type= xs:string /> <xs:element name= born type= xs:date /> <xs:element name= dead type= xs:date /> <xs:attribute name= id type= xs:id /> Se pueden hacer todas las definiciones de elementos y atributos de manera local <xs:element name= library > <xs:element name= book maxoccurs= unbounded /> <xs:element ref= isbn /> <xs:element ref= title /> <xs:element ref= author minoccurs= 0 maxoccurs= unbounded /> <xs:element ref= character minoccurs= 0 maxoccurs= unbounded /> <xs:attribute ref= id /> <xs:attribute ref= available /> La definición de book es local a library porque está definido dentro de librar Puede haber otras definiciones de book en otras partes del schema La definición de book no se puede utilizar en cualquier parte del schema book ya no puede ser el elemento raíz de un documento que use este schema <xs:element name= character minoccurs= 0 maxoccurs= unbounded > <xs:element name= name type= xs:string /> <xs:element name= born type= xs:date /> <xs:element name= qualification type= xs:string /> <xs:attribute name= id type= xs:id /> <xs:attribute name= id type= xs:id /> <xs:attribute name= available type= xs:boolean /> </xs:schema> Notad que se han eliminado los atributos ref ya que todas las definiciones son locales 11 12

Este nuevo schema: Permite validar la misma instancia de documento que el anterior No es equivalente: es menos reutilizable El elemento raíz (global) es el único que puede ser utilizado en otro schema Sólo el elemento library puede utilizarse como raíz Sacrifica modularidad en favor de una descripción más acorde con la estructura de los documentos conformes con dicho esquema Ejemplo. Cambio de instancia <?xml version= 1.0?> <library> <book id= b0334455 available = true > <isbn> 089567654</isbn> <title lang= en > El último encuentro</title> <author id= NM > <name> <first> Sándor </first> <last> Márai </last> </name> <born> 13-4-1900 </born> <dead> 16-6-1989 </dead> En la practica se pueden combinar los dos estilos Si queremos definir elementos con el mismo nombre pero con diferentes modelos de contenido en diferentes partes: definiciones locales Si queremos reutilizar elementos ya definidos: definiciones globales: Si se realiza un schema recursivo, en el que un elemento se incluye dentro de un elemento del mimo tipo como hijo (directa o indirectamente): definiciones globales (uso de referencias) : Tipos de datos predefinidos W3C XML Schema distingue entre: Los datos de la instancia documento (espacio léxico) El valor de los datos interpretados de acuerdo a su tipo de datos (espacio de valores) 13 14

: Tipos de datos predefinidos Transformaciones de las instancias XML antes de la validación: Espacio de serialización: series de bytes tal cual están almacenadas Espacio de análisis: resultado de la primera transformación que llegará a los procesadores de schemas Conversión de caracteres en Unicode : Tipos de datos predefinidos Cada tipo de datos tiene sus propios espacios léxicos y de valores Un valor puede tener múltiples representaciones léxicas: el valor 3.14116 de tipo xs:float puede tener diversas representaciones léxicas: 03.14116, 3.141160,.314116E1 Normalización de finales de línea, espacios en blanco : Tipos de datos predefinidos Transformaciones de las instancias XML antes de la validación: Espacio léxico: resultante de un posible procesamiento de espacios en blanco, tabuladores,... dependiendo del tipo de datos Espacio de valores: valor abstracto cuya semántica está definida por el tipo de datos: cadena, número, fecha... : Tipos de datos predefinidos Ejemplo: el valor 3.14116 de tipo xs:string es distinto del valor de 03.14116, 3.141160,.314116E1 Esta distinción es importante en operaciones como: Test de igualdad Ordenación 15 16

: Tipos de datos predefinidos Cadena Numéricos Fecha y hora xs:normalizedstring Es una cadena de caracteres válidos Unicode e ISO/IEC 10646 Se reemplazan los caracteres tabulador (#x9), linefeed (#xa), y retorno de carro (#xd) por espacio (#x20) Lista El valor de: <title lang= en > El último encuentro</title> es: El último encuentro xs:string Es una cadena de caracteres válidos Unicode e ISO/IEC 10646 No se realiza ningún tipo de reemplazamiento de espacios en blanco, se respetan los tabuladores, espacios en blanco y retorno de carro xs:token Es xs:normalizedstring en el que se eliminan los espacios al principio y al final, y varios espacios contiguos se sustituyen por uno simple El valor de: <title lang= es > El último encuentro</title> es: El último encuentro El valor de: <title lang= en > El último encuentro</title> es: El último encuentro 17 18

xs:language Se deriva de xs:token Se creó para aceptar los códigos de lenguaje RFC 1766 (en, en-us, fr,...) http://www.faqs.org/rfcs/rfc1766.html xs:name Se deriva de xs:token Es similar a xs:nmtoken con la restricción de que los valores deben comenzar con una letra o con los caracteres : o _ No debe utilizarse con nombres que vayan a ser calificados con un prefijo de un espacio de nombres xs:nmtoken Se corresponde con NMTOKEN visto en DTDs Se deriva de xs:token xs:ncname Se deriva de xs:token Es un NAME sin : xs:id Se deriva de xs:ncname Su valor debe ser único en el documento (identificador único) 19 20

xs:idref Se deriva de xs:ncname Su valor debe emparejarse con un ID definido en el mismo documento xs:entity Se deriva de xs:ncname Su valor debe emparejarse con una entidad externa no analizada xs:qname Ejemplo: <xs:attribute name= lang type= xs:language /> type es un xs:qname con valor { http://www.w3.org/2001/xmlschema, languaje } ya que http://www.w3.org/2001/xmlschema fue asignada al prefijo en: <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> xs:qname Soporta espacios de nombres con prefijo Cada xs:qname contiene una tupla {nombre de espacio de nombre, nombre local} nombre de espacio de nombre: URI asociada al prefijo xs:qname Ejemplo: <xs:element ref= book maxoccurs= unbounded /> ref es un xs:qname con valor { NULL, book } ya que no se ha definido ningún espacio de nombres por defecto Soporta espacio de nombres por defecto (el valor de la URI en la tupla será el valor por defecto) 21 22

xs:anyuri El valor deberá cumplir las limitaciones de XML Ejemplo: el valor del atributo href href= http://www.unaweb.com/français/ Se convertirá al valor: http://www.unaweb.com/fran%e7ais/ Tipos de datos: Numéricos xs:decimal Representa números decimales arbitrariamente largos El separador decimal es. y puede contener un signo inicial ( + o - ) No permite notación exponencial No puede contener caracteres distintos de los dígitos (tampoco espacios) xs:hexbinary Permite codificar contenido binario como una cadena de caracteres traduciendo el valor de cada octeto binario en 2 dígitos hexadecimales xs:base64binary Corresponde a la codificación base64 Agrupa series de 6 bits en un array de 64 caracteres imprimibles Tipos de datos: Numéricos xs:nonpositiveinteger Es un subconjunto de xs:integer: (negativos y cero) xs:negativeinteger Es un subconjunto de xs:nonpositiveinteger: (negativos) xs:nonnegativeinteger Es un subconjunto de xs:integer: (positivos y cero) xs:positiveinteger Es un subconjunto de xs:nonnegativeinteger: (positivos) 23 24

Tipos de datos: Numéricos xs:long Enteros que pueden almacenarse en 64 bits xs:int Enteros que pueden almacenarse en 32 bits xs:short Tipos de datos: Numéricos xs:float y xs:double Representa números en notación científica con potencia enteras de 10 La diferencia entre ellos es la precisión (32 o 64 bits) Pueden contener valores especiales : INF, -INF, NaN (Not a Number) Enteros que pueden almacenarse en 16 bits xs:byte Enteros que pueden almacenarse en 8 bits Tipos de datos: Numéricos xs:unsignedlong Enteros no negativos que pueden almacenarse en 64 bits xs:unsignedint Tipos de datos: Numéricos xs:boolean Puede tomar valores true y false (1 y 0) Enteros no negativos que pueden almacenarse en 32 bits xs:unsignedshort Enteros no negativos que pueden almacenarse en 16 bits xs:unsignedbyte Enteros no negativos que pueden almacenarse en 8 bits 25 26

Tipos de datos: Fecha y Hora Estos tipos son un subconjunto del estándar ISO 8601 Intenta eliminar la confusión entre los formatos utilizados en diferentes países xs:datetime Define un instante de tiempo concreto Formato: YYYY-MM-DDThh:mm:ss Ejemplo: 2003-10-21T20:30:13 Se pueden expresar zona horarias Tipos de datos: Fecha y Hora xs:time Define una hora concreta Ejemplo: 10:21:23 xs:gday, xs:gmonth y xs:gmonthday xs:gday es un día del calendario Gregoriano (---DD, ---25) xs:gmonthday es un día de un mes del calendario Gregoriano (--MM- DD, --05-25) xs:gmonth es un mes del calendario Gregoriano (--MM, --05) Tipos de datos: Fecha y Hora xs:date Define un día concreto del calendario Gregoriano Ejemplo: 2003-10-21 xs:gyearmonth y xs:gyear xs:gyearmonth es xs:date sin la parte de día (Ejemplo: 2003-10) xs:gyear es xs:gyearmonth sin la parte del mes (Ejemplo: 2003, -2000) Tipos de datos: Fecha y Hora xs:duration Expresa una duración en un espacio de 6 dimensiones Formato: PnYnMnDTnHnMnS Ninguno de los elementos es obligatorio ni tiene limitación de rango Ejemplo: P1DT2S 27 28

Tipos de datos: Lista Lista de campos separados por espacios en blanco xs:nmtokens Lista de xs:nmtoken separada por espacios xs:idrefs Lista de xs:idref separada por espacios xs:entities Lista de xs:entity separada por espacios Supongamos que en nuestro ejemplo: <title lang= en > El último encuentro </title> <qualification> severo, triste </qualification> Probablemente los espacios en blanco no son significativos y deberían no ser tenidos en cuenta En lugar del tipo xs:string les podemos asignar el tipo xs:token El documento queda descrito de una manera más precisa Tipos de datos: anysimpletype Acepta cualquier valor Hay que evitarlo excepto cuando lo requieren las reglas de derivación <?xml version= 1.0?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name= name type= xs:token /> <xs:element name= qualification type= xs:token /> <xs:element name= born type= xs:date /> <xs:element name= dead type= xs:date /> <xs:element name= isbn type= xs:nmtoken /> <xs:attribute name= id type= xs:id /> <xs:attribute name= available type= xs:boolean /> <xs:attribute name= > lang type= xs:language /> <xs:element name= title> <xs:simplecontent> <xs:extension base= xs:token > <xs:attribute ref= lang /> </xs:extension> </xs:simplecontent> <xs:element name= library > <xs:element ref= book maxoccurs= unbounded /> 29 30

Creación de nuevos tipos de datos Se pueden crear nuevos tipos de datos tomando como punto de partida los tipos de datos existentes A esta creación se la denomina derivación Los métodos de derivación para los tipos simples y complejos son muy diferentes Creación de nuevos tipos de datos. Derivación por restricción Los tipos de datos se crean añadiendo restricciones a los posibles valores W3C usa este mecanismo (xs:positiveinteger es una derivación por restricción de xs:integer) Las restricciones se definen mediante facetas Una restricción se añade con el elemento xs:restriction y cada faceta se define utilizando un elemento específico dentro de xs:restriction El tipo de dato que se restringe es denominado base Creación de nuevos tipos de datos Creación de nuevos tipos de datos. Derivación por restricción Existen 3 mecanismos de derivación: Por restricción Por lista Por Unión Ejemplo: <xs:simpletype name= myinteger > <xs:restriction base= xs:integer > <xs:mininclusive value= -2 /> <xs:maxexclusive value= 5 /> facetas 31 32

Creación de nuevos tipos de datos. Derivación por restricción. Facetas Se clasifican en 3 categorías: Las que definen el procesamiento de espacios en blanco, tabuladores... (actúan entre el espacio de análisis y el léxico) Las que trabajan sobre el espacio léxico Las que restringen el espacio de valores Creación de nuevos tipos de datos. Derivación por restricción. Facetas Facetas de cadenas con procesamiento de espacios en blanco: xs:enumeration: define una lista de posibles valores. Restringe el espacio de valores <xs:simpletype name= schemarecomm > <xs:restriction base= xs:anyuri > <xs:enumeration value= http://www.w3c.org/tr/x1 /> <xs:enumeration value= http://www.w3c.org/tr/x2 /> <xs:enumeration value= http://www.w3c.org/tr/x3 /> Creación de nuevos tipos de datos. Derivación por restricción. Facetas Facetas de cadenas con procesamiento de espacios en blanco: Los espacios iniciales y finales se eliminan, se sustituyen tab, line feed y CR por espacios y n espacios consecutivos se sustituyen por 1 Estos tipos son: xs:entity, xs:id, xs:idref, xs:language, xs:name, xs:ncname, xs:nmtoken, xs:token, xs:anyuri, xs:base64binary, xs:hexbinary, xs:notation, xs:qname Creación de nuevos tipos de datos. Derivación por restricción. Facetas Facetas de cadenas con procesamiento de espacios en blanco: xs:length: define una longitud fija en nº de caracteres o bytes (xs:hexbinary y xs:base64binary) Restringe el espacio de valores 33 34

Creación de nuevos tipos de datos. Derivación por restricción. Facetas Facetas de cadenas con procesamiento de espacios en blanco: xs:maxlength: define una longitud máxima en nº de caracteres o bytes (xs:hexbinary y xs:base64binary) Restringe el espacio de valores <xs:simpletype name= binaryimage > <xs:restriction base= xs:hexbinary > <xs:maxlength value= 1024 /> Creación de nuevos tipos de datos. Derivación por restricción. Facetas Facetas de cadenas con procesamiento de espacios en blanco: xs:pattern: define un patrón que debe emparejarse con la cadena Restringe el espacio de valores <xs:simpletype name= httpuri > <xs:restriction base= xs:anyuri > <xs:pattern value= http://.* /> Creación de nuevos tipos de datos. Derivación por restricción. Facetas Facetas de cadenas con procesamiento de espacios en blanco: xs:minlength: define una longitud mínima en nº de caracteres o bytes (xs:hexbinary y xs:base64binary) Restringe el espacio de valores <xs:simpletype name= longname > <xs:restriction base= xs:ncname > <xs:minlength value= 6 /> Creación de nuevos tipos de datos. Derivación por restricción. Facetas Facetas de tipos numéricos reales (xs:float y xs:double): xs:enumeration: permite definir una lista de posibles valores Opera en el espacio de valores <xs:simpletype name= enumfloat > <xs:restriction base= xs:float > <xs:enumeration value= -INF /> <xs:enumeration value= 1.3456 /> <xs:enumeration value= 4e2 /> 35 36

Creación de nuevos tipos de datos. Derivación por restricción. Facetas Facetas de tipos numéricos reales: xs:maxexclusive: define un valor máximo que no se puede alcanzar xs:maxinclusive: define un valor máximo que se puede alcanzar xs:minexclusive: define un valor mínimo que no se puede alcanzar xs:mininclusive: define un valor mínimo que se puede alcanzar xs:pattern: define un patrón que debe cumplir el valor léxico del tipo de datos Creación de nuevos tipos de datos. Derivación por restricción. Facetas Facetas de tipos enteros: Las mismas facetas que para los tipos numéricos reales más: xs:totaldigits: define el valor máximo de dígitos Actúa sobre el espacio de valores <xs:simpletype name= integer5dig > <xs:restriction base= xs:integer > <xs:totaldigits value= 5 /> 12345 y 00012345 son valores válidos para el tipo derivado Creación de nuevos tipos de datos. Derivación por restricción. Facetas Facetas de tipos de fecha y hora: Son las mismas que para los tipos numéricos reales Creación de nuevos tipos de datos. Derivación por lista Se puede derivar un tipo de datos de lista a partir de un tipo de datos atómico Todos los datos de la lista tienen que ser del mismo tipo IDREFS, ENTITIES y NMTOKENS son listas predefinidas derivadas derivadas de los tipos atómicos utilizando este mecanismo Solo se permiten las siguientes facetas: xs:length (nº de elementos), xs:enumeration, xs:maxlength, xs:minlength, xs:whitespace 37 38

Creación de nuevos tipos de datos. Derivación por lista La definición se realiza con el elemento xs:list Ejemplo: <xs:simpletype name= integerlist > <xs:list itemtype= xs:integer /> Este tipo de datos se puede utilizar con atributos y elementos para que acepten una lista de enteros separados por espacios, como: 1 2345 200 Creación de nuevos tipos de datos. Derivación por unión Permite definir nuevos tipos de datos fusionando los espacios léxicos de varios tipos predefinidos o definidos por el usuario El tipo de dato resultante pierde la semántica y facetas de los tipos miembro Solo se permiten 2 facetas a un tipo de datos así derivado: xs:pattern xs:enumeration La definición se realiza a través del elemento xs:union Creación de nuevos tipos de datos. Derivación por lista En la práctica las aplicaciones no pueden acceder directamente a los valores atómicos de estas listas a través de las actuales API s y expresiones Xpath (se espera que con XPath 2.0 sí se pueda) Creación de nuevos tipos de datos. Derivación por unión <xs:simpletype name= integerordate > <xs:union membertypes= xs:integer xs:date /> 39 40

Ejemplo: Creación de nuevos tipos de datos Queremos limitar el tamaño de los datos de tipo cadena: 32 y 255 c. <xs:simpletype name= string255 > <xs:restriction base= xs:token > <xs:maxlength value= 255 /> <xs:simpletype name= string32 > <xs:restriction base= xs:token > <xs:maxlength value= 32 /> <?xml version= 1.0?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:simpletype name= string255 > <xs:restriction base= xs:token > <xs:maxlength value= 255 /> <xs:simpletype name= string32 > <xs:restriction base= xs:token > <xs:maxlength value= 32 /> <xs:simpletype name= isbn > <xs:restriction base= xs:nmtoken > <xs:length value= 10 /> <xs:simpletype name= supportedlanguages > <xs:restriction base= xs:language > <xs:enumeration value= en /> <xs:enumeration value= es /> <xs:element name= name type= string32 /> <xs:element name= qualification type= string255 /> <xs:element name= born type= xs:date /> <xs:element name= dead type= xs:date /> <xs:element name= isbn type= isbn /> Primero podemos definir globalmente los tipos de datos derivados Notad que no se hace uso del prefijo Ejemplo: Creación de nuevos tipos de datos Queremos limitar el nº de caracteres del ISBN a 10 <xs:simpletype name= isbn > <xs:restriction base= xs:nmtoken > <xs:length value= 10 /> Queremos limitar los lenguajes del título (inglés y castellano): <xs:simpletype name= supportedlanguages > <xs:restriction base= xs:language > <xs:enumeration value= en /> <xs:enumeration value= es /> <xs:attribute name= id type= xs:id /> <xs:attribute name= available type= xs:boolean /> <xs:attribute name= > lang type= supportedlanguages /> <xs:element name= title> <xs:simplecontent> <xs:extension base= string255 > <xs:attribute ref= lang /> </xs:extension> </xs:simplecontent> <xs:element name= library > <xs:element ref= book maxoccurs= unbounded /> 41 42

Lenguajes documentales Bibliografía: [1] XML al descubierto. M. Morrison et al. Prentice Hall, 2000. [2] XML Schema. Eric van der Vlist, O Reilly, 2002. [3] Extensible Markup Language (XML) 1.0 W3C Recommendation. http://www.w3.org/tr/rec-xml#berners-lee 43