Lm xml schema

Post on 21-Jun-2015

138 views 3 download

Transcript of Lm xml schema

Lenguajes de marcas: XML

XML-Schema: 1. Introducción

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.

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.

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”.

1.2. De una DTD a un esquema

� Ejemplo de DTD, que identificamos por libreria.dtd

1.2. De una DTD a un esquema

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

…………..

1.2. De una DTD a un esquema

1.2. De una DTD a un esquema

1.2. De una DTD a un esquema

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.

1.3. De un XML a un esquema

� Ej: Documento XML miatlas.xml

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

1.3. De un XML a un esquema

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

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.

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.

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.

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

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.

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.

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.

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:

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.

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).

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

4.1. Tipos simples predefinidos

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

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

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:

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:

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:

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.

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.

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).

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:

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.

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.

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

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.

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.

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

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

4.3 Declaración de tipos simples: Listas.

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

� Ej:

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:

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 é.

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

� Ej:

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

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

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

4.4 Tipos complejos� Ejemplo:

4.4 Tipos complejos� Ejemplo:

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>

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:

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).

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:

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.

4.4 Declaración de tipos complejos:

� Ej: