1 Tema 4: Estructura de documentos XML, W3C EsquemasRicardo Eíto Brun Sevilla, de octubre 2002
2 XML Schemas Son una sintáxis alternativa para las DTDs, propuesta inicialmente por Microsoft, ArborText, Inso, etc. Utilizan la sintáxis propia de XML Ventajas: Fáciles de aprender (se usa también XML) Soportan tipos de datos: numéricos, fechas… Procesables igual que los documentos XML
3 Qué encontramos en un esquema XMLUn esquema XML define la estructura válida para un tipo de documento XML (al igual que las DTD), es decir: Los elementos que pueden aparecer en el documento Los atributos que pueden utilizarse junto a cada elemento Cómo se pueden anidar los elementos (padres e hijos) El orden en el que deben aparecer los elementos hijos de un mismo padre El número permitido de elementos hijos Si un elemento puede ser vacío o no Tipos de datos para elementos y atributos Valores por defecto y fijos para elementos y atributos
4 XML Schemas La propuesta inicial de Microsoft dio lugar a los llamados “esquemas XDR” Posteriormente, el W3C diseñó un modelo de esquemas que es la propuesta oficial y la que debemos conocer (llamados “esquemas XSD”) XSD se publicó como una recomendación el 31 de marzo del 2001 (se considera oficial desde mayo) XSD es más complejo que otras alternativas anteriores, pero supuso un importante paso hacia adelante en la estandarización de XML
5 Otras ventajas de XML SchemasMayor precisión en la definición de tipos de datos mediante formatos y facetas Por ejemplo, la fecha:
6 Asociar dtd a documentos XML
7 Asociar esquemas a documentos XML
8 Ejemplo esquema W3C
9 Esquemas XML – elemento schemaLos elementos utilizados en la creación de un esquema “proceden” del espacio de nombres: El elemento schema es el elemento raíz del documento en el que se define el esquema:
10 Esquemas XML – elementos “simples”Un elemento simple es un elemento que sólo puede contener texto (cualquier tipo de dato), pero no a otros elementos ni atributos Para definir un elemento simple, utilizamos la sintáxis:
11 Esquemas XML – elementos “simples”, tipos de datosLos tipos de datos más utilizados son: xsd:string xsd:decimal xsd:integer xsd:boolean xsd:date xsd:time Un elemento simple puede tener un valor por defecto y un valor “fijo” Esto se indica mediante los atributos default y fixed
12 Esquemas XML – atributos (1)Los atributos se deben declarar de forma similar a los “elementos simples” Si un elemento puede ir acompañado de atributos, el elemento se deberá declarar como un elemento “complejo” Un atributo se declara de la siguiente forma:
13 Esquemas XML – atributos (2)Los atributos pueden tener valores por defecto y valores fijos:
14 Esquemas XML – facetas Las facetas o restricciones permiten restringir el valor que se puede dar a un elemento o atributo XML Mediante restricciones podemos indicar que un valor debe estar comprendido en un rango determinado, debe ser un valor de una lista de valores “cerrada”, o debe ser mayor o menor que otro valor… Tipos de facetas: Valor comprendido en un rango El valor está restringido a un conjunto de valores posibles Restringir el valor de un elemento a una serie de caracteres Longitud de los valores de los elementos…
15 Esquemas XML – facetas (ej. 1)
16 Esquemas XML – facetas (ej. 2)
17 Esquemas XML – facetas (ej. 2, alt.)
18 Esquemas XML – facetas (ej. 3)
19 Esquemas XML – facetas (ej. 4)
20 Esquemas XML – facetas (ej. 5)
21 Esquemas XML – facetas (ej. 6)
22 Esquemas XML – facetas (ej. 7)
23 Esquemas XML – facetas (ej. 8)
24 Esquemas XML – facetas (ej. 9)
25 Elementos para restriccionesenumeration Establece una lista de valores “aceptados” fractionDigits Número de cifras decimales length Número de caracteres obligatorios maxExclusive y maxInclusive Valor máximo de un rango minExclusive y minInclusive Valor mínimo en un rango maxLength y minLength Número máximo y mínimo de caracteres permitidos pattern Define una secuencia de caracteres permitida totalDigits Número exacto de dígitos permitidos whiteSpace Indica cómo se deben de tratar los espacios en blanco
26 Elementos complejos Son elementos que contienen a otros elementos hijos, o que tienen atributos Se suelen dividir en 4 tipos: Elementos vacíos Elementos no vacíos con atributos Elementos con elementos hijos Elementos con elementos hijos y con “texto” o valor propio (como el contenido mixto de las DTD)
27 Elementos complejos Ejemplos:
28 Declarar elementos complejosPara definir elementos complejos se utiliza la siguiente sintáxis:
29 Declarar elementos complejosPodemos usar otra sintáxis para reutilizar la “definición” de los elementos hijos en varios elementos:
30 Declarar elementos complejosEn la declaración de elementos complejos, es posible utilizar un mecanismo de “herencia” para reutilizar o extender elementos definidos con anterioridad (ver la siguiente página)
31
32 Declarar elementos complejosPara declarar un elemento vacío con atributos, se utilizará la siguiente sintáxis:
33 Declarar elementos complejosPara declarar un elemento no vacío con atributos, y sin elementos hijos, se utilizará la siguiente sintáxis:
34 Declarar elementos complejosPara declarar un elemento con contenido “mixto”, basta con añadir un atributo “mixed” al elemento xsd:complexType:
35 Declarar elementos complejosLa declaración anterior permitiría un texto como el siguiente:
36 Declarar elementos complejos: IndicadoresEn los ejemplos anteriores hemos utilizado el elemento xsd:sequence como elemento hijo del elemento xsd:complexType Xsd:sequence indica que los elementos anidados en él deben aparecer en un orden determinado Los esquemas XML nos ofrecen otras alternativas, además de xsd:sequence, para indicar cómo se deben tratar los elementos que aparecen anidados en un elemento complejo Las opciones o “indicadores” son: xsd:all y xsd:choice
37 Declarar elementos complejos: Indicador xsd:allEl indicador xsd:all indica que los elementos que contiene pueden aparecer en cualquier orden, pero como máximo sólo una vez
38 Declarar elementos complejos: Indicador xsd:choiceEl indicador xsd:choice indica que puede aparecer sólo uno de los elementos que contiene
39 Declarar elementos complejos: Indicadores maxOccurs y minOccursEstos indicadores se utilizan para indicar el número máximo y mínimo de veces que puede aparecer un elemento hijo de un elemento complejo El atributo maxOccurs puede tomar el valor “unbounded”, que indica que no existe ningún límite
40 El modelo de contenido ANYEn esquemas XML también contamos con un modelo de contenido ANY, que permite incluir elementos no declarados inicialmente en el esquema
41 El modelo de contenido ANYTambién contamos con un elemento que permite extender el número de atributos de un elemento:
42 Práctica 1 Diseñar un esquema XML para crear documentos para el préstamo. En cada documento se indicarán: El nombre y apellidos del bibliotecario Fecha del préstamo y de devolución Datos del lector (id, nombre, apellidos, teléfono y dirección) La dirección se dividirá en tipo de calle (que puede ser calle, avenida o plaza), nombre calle, número, piso y letra, c.p., localidad y provincia Un máximo de tres ejemplares en préstamo. Para cada uno de ellos: el número de registro, título, autor(es) El préstamo tendrá un atributo numérico que servirá como identificador
43 Práctica 2 Modificar un nuevo esquema, de forma que no todos los elementos estén anidados, utilizando las referencias. Primero declaramos los elementos simples. Luego declararemos los elementos complejos indicando su “modelo de contenido” mediante atributos ref.
44 Práctica 3 Crear un esquema xml para codificar datos de un pedido a un proveedor. Se indicarán los datos del proveedor (nif, nombre, dirección, localidad, téléfono), datos de la biblioteca, y el listado de items que se han pedido. Para cada item se indicará el número de unidades, precio, y también el precio total del pedido y el número de items.