1 Departamento de InformáticaXML Schema Departamento de Informática Universidad de Oviedo
2 Lenguajes de Esquemas Esquema = definición de estructura de un conjunto de documentos XML Validar = Chequear que un documento sigue un esquema Principal Ventaja: Protección de errores Otras aplicaciones: Edición, compresión, etc. DTDs = un ejemplo de esquemas (con varias limitaciones) XML Schema = desarrollo posterior del W3c Existen Otros: RELAX-NG, Schematron, etc.
3 Características de DTD’sEspecifican estructura del documento: Elementos, atributos, anidamientos, etc. Integridad referencial mínima (ID, IDREF) Mecanismo sencillo de abstracción Entidades Macros Inclusión de documentos externos Integrados en XML (Parte de la especificación) Sencillos de comprender ( Expresiones regulares)
4 Limitaciones de DTD’s La Sintaxis no es XML (difíciles de manipular)No soportan Espacios de nombres No permiten especificar tipos de datos (por ejemplo: enteros, flotantes, fechas, etc. No permiten especificar secuencias no ordenadas ((e1,e2,e3)|(e1,e3,e2)|(e2,e1,e3)|...(e3,e2,e1)) No hay soporte para declaraciones sensibles al contexto: Los elementos se definen todos a nivel de documento, ejemplo, contenido con el mismo nombre cuya estructura cambia en diferentes contextos Soporte limitado para Referencias cruzadas, no es posible formar claves a partir de varios atributos o de elementos No son extensibles (una vez definido, no es posible añadir nuevos vocabularios a un DTD)
5 XML Schema Objetivos de DiseñoSintaxis XML Soporte para Espacios de Nombres Mayor expresividad Restricciones numéricas Integridad dependientes del contexto Tipos de datos Gran cantidad de tipos de datos predefinidos Creación de tipos de datos por el usuario Extensibilidad Inclusión/Redefinición de esquemas Herencia de tipos de datos Soporte a Documentación
6 Ejemplo
7 Estructura del Schema El esquema está formado por:Elemento raíz: schema del espacio de nombres Atributo: targetNamespace indica el espacio de nombres que se está definiendo Subelementos: Declaraciones globales de elementos y atributos Definiciones de tipos de elementos y atributos Anotaciones
8 Tipos Complejos vs SimplesPueden declararse 2 tipos: Complejos: Pueden contener sub-elementos y atributos Ejemplo de Tipo Complejo
9 Validación: esquemas e InstanciasUn documento XML Schema define un conjunto de documentos con una determinada estructura Un documento XML puede validarse contra varios esquemas Puede asociaciarse explícitamente mediante el atributo schemaLocation Utiliza 2 cadenas, el espacio de nombres y la URL del documento Si no se utiliza espacio de nombres, puede usarse noNamespaceSchemaLocation
10 Validación: esquemas e instanciasalumnos.xsd
11 Tipos Anónimos vs. con nombre
12 Otra posibilidad: Referencias
13 Tipos complejos: Creación a partir de tipos simples
14 Tipos Complejos: SecuenciaConstrucción básica mediante secuencia de elementos
15 Tipos Complejos: Alternativachoice: Representa alternativas OJO: Es una o-exclusiva
16 Tipos Complejos: Contenido MixtoEl contenido Mixto permite mezclar texto con elementos
17 Secuencias no ordenadasall = Todos los elementos en cualquier orden En DTDs requería enumerar las combinaciones: (A,B,C)|(A,C,B)|...|(C,B,A)
18 Agrupaciones Es posible nombrar agrupaciones de elementos y de atributos para hacer referencias a ellas
19 Tipos Simples Los tipos simples no pueden contener elementos o atributos Pueden ser: Predefinidos o built-in (Definidos en la especificación) Primitivos Derivados Definidos por el usuario Restringiendo facetas de tipos predefinidos
20 Tipos simples Primitivosstring boolean number, float, double duration, dateTime, time, date, gYearMonth, gYear, gMonthDay, gDay, gMonth hexBinary, base64Binary anyURI QName = Nombre cualificado con espacio de nombres NOTATION = Notación binaria (similar a DTD)
21 Jerarquía de tipos
22 Creación de nuevos tipos simples FacetasLos nuevos tipos se construyen mediante restricción de facetas: length, minlength, maxlength: Longitud del tipo de datos pattern: Restricciones sobre valores mediante expresiones regulares enumeration: Restringe a una determinada enumeración de valores whitespace: Define política de tratamiento de espacios (preserve/replace, collapse) (max/min)(in/ex)clusive: Límites superiores/inferiores del tipo de datos totaldigits, fractionDigits: número de dígitos totales y decimales
23 Enumeraciones y RestriccionesEnumeración
24
25 Uniones
26 Expresiones regularesEjemplos de expresiones regulares
27 Expresiones Regulares[a-c]x [^0-9]x \Dx (pa){2}rucha .abc (a|b)+x a{1,3}x \n \p{Lu} \p{Sc} ax, bx, cx Carácter dígito seguido de x paparucha Cualquier carácter (1) seguido de abc ax, bx, aax, bbx, abx, bax,... ax, aax, aaax Salto de línea Letra mayúscula Símbolo de moneda
28 Tipos Derivados por ExtensiónSimilar a las subclases de POO: Añadir elementos a un tipo base
29 Tipos Derivados por ExtensiónLos tipos derivados pueden utilizarse en los mismos sitios que la clase base
30 Tipos Abstractos Mediante abstract="true" se declara un tipo como abstracto. Ese tipo no puede usarse directamente
31 Declaración de Atributos
32 Inclusión de Esquemas include permite incluir elementos de otros esquemas Los elementos deben estar en el mismo espacio de nombres Es como si se hubiesen tecleado todos en un mismo fichero Profesores.xsd Alumnos.xsd
33 Importación de Esquemasimport permite incluir elementos de otros esquemas con distintos espacios de nombres Espacio de nombres P Espacio de nombres A Alumnos.xsd Profes.xsd
34 Redefinición de Esquemasredefine es similar a include pero permite modificar los elementos incluidos. Alumnos.xsd Añade el elemento nota
35 Claves y Unicidad Los DTDs proporcionaban el atributo ID para marcar la unicidad (un valor ID era único en todo el documento) XML Schema tiene más posibilidades: Indicar que un elemento es único (unique) Definir atributos únicos Definir combinaciones de elementos y atributos como únicos Distinción entre unicidad y claves (key) Clave = además de ser único, debe existir y no puede ser nulo. Declarar el rango de un documento en el que algo es único
36 Claves y Unicidad
37 Claves y Unicidad
38 Referencias a Claves keyref especifica que debe hacer referencia a una clave (Claves Externas)
39 Valores Nulos Indicar que un elemento puede ser nulo sin estar vacío.Vacío (Empty): Un elemento sin contenido Nulo (Nil): Un elemento que indica que no hay valor
40 Incluir cualquier contenido...any indica cualquier contenido de un determinado espacio de nombres anyAttribute cualquier atributo de un espacio de nombres
41 XML Schema LimitacionesNo soporta entidades. Mecanismo para crear macros Es necesario seguir usando los DTDs Lenguaje de Restricciones limitado Ejemplo: ¿Verificar valor total = suma de valores parciales? Sensibilidad al contexto limitada Por ejemplo: Especificar que el contenido depende del valor de un atributo
42 Esquemas XML Otras técnicasRelax NG. Desarrollado por OASIS a partir de TREX y RELAX Soporta mayor número de restricciones y gramáticas ambigüas Incluye una sintaxis abreviada (no XML) Schematron Utiliza un modelo basado en reglas (en vez de gramáticas) Asocia reglas de validación a expresiones XPath Puede expresar restricciones arbitrarias Lenguajes para XML (Encaje de patrones con expresiones Regulares) XDuce, CDuce, HydroJ
43 Ejercicios Herramientas:xmllint: Contiene la opción --schema que valida contra un esquema xmllint --schema alumnos.xsd alumnos.xml xsv (http://www.ltg.ed.ac.uk/~ht/xsv-status.html) Herramienta desarrollada en Python Funcionamiento a través de Web o en línea de comandos Salida en formato XML (difícil de leer al principio)
44 Diseño Vocabularios XML
45 Diseño Vocabularios XMLSeparación tradicional de dos mundos Sistemas orientados a Datos Información uniforme y fuertemente estructurada (ej. Tablas) Mucha cantidad de información repetida Objetivo: Procesamiento eficiente (Almacenes de datos) Sistemas orientados a Documentación Información poco uniforme y entrelazada (ej. Libros) No existe un patrón uniforme Objetivo: Comunicación, Presentación (Mensajes) Se podría añadir un tercer mundo: Programación Orientada a Objetos Propuestas para añadir capacidad de programación a documentos XML: Información semi-estructurada (Lugar intermedio) Estructuras jerárquicas entrelazadas
46 Orientación del esquema Datos vs. Documentos
47 Diseño Vocabularios XMLCaracterísticas a tener en cuenta Tamaño de documentos Facilidad de escritura Facilidad de procesamiento Flexibilidad (ej. HTML es muy flexible, Bases de Datos = menos) Consistencia: Evitar características incoherentes Nivel de abstracción: Buscar término medio en nivel de detalle
48 Ejemplo de Discusión ¿Atributos o Elementos?Representación de propiedades
49 Ejemplo de Discusión ¿Atributos o Elementos?Representación de propiedades
50 Diseño Vocabularios En resumen......Aparición de una nueva torre de Babel... Algunos Consejos: Estudiar dominio de la Aplicación (ver estándares ya definidos!!!) Considerar futuras ampliaciones (extensibilidad) Validar antes de que sea tarde Usar espacios de nombres etc. etc.
51 Fin