Lm xml schema

55
Lenguajes de marcas: XML XML-Schema: 1. Introducción

Transcript of Lm xml schema

Page 1: Lm xml schema

Lenguajes de marcas: XML

XML-Schema: 1. Introducción

Page 2: Lm xml schema

1. Introducción� Limitaciones de las DTD.

� Para definir el contenido uso de PCDATA� Necesidad de concretar más.

� Ej: En geografía la localización: latitud, longitud y error� Latitud y longitud: 6 cifras decimales y rangos de -90 a 90 y de -180 a 180

� El error de localización debe ser un entero no negativo.

Page 3: Lm xml schema

1. Introducción� Asegurar que restricciones como las del ejemplo se cumplen: un

mecanismo que asegure la validez de los correspondientes valores. Un DTD no lo puede hacer.

� Surgió la idea de generalizar las DTDs utilizando la propia sintaxis XML: Esquemas XML son la alternativa actual

� Por tanto, para validar un documento XML se recurre a otros documentos llamados Esquemas XML.

� La idea perseguida es contar con un vocabulario XML que

permita expresar las reglas que estructuran los documentos

XML de forma que a partir de los Esquemas se puedan definir

unos documentos instancia que usen este vocabulario.

Page 4: Lm xml schema

1. Introducción� Pretende:

� Especificar tanto la estructura de los documentos instancia � como el tipo de dato de cada elemento/atributo, � de forma que por un lado, se dicen cosas del tipo “este elemento

contiene tales subelementos, que a su vez contiene estos otros, etc.”,

� y otras del tipo “este elemento es un entero cuyo rango va de 90 a +90”.

Page 5: Lm xml schema

1.2. De una DTD a un esquema

� Ejemplo de DTD, que identificamos por libreria.dtd

Page 6: Lm xml schema

1.2. De una DTD a un esquema

� A partir de ella veamos su correspondiente sintaxis como Esquema : librería.xsd.

…………..

Page 7: Lm xml schema

1.2. De una DTD a un esquema

Page 8: Lm xml schema

1.2. De una DTD a un esquema

Page 9: Lm xml schema

1.2. De una DTD a un esquema

Page 10: Lm xml schema

1.3. De un XML a un esquema

� Los Esquemas se elaboran con el objetivo de obtener un patrón � Muchas veces se hace a partir de un determinado documento XML

ya usado y probado.� El objetivo: tratar de definirlo con la máxima generalidad para que

otros documentos se adapten al Esquema obtenido y el documento que ha servido de muestra acabe siendo una instancia.

Page 11: Lm xml schema

1.3. De un XML a un esquema

� Ej: Documento XML miatlas.xml

Page 12: Lm xml schema

1.3. De un XML a un esquema

� La DTD correspondiente a este documento es :

� el resultado de generalizar miatlas.xml a un Esquema XML

Page 13: Lm xml schema
Page 14: Lm xml schema

1.3. De un XML a un esquema

� Para usar este esquema atlas.xsd dentro del documento inicial miatlas.xml

Page 15: Lm xml schema

2. Conceptos de esquemas XML

� Características:� Su elemento raíz es schema

� schema incorpora distintos espacios de nombres y atributos.� los elementos y tipos de datos usados pertenecen al espacio de nombres declarado en : xmlns:xsd=http://www.w3.org/2001/XMLShema

� cuyo prefijo es xsd (XML Shema Definition ), aunque también se suele usar xd.

� Por medio de targetNamespace se indican los elementos específicos de un determinado espacio de nombres usado por el Esquema, pudiéndose usar un espacio de nombres por defecto.

� Con el uso de Esquemas se produce un doble proceso de validación � un documento XML se valida respecto al Esquema y� éste a su vez es un documento que se valida de acuerdo con las reglas del analizador de Esquemas.

Page 16: Lm xml schema

2. Conceptos de esquemas XML

� Características:� Los elementos para declarar elementos y atributos son element y

attribute.� estos elementos y atributos tienen al menos un nombre y un tipo de dato debidamente definidos.

Page 17: Lm xml schema

2.1 Declaraciones y definiciones

� Para definir la estructura y tipos de datos que soporta documento instancia, se usan:� los elementos simpleType ( contiene sólo datos y ningún elemento

hijo ) � Y complexType ( contiene además elementos hijo y atributos ).

� Un Esquema es un documento XML que incorpora declaraciones y definiciones.� Se declaran los elementos y atributos que se van a representar en

el documento instancia, � y se definen las componentes que van a ser objeto de uso y no de

representación, como son los tipos de datos.

Page 18: Lm xml schema

2.1 Declaraciones y definiciones

� Una vez declarados, los elementos y atributos pueden ser objeto de referencias dentro de distintos contextos o ámbitos,

� cada vez que se quiera referenciar este elemento se recurre al atributo ref de element

Page 19: Lm xml schema

3. Espacios de nombres en esquemas

� En un Esquema aparece una diversidad de espacios de nombres, con funciones distintas en cada caso;

� En el primer ejemplo, se observa que en atlas.xsd aparecen:� Xmlns:xsd=http://www.w3.org/2001/XMLShema:

� indica que los elementos y tipos de los datos usados ( schema, element, complexType, sequence, string, bolean, integer) provienen del espacio de nombres http://.../XMLShema.

� targetNamespace=http://www.atlas.org : � indica que los elementos definidos en este Esquema concreto ( Atlas, Pais, Nombre, Capital, Población, Extensión ) pertenecen al espacio de nombres indicado, que llamaremos de destino (target), y que obviamente se pasa al documento instancia para su uso correspondiente.

Page 20: Lm xml schema

3. Espacios de nombres en esquemas

� xmlns=http://www.atlas.org : � indica el espacio de nombres por defecto del Esquema, que será : http://www.atlas.org,

� de forma que cuando aparece una referencia como ref=”Pais”sin ningún prefijo, se sabe que se refiere a la declaración del elemento Pais en este espacio de nombres.

� En cuanto al documento instancia miatlas.xml:� Aparece la declaración

xmlns:xsi=http://www.w3.org/3001/XMLSchemainstance� que se encarga de pasar del espacio de nombres del Esquema al espacio de nombres de la instancia: relaciona el documento instancia con su correspondiente Esquema.

Page 21: Lm xml schema

3. Espacios de nombres en esquemas

� Por tanto existen espacios de nombres con distintos cometidos :� El que define los Esquemas:

xmlns:xsd=http://www.w3.org/2001/XMLShema.� El ( los ) de destino ( targetNamespace ) específicos del esquema

construido al que se refieren los correspondientes documentos instancia.

� El “por defecto” que puede ser o no uno de los dos anteriores.� El que permite usar el Esquema en el documento instancia.

� Un Esquema opcionalmente puede especificar un espacio de nombres por defecto, por lo que es éste el que está implícito en cualquier referencia que no incluya ningún prefijo.

Page 22: Lm xml schema

3. Espacios de nombres en esquemas

� El espacio de nombres por defecto se aplica sólo a referencias en un Esquema� y por tanto estos espacios por defecto no tienen impacto en sus

documentos instancia.

� Es habitual usar el espacio de nombres indicado por targetNamespace como espacio de nombres por defecto:

Page 23: Lm xml schema

3. Espacios de nombres en esquemas

� Repasemos el encabezado del documento instancia

� Al declarar http://www.atlas.org sin prefijo, el resultado por defecto es indicar al validador de Esquemas donde pertenecen los elementos usados en esta instancia.

� A continuación se dice que se usa el espacio de nombres: http://www.w3.org/2001/XMLSchemainstance

� y finalmente SchemaLocation indica que el espacio de nombres http://www.atlas.org está definido en atlas.xsd.

Page 24: Lm xml schema

4. Composición de un esquema

� A construción dun esquema baséase en catro estruturasprincipais: � Declaración de elementos .- Serve para asociar o nome dun

elemento a un tipo predefinido, a un tipo simple ou a un tipo complexo.

� Declaración de atributos .- Serve para asociar o nome dunatributo a un tipo simple (o valor dos atributos só pode contertexto).

Page 25: Lm xml schema

4. Composición de un esquema

� Definición de Tipos simples .- Permítennos definir novos tipos baseados nos tipos simples predefinidos, aplicándolles certasrestricións.

� Definición de Tipos complexos .- Serven para definir novostipos de datos cuxos valores constan de atributos e/ou elementos

Page 26: Lm xml schema

4.1. Tipos simples predefinidos

� A continuación podemos ver algúns dos tipos simples incorporados (primitivos e derivados) máis utilizados.

Page 27: Lm xml schema

4.1. Tipos simples predefinidos

� Debemos ter en conta:� Cun número real utilizaremos o punto como separador decimal. � O tipo boolean (xs:boolean) permite introducir true ou 1, e false ou

0, indistintamente. � Cunha data (xs:date) utilizaremos o formato "AAAA-MM-DD". � Cunha hora (xs:time) utilizaremos o formato "hh:mm:ss". � Cunha data e hora conxuntas (xs:dateTime) utilizaremos o formato

especificado no estándar ISO-8601. Simplificando, poñeremosprimeiro a data e logo a hora separados por unha T. Por exemplo: 2010-04-14T00:19:25

Page 28: Lm xml schema

4.2. Declaración dun elemento

� A declaración dun elemento XML utiliza a etiqueta <xs:element...>.

� Dependendo da utilización do elemento no documento, pode declararse dalgún dos seguintes xeitos:� Baseados nun tipo predefinido

� Os elementos baseados nun tipo simple predefinido só poden conter texto que cumpra as restricións do tipo no que se basea.

� Non se permiten nin (sub)elementos nin atributos.

� Ej:

Page 29: Lm xml schema

4.2. Declaración dun elemento

� A declaración dun elemento XML utiliza a etiqueta <xs:element...>.

� Dependendo da utilización do elemento no documento, pode declararse dalgún dos seguintes xeitos:� Baseados nun tipo predefinido

� Os elementos baseados nun tipo simple predefinido só poden conter texto que cumpra as restricións do tipo no que se basea.

� Non se permiten nin (sub)elementos nin atributos.

� Ej:

Page 30: Lm xml schema

4.2. Declaración dun elemento

� Baseados nun Tipo Simple definido polo usuario� Os elementos baseados nun tipo simple só poden conter texto que cumpra as restricións impostas polo tipo simple definido polo usuario.

� Non se permiten nin (sub)elementos nin atributos. � É igual que no caso dos tipos predefinidos (que se consideran tipos simples), pero especificando a maiores as condicións que deben cumprir os datos.

� A definición do tipo simple pódese realizar no interior da declaración do elemento, polo que quedaría oculta ao resto do esquema:

Page 31: Lm xml schema

4.2. Declaración dun elemento

� Ou fora, para poder utilizarse en varias declaracións:

� Baseados nun Tipo Complexo definido polo usuario� Cando un elemento conteña atributos e/ou sub-elementos no seu contido, entón será necesario crear un tipo complexo.

� A declaración dun elemento baseado nun tipo complexo éexactamente igual á dun tipo simple, trocando <xs:simpleType> por <xs:complexType>.

� A diferenza é, evidentemente, a propia declaración destestipos.

Page 32: Lm xml schema

4.2. Declaración dun elemento

� Na declaración dun elemento <xs:element ... > podemos especificar diversos atributos que nos permitirán configuralo de xeito adecuado: � name: o nome do elemento, o que se usará nos documentos XML

encerrado entre os símbolos <>. � type: o nome do tipo de datos do contido do elemento. Como xa

se comentou pode ser un tipo predefinido, un tipo simple ou un tipo complexo.

� maxOccurs: número máximo de veces que o elemento pode aparecer dentro do elemento que á súa vez o contén.

� O seu valor debe ser de tipo nonNegativeInteger� ou ben a cadea unbounded para que non teña límite. � Por defecto é 1.

Page 33: Lm xml schema

4.2. Declaración dun elemento

� minOccurs: número mínimo de veces que o elemento debe aparecer dentro do elemento que á súa vez o contén.

� O seu valor debe ser de tipo nonNegativeInteger.� Se especificamos o valor 0 convértese nun elemento opcional. � Por defecto é 1.

� default: é o valor predeterminado para o contido do elemento, se este non se especifica no documento (non compatible con fixed)

� fixed: o seu valor é automaticamente asignado ao contido do elemento, sen poder cambiarse no documento (non compatible con default).

Page 34: Lm xml schema

4.2. Declaración dun elemento

� ref: o seu valor é o nome doutro elemento definido no esquema (ou noutro esquema especificando o seu espazo de nomes).

� Se especificamos este atributo, a definición do elemento non pode conter ademais os atributos default, fixed ou type (entre outros), nin conter os elementos <simpleType> ou<complexType>.

� Ej:

Page 35: Lm xml schema

4.3 Declaración de tipos simples

� Permítennos definir novos tipos baseados nos tipos simples predefinidos, aplicándolles certas restricións.

� O seu valor sempre é de tipo texto e non poden conter marcas (<>) doutros elementos, nin atributos.

� Existen tres mecanismos para crear tipos simples baseados en tipos simples predefinidos ou á súa vez noutros tipos simples: � restricións, � listas e � unións.

Page 36: Lm xml schema

4.3 Declaración de tipos simples: Restriccións

� Ao definir un tipo simple podemos especificar, non só o tipo de dato que se espera no contido dos elementos e os atributos, senón unha gran variedade de restricións.

� As restricións sempre se aplican sobre un tipo existente (denominado tipo base), e permiten restrinxir o conxunto dos seus posibles valores.

� A súa sintaxe é a seguinte.

Page 37: Lm xml schema

4.3 Declaración de tipos simples: Restriccións

� As posibles restricións sobre un tipo base son: � length: lonxitude da cadea ou número de elementos da lista � minLength: lonxitude mínima � maxLength: lonxitude máxima � pattern: encaixar cunha expresión regular � enumeration: os valores do tipo só poden ser os especificados � whiteSpace: controla a normalización dos espazos brancos (tabs, etc.) � maxInclusive: valor superior incluído� maxExclusive: valor superior excluído� minInclusive: valor inferior incluído� minExclusive: valor inferior excluído� totalDigits: máximo número de díxitos (nos tipos numéricos) � fractionDigits: máximo número de díxitos decimales

Page 38: Lm xml schema

4.3 Declaración de tipos simples: Restriccións

� Dependendo do tipo base poderáselle aplicar un posible conxunto de restricións. � Por exemplo, as restricións sobre un tipo string son: length,

minLength, maxLength, pattern, enumeration e whitespace. � As restricións sobre un tipo de datos integer son: totalDigits,

pattern, whitespace, enumeration, maxInclusive, maxExclusive, minInclusive e minExclusive.

Page 39: Lm xml schema

4.3 Declaración de tipos simples: Restriccións. Ejemplos

� Nota de la primera evaluación entre 1 y 10� Nivel bajo medio o alto� Matrícula tipo 1111CFS� Código cliente de 8 caracteres� Código cliente de 8 caracteres que sean o letras o numeros sólo� Nombre de usuario que tenga entre 6 y15 digitos.

Page 40: Lm xml schema

4.3 Declaración de tipos simples: Restriccións. Ejemplos

Page 41: Lm xml schema

4.3 Declaración de tipos simples: Restriccións. Ejemplos

Page 42: Lm xml schema

4.3 Declaración de tipos simples: Listas.

� Unha lista consiste nunha secuencia de valores dun certo tipo, separada por espazos.

� Ej:

Page 43: Lm xml schema

4.3 Declaración de tipos simples: Listas.

� As listas non sempre son un bo recurso debido a que se perdenas vantaxes do formato XML.

� Adoita ser mellor idea:

Page 44: Lm xml schema

4.3 Declaración de tipos simples: Unións.

� Unha unión é unha estrutura que nos pemite unir nun único tipo valores con distintos tipos de datos.

� A súa sintaxe é.

Page 45: Lm xml schema

4.3 Declaración de tipos simples: Unións.

� Ej:

Page 46: Lm xml schema

4.4 Tipos complejos� Son aqueles elementos XML que, ademais de poder ter

atributos, o seu contido pode ter outros elementos e/ou contidotextual

Page 47: Lm xml schema

4.4 Tipos complejos� DECLARACIÓN DE ATRIBUTOS DENTRO DE UN ELEMENTO DE

TIPO COMPLEJO� Debido a que os atributos só poden igualarse a valores de tipo

simple, a súa definición poderase facer dos seguintes xeitos

Page 48: Lm xml schema

4.4 Tipos complejos� Ejemplo:

Page 49: Lm xml schema

4.4 Tipos complejos� Ejemplo:

Page 50: Lm xml schema

4.4 Tipos complejos� DECLARACIÓN DE ELEMENTOS CON SUBELEMENTOS� O contido dun elemento pode conter á súa vez outros

elementos. � Para especificar as súas características podemos utilizar algunha

das seguintes estruturas:� a estrutura <xs:sequence>� a estrutura <xs:all>� a estrutura <xs:choice>� a estrutura <xs:any>

Page 51: Lm xml schema

4.4 Tipos complejos� DECLARACIÓN DE ELEMENTOS CON SUBELEMENTOS

� Secuencia ordenada: a estrutura <xs:sequence>

� Todos os elementos que conteña a estrutura terán que ir no documento na orde indicada.

� Ejemplo:

Page 52: Lm xml schema

4.4 Tipos complejos� DECLARACIÓN DE ELEMENTOS CON SUBELEMENTOS

� Secuencia desordenada: a estrutura <xs:all>

� Similar á anterior pero onde todos os elementos que conteña a estrutura terán que aparecer, aínda que non importa a súa orde.

� A diferenza da estrutura anterior, os elementos deben aparecer como máximo unha vez, é dicir, o atributo minOccurs dos elementos só pode estar a 0 ou a 1 e maxOccurs só pode estar a 1 (si se especifica).

Page 53: Lm xml schema

4.4 Tipos complejos� DECLARACIÓN DE ELEMENTOS CON SUBELEMENTOS

� Secuencia ordenada: a estrutura <xs:choice>

� Elixirase un só dos elementos indicados dentro da estrutura.

� Ejemplo:

Page 54: Lm xml schema

4.4 Tipos complejos� DECLARACIÓN DE ELEMENTOS CON SUBELEMENTOS

� Secuencia desordenada: a estrutura <xs:any>

� A estrutura <xs:any> permite que o esquema acepte nese lugar calquera elemento e o seu contido.

� Ten atributos para, por exemplo, aceptar únicamente elementos de certos espazos de nomes, ou ben que a validación sexa máis oumenos ríxida en devanditos contidos.

Page 55: Lm xml schema

4.4 Declaración de tipos complejos:

� Ej: