You are on page 1of 49

Tema 5: Modelado de datos

XML: XML Schema Definition


Language
Fundamentos de la Web
ndice

Introduccin
Definicin
Declaracin de elementos
Tipos simples
Tipos complejos. Modelos de contenido
Declaracin de atributos
Bibliografa

Fundamentos de la Web 2
ndice

Introduccin
Definicin
Declaracin de elementos
Tipos simples
Tipos complejos. Modelos de contenido
Declaracin de atributos
Bibliografa

Fundamentos de la Web 3
Introduccin: Motivacin

Las DTD tienen algunas limitaciones:


Lenguaje propio para su definicin (los analizadores, etc, tienen
que ser especficos)
No permiten definir tipos de datos
Limitada capacidad para dividir una descripcin en varios
archivos
XML Schema se cre para superar estas limitaciones.
Los XML Schema se consideran como los sucesores de
las DTD.

Fundamentos de la Web 4
Introduccin: Generalidades

Son una recomiendacin de la World Wide Web


Consortium (W3C) desde 2001.
Basados en XML: Los Schemas son documentos XML
bien formados que definen una estructura o modelo para
documentos XML ==> se pueden usar herramientas
XML

Fundamentos de la Web 5
Introduccin: Espacios de nombres
Un espacio de nombres es un conjunto de nombres,
especificados por un URI, que se usan en documentos
XML como definiciones de elementos y de atributos.
Son una extensin de estndar XML original.
Se utilizan tambin en XML Schema (derivado de
XML) pero son incompatibles con las DTD.
Equivalen a las unidades de Pascal, los paquetes de
Java y entidades similares en otros lenguajes.
Surgen de la necesidad de combinar diferentes
vocabularios XML en un mismo documento
Dividir un documento en varios archivos.
Reutilizacin (p.ej. Construcciones matemticas que se
usan en muchos mbitos)
Fundamentos de la Web 6
Introduccin: Espacios de nombres
Un espacio de nombres XML es un vocabulario o
conjunto de nombres usados en definiciones de
elementos, atributos, etc
Cada espacio de nombres tiene un identificador,
tpicamente un URI, pero no es obligatorio.
Es bastante frecuente que el identificador sea una URL
ficticia. En educacin se suelen poner identificadores del
estilo de http://ejemplo.org/Menu

Fundamentos de la Web 7
Introduccin: Espacios de nombres
Se puede asociar uno o ms espacios de nombres a un
elemento XML con el atributo xmlns.
Sintaxis: xmlns=identificador
Ejemplo: <com xmlns= http://ecommerce.org/schema>
.
</com>
El vocabulario definido dentro del espacio de nombres
http://ecommerce.org/schema pasa a ser visible dentro
del elemento com.

Fundamentos de la Web 8
Introduccin: Espacios de nombres
Los documentos XML, y los documentos XML Schema
usan espacios de nombres, tpicamente para enlazar un
documento a su esquema, usar estndares o para dividir
un documento en varios.
Los elementos y atributos de distintos espacios de
nombres pueden tener el mismo identificador. Para
distinguirlos se puede asociar opcionalmente a cada
espacio un prefijo
Sintaxis: xmlns:prefijo=Identificador (URI)
Ejemplo: <com xmlns:es=http://ecommerce.org/schema
Cuando se hace referencia un elemento o atributo
definido en un espacio de nombres prefijado, se debe
prefijar tambin el identificador del elemento o atributo
cuando se use.
Fundamentos de la Web 9
Introduccin: Espacios de nombres
Ejemplo XML con espacios de nombres
<?xml version="1.0" encoding="UTF-8"?>
<persona
xmlns:html="http://www.w3.org/1999/xhtml">
<nombreCompleto>
<nombre>Fulanito</nombre>
<apellidos>de Tal</apellidos>
</nombreCompleto>
<resumen>
<html:html>
<html:head>
<html:title>Resumen de Fulanito de Tal</html:title>
</html:head>
<html:body>
<html:h1>Caractersticas de Fulanito de Tal</html:h1>
<html:p>Por supuesto, Fulanito es magnfico</html:p>
</html:body>
</html:html>
</resumen>
</persona>

Fundamentos de la Web 10
Introduccin: Espacios de nombres
El estndar XML no define exactamente dnde deben
buscar las herramientas XML los documentos que definen
los espacios de nombres.
Para los XML schema se puede usar
schemaLocation
Para los esquemas locales, la mayora de la
herramientas tienen algn sistema para indicar dnde
debe buscarlos por defecto (p.ej. en Eclipse XML
Catalog).
Como el identificador suele ser un URI, si no lo
encuentra por los mtodos anteriores muchas
herramientas intentan localizarlo a partir del URI, pero
es frecuente que sea un URI ficticio.
Fundamentos de la Web 11
ndice

Introduccin
Definicin
Declaracin de elementos
Tipos simples
Tipos complejos. Modelos de contenido
Declaracin de atributos
Bibliografa

Fundamentos de la Web 12
Definicin
Tpicamente en un archivo .xsd
Todo XML Schema tiene como elemento raz:
<schema>

</schema>

Fundamentos de la Web 13
Definicin
El objetivo de los XML Schemas es declarar
vocabularios, que se identificarn en los documentos
que los usen por su espacio de nombres. Para ello se
especificar en el elemento raiz schema el espacio de
nombres que se quiere definir mediante el atributo
targetNamespace.
targetNamespace="http://www.prueba.es/MiEsquema
No es necesario que apunte a ningn sitio existente.
Es recomendable aadir una declaracin xmlns
asociada para especificar un prefijo a usar internamente.
xmlns:Ej="http://www.prueba.es/MiEsquema"
No todos los XML Schemas la incluyen, en cuyo caso los
nombres declarados dentro del esquema van sin prefijo.
Fundamentos de la Web 14
Definicin
En general se aadir el espacio de nombres que
describe los elementos utilizados en la definicin de XML
Schema (schema, element, complexType, etc.):
xmlns:xsd="http://www.w3.org/2001/XMLSchema/"
Tambin se pueden aadir otros atributos a <schema>:
version = version number
attributeFormDefault = qualified o unqualified
elementFormDefault = qualified o unqualified

attributeFormDefault y elementFormDefault controlan como


se asocian los elementos y tipos declarados al targetNameSpace. Se
recomienda poner elementFormDefault a qualified.

Fundamentos de la Web 15
Validacin
Para enlazar documento XML a uno o varios XML Schema,
se asocia su espacio de nombres (el declarado en
targetNamespace) al elemento raz del documento,
opcionalmente con un prefijo:

<raiz
xmlns = URI
...
</raiz>

Se puede validar un documento XML frente a sus


Schema empleando algn tipo de herramienta software:
(http://tools.decisionsoft.com/schemaValidate/)

Fundamentos de la Web 16
Validacin
Esquema:

<schema
targetNamespace=http://esquemaejemplo.es
.

Documento XML

<esq:elemRaiz xmlns:esq=http://esquemaejemplo.es
xmlns=

Fundamentos de la Web 17
vALIDACIN
Opcionalmente se puede especificar dnde est el
esquema con el atributo schemaLocation, que a su vez
est declarado en el espacio de nombres XMLSchema-
instance
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=id-espacio-nombres fichero">

Fundamentos de la Web 18
Introduccin: Validacin
Esquema:
<schema
targetNamespace= http://www.ejemplo.org/Nota
.

Documento XML
<?xml version="1.0" encoding="UTF-8"?>
<n:nota xmlns:n="http://www.ejemplo.org/Nota"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://www.ejemplo.org/Nota file:///C:/FW/nota.xsd">

</n:nota>

Fundamentos de la Web 19
ndice

Introduccin
Definicin
Declaracin de elementos
Tipos simples
Tipos complejos. Modelos de contenido
Declaracin de atributos
Grupos de elementos y atributos
Bibliografa

Fundamentos de la Web 20
Declaracin de elementos
La declaracin de elementos se realiza con <element>
y debe especificar el nombre del elemento y definir el
contenido permitido en el mismo.
Ejemplo:
definicin:
<xs:schema
xmlns:xs =http://www.w3.org/2001/XMLSchema/

<xs:element name=nombre type=xs:string />


</xs:schema>

uso:
<nombre>Pepe Prez </nombre>

Fundamentos de la Web 21
Declaracin de elementos
Otros atributos de element:
<element
name = nombre
type = tipo (tiene que ser predefinido o global)
minOccurs = nmero no negativo
maxOccurs = nmero no negativo
default = valor por defecto
fixed = valor prefijado
>

Fundamentos de la Web 22
Tipos de contenido
Dentro un XML Schema los modelos de contenido de los
elementos se definen como tipos de contenido.
Estos tipos se podran categorizar en dos grandes
grupos:
Tipo simple: modelo de contenido simple, sin
subelementos ni atributos. Emplean este tipo los
elementos bsicos y los atributos.
Tipo complejo: cualquier otro modelo no
representado por el tipo simple. Los elementos de
tipo complejo pueden contener atributos y otros
elementos.
Definicin: simpleType / complexType

Fundamentos de la Web 23
Tipos de contenido
Tipos de contenido en XML Schema:
Elementos:
Elementos con texto y sin atributos: Tipo Simple
Elementos con texto y con atributos: Tipo Complejo
Elementos con subelementos: Tipo Complejo
Elementos con contenido mixto: Tipo Complejo
Atributos: Tipo Simple

Ejemplo:
Contenido (XML) a modelar con un tipo simple:
<nombre> Pepe Prez </nombre>
Contenido a modelar con un tipo complejo:
<mensaje>
<cabecera> </cabecera>
<cuerpo> </cuerpo>
</mensaje>
Fundamentos de la Web 24
Tipos locales y globales

Los tipos de elemento pueden ser especificados de dos


formas:
Global: Se declara el tipo a como hijo del elemento raz
<schema>, y puede ser utilizado por cualquier elemento en el
documento (referenciado con el atributo type) por lo que puede
reutilizarse para varios elementos.
Local: Se declara el tipo directamente dentro del elemento, por
lo que no puede reutilizarse.

Fundamentos de la Web 25
Tipos locales y globales
Ejemplo de tipo local:
<xsd:element name="alumno">

<xsd:complexType>
<xsd:sequence>
<xsd:element name="nombre" type="xsd:string"/>
<xsd:element name="apellidos" type="xsd:string"/>
</xsd:sequence>
<xsd:complexType>

</xsd:element>

Fundamentos de la Web 26
Tipos locales y globales
Ejemplo de tipo global, reutilizado por varios elementos
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/Alumnos"
xmlns:a="http://www.example.org/Alumnos">

<xsd:complexType name="tipoAlumno">
<xsd:sequence>
<xsd:element name="nombre" type="xsd:string"/>
<xsd:element name="apellidos" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>

<xsd:element name=delegado type=a:tipoAlumno/>


<xsd:element name=becario type=a:tipoAlumno/>

</xsd:schema>

Fundamentos de la Web 27
ndice

Introduccin
Definicin
Declaracin de elementos
Tipos simples
Tipos complejos. Modelos de contenido
Declaracin de atributos
Bibliografa

Fundamentos de la Web 28
Tipos simples
XML Schema dispone de 44 tipos simples predefinidos,
que por convencin se referencian con un prefijo xsd o
xs.
Tipos primitivos:
string, boolean, decimal, float, double, duration,
dateTime, time, date, gYearMonth, gYear, gMonthDay,
gDay, gMonth, hexBinary, base64Binary, anyURI, QName,
NOTATION
Tipos derivados:
normalizedString, token, Name, NCName,language,
NMTOKEN, NMTOKENS ID, IDREF, IDREFS, ENTITY,
ENTITIES, integer, nonNegativeInteger,
positiveInteger, nonPositiveInteger, negativeInteger
long, int, short unsignedLong, unsignedInt,
unsignedShort byte, unsignedByte
Fundamentos de la Web 29
Tipos simples
Ejemplo de definicin de un elemento de tipo simple
predefinido
definicin:
<xs:schema
xmlns:xs =http://www.w3.org/2001/XMLSchema/

<xs:element name="calificacin"
type="xs:integer"/>
</xs:schema>

uso:
<calificacin>7</calificacin>

Fundamentos de la Web
30
Tipos simples
Formatos para datos de tiempo y fechas (estndar ISO 8601, usado
tambin en otros lenguajes relacionados como XPath)
date
aaaa-mm-dd
time
hh:mm:ss
dateTime
aaaa-mm-ddThh:mm:ss

31
Tipos simples definidos por el usuario
Se pueden definir un tipo simple derivado como una lista
de valores de otro tipo simple
Definicin: <xsd:simpleType name="sizes">
<xsd:list itemType="decimal"/>
</xsd:simpleType>
Uso: <sizes> 8 10.5 12 </sizes>
Tambin se pueden definir tipos simples derivados
mediante restricciones

Fundamentos de la Web 32
Restricciones
Las facetas o restricciones permiten restringir el valor
que se puede dar a un elemento o atributo XML.
Se pueden usar 12 tipos de restricciones:
Tipos String: length, minLength, maxLength,
pattern, enumeration, whiteSpace.
Tipos numricos:
minInclusive, maxInclusive, (intervalos)
maxExclusive, maxExclusive,
totalDigits, fractionDigits.

Fundamentos de la Web 33
Restricciones
Restriccin por longitud
Ejemplo de strings de 5 a 10 caracteres

<xsd:simpleType name="string5to10">
<xsd:restriction base="xsd:string">
<xsd:minLength value="5"/>
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>

Fundamentos de la Web 34
Restricciones
Especificacin de un conjunto de valores aceptables
Ejemplo de enumeration:

<xsd:simpleType name="weekDays">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Monday"/>
<xsd:enumeration value="Tuesday"/>
<xsd:enumeration value="Wednesday"/>
<xsd:enumeration value="Thursday"/>
<xsd:enumeration value="Friday"/>
<xsd:enumeration value="Saturday"/>
<xsd:enumeration value="Sunday"/>
</xsd:restriction>
</xsd:simpleType>

Fundamentos de la Web 35
Restricciones
Restriccin empleando patrones (expresiones regulares)
Ejemplo de strings con letras maysculas y minsculas (no
mezcladas)

<xsd:simpleType name="myName">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Z]+"/>
<xsd:pattern value="[a-z]+"/>
</xsd:restriction>
</xsd:simpleType>

Fundamentos de la Web 36
ndice

Introduccin
Definicin
Declaracin de elementos
Tipos simples
Tipos complejos. Modelos de contenido
Declaracin de atributos
Bibliografa

Fundamentos de la Web 37
Subelementos
En los tipos complejos los elementos pueden estar
anidados uno dentro de otro hasta cualquier nivel.
El nmero de subelementos de cada etiqueta se puede
especificar con los atributos minOccurs y maxOccurs.
El valor por defecto de ambos es 1.
Para indicar que maxOccurs es ilimitado se utiliza
unbounded.

Fundamentos de la Web 38
Modelos de contenido
Tres posibles modelos de contenido:
sequence: los subelementos deben ocurrir en el orden indicado.
Son similares a (a,b)en los DTD
choice: Los subelementos son alternativos. Es similar a a|b en
DTD
all: todos los elementos pueden aparecer en cualquier orden,
aunque tiene una serie de limitaciones:
Cada elemento puede ocurrir mximo una vez: minOccurs
ser cero o uno y maxOccurs uno
No puede contener modelos sequence y choice
Debe ocurrir como el nico hijo inmediato al comienzo del
modelo de contenido y no puede ocurrir ms de una vez

Fundamentos de la Web 39
Modelos de contenido
Ejemplo del modelo sequence

<xsd:complexType>
<xsd:sequence>
<xsd:element name="day" type="day"/>
<xsd:element name="month" type="month"/>
<xsd:element name="year" type="xsd:integer"/>
<xsd:element name=weekday" minOccurs="0"
type="weekDay"/>
</xsd:sequence>
</xsd:complexType>

Fundamentos de la Web 40
Modelos de contenido
Ejemplo del modelo choice

<xsd:complexType name="transporte">
<xsd:choice>
<xsd:element name="coche" type="xsd:string"/>
<xsd:element name="tren" type="xsd:string"/>
<xsd:element name="avion" type="xsd:string"/>
</xsd:choice>
</xsd:complexType>

Fundamentos de la Web 41
Modelos de contenido
Ejemplo del modelo all. address debe contener:
street, city, country y zip, y puede contener
state. Se permite cualquier orden.

<xsd:complexType name="address">
<xsd:all>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>
<xsd:element name="state" minOccurs="0"
type="xsd:string"/>
<xsd:element name="country" type="xsd:string"/>
<xsd:element type="zip"/>
</xsd:all>
</xsd:complexType>

Fundamentos de la Web 42
Modelos de contenido
Ejemplo de modelo de contenido mixto

<xsd:element name="elementoMixto">
<xsd:complexType mixed="true minOccurs="0
maxOccurs="unbounded">
<xsd:choice>

<xsd:element name=hiperenlace" type="xsd:anyURI"/>


<xsd:element name="subelement2" type="miTipoComplejo"/>

</xsd:choice>
</xsd:complexType>
</xsd:element>
Obsrvese que el texto no aparece como subelemento.
A diferencia de los DTDs, se puede especificar el nmero de ocurrencias y el orden
(utilizando sequence)

Fundamentos de la Web 43
ndice

Introduccin
Definicin
Declaracin de elementos
Tipos simples
Tipos complejos. Modelos de contenido
Declaracin de atributos
Bibliografa

Fundamentos de la Web 44
Declaracin de atributos
Similar a las declaraciones de elementos. Emplea la
palabra attribute y contiene name y type.
La declaracin de atributo se relaciona con el elemento
padre y debe seguir a las declaraciones de hijos del
elemento.

<xsd:complexType name="Collection">
<xsd:sequence>
<xsd:element type="book"/>
<xsd:element type="CD"/>
</xsd:sequence>
<xsd:attribute name="version" type="xsd:string"/>
</xsd:complexType>

Fundamentos de la Web 45
Declaracin de atributos
Ocurrencias del atributo: el atributo use determina la
ocurrencia del propio atributo:
Atributo requerido:
<xsd:attribute name="version" use="required" .../>
Atributo opcional (por defecto):
<xsd:attribute name="version" use="optional" .../>
Atributo prohibido:
<xsd:attribute name="version" use="prohibited" .../>
Los atributos pueden tomar valores fijos y por defecto:
Valor fijo:
<xsd:attribute name="version" fixed="1.0" .../>
Valor por defecto:
<xsd:attribute name="version" default="1.0" .../>
Fundamentos de la Web 46
Elementos vacos
Elementos vacos: pese a que no tengan contenido
pueden tener atributos.

Ejemplo:

Sin atributos:
<xsd:complexType name="vacio"/>

Con atributos:
<xsd:complexType name="vacio">
<xsd:attribute name="price" type="xsd:integer"/>
<xsd:attribute name="version" type="xsd:string"/>
</xsd:complexType>

Fundamentos de la Web 47
ndice

Introduccin
Definicin
Declaracin de elementos
Tipos simples
Tipos complejos. Modelos de contenido
Declaracin de atributos
Bibliografa

Fundamentos de la Web 48
Bibliografa

XML Schema. Eric van der Vlist. O'Reilly Media


W3C: (http://www.w3.org/XML/Schema)
XML Schema Primer, 2 Edition
http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/
Beginning XML, 4th Edition. David Hunter, Jeff Rafter,
Joe Fawcett, Eric van der Vlist, Danny Ayers, Jon
Duckett, Andrew Watt, Linda McKinnon. Wrox.

Fundamentos de la Web 49

You might also like