Tema 4: Estructura de documentos XML, W3C Esquemas

1 Tema 4: Estructura de documentos XML, W3C EsquemasRicar...
Author: Moisés Cotta
0 downloads 1 Views

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: ¿es el 11 de marzo o el 3 de noviembre? Los esquemas se definen como documentos XML, en un documento aparte con extensión .XSD En los documentos XML que se basen en ese esquema, incluiremos una referencia al archivo .XSD

6 Asociar dtd a documentos XML Tove Jani Reminder Don't forget me this weekend!

7 Asociar esquemas a documentos XML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://www.us.com/schema/note.xsd"> Tove Jani Reminder Don't forget me this weekend!

8 Ejemplo esquema W3C < /xsd:element>

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: Ejemplos:

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: Ejemplo: Los atributos tienen un tipo de dato: xsd:string, xsd:decimal, xsd:integer, xsd:boolean, xsd:date, xsd:time

13 Esquemas XML – atributos (2)Los atributos pueden tener valores por defecto y valores fijos: Por defecto, los atributos son opcionales. Para indicar que un atributo debe ser obligatorio, se debe añadir a su declaración en el esquema es atributo “use” El atributo use puede tomar el valor “optional” si el atributo no es obligatorio (opción por defecto)

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) En este ejemplo, el elemento “letter” debe tomar como valor 1 letra minúscula (sólo 1)

19 Esquemas XML – facetas (ej. 4) En este ejemplo, el elemento “initials” debe tomar como valor 3 letras mayúsculas o minúscula (sólo 3)

20 Esquemas XML – facetas (ej. 5) En este ejemplo, el elemento “choice” debe tomar como valor una de estas letras: x, y o z

21 Esquemas XML – facetas (ej. 6)

22 Esquemas XML – facetas (ej. 7)

23 Esquemas XML – facetas (ej. 8) En este ejemplo, el valor del campo “password” debe ser 8 caracteres

24 Esquemas XML – facetas (ej. 9) Los elementos length, minLength y maxLength permiten indicar el número exacto, mínimo y máximo de caracteres que puede tener un valor de un elemento.

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: Ice cream Sucedió el .... John Smith

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: Estimado cliente: Juan Perez. Su pedido número 1032 se enviará el día .

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.