XML y XML Schema. El documento introduce XML como lenguaje de marcado extensible para estructurar datos, los espacios de nombres en XML para evitar conflictos de nombres, y XML Schema como mecanismo para validar documentos XML y definir su estructura.
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
Tema 2
1. XML y XML Schema
Programación de Red.
Ingeniería en Informática
2. XML y XLM Schema
Objetivos:
Introducción a XML, como tecnología base
para el desarrollo de Servicios Web
Conocer el concepto de espacio de nombres
en el contexto de XML
Estudiar XML Schema como mecanismo para
la validación de documentos XML
Ver ejemplos de utilización de estas
herramientas como base para los Servicios
Web
2
3. XML y XML Schema
XML.
Espacios de Nombres.
XML Schema.
3
4. XML
¿Qué es XML (eXtensible Markup Language)?
XML es un metalenguaje ⇒ aplicaciones de XML
Lenguaje de tags (similar en sintaxis a HTML)
Estandarizado por http://www.w3.org
Es extensible: XML no impone un conjunto de tags,
sino sólo unas pocas normas de cómo usarlos. Los
tags se abren y se cierran y en medio pueden tener
otros tags anidados. Todos los documentos tienen un
tag raíz. Los tags pueden tener atributos, etc.
Permite escribir documentos de texto que expresan
datos y no aspecto visual o de presentación (a
diferencia de HTML). XSL ⇒ Presentación 4
5. XML
¿Qué es XML (eXtensible Markup Language)?
XML es un lenguaje de marcas capaz de estructurar y definir la
información en un documento.
Una marca en XML ⇒ Es una etiqueta que ayuda a organizar la
estructura de un documento y define semánticamente la
información que identifica.
XML no es sólo un simple lenguaje de marcado para documentos
de páginas Web ⇒ Es una familia de tecnologías y estándares
para la integración e interoperabilidad de aplicaciones Web
Estructurado ⇒ Se puede modelar datos a cualquier nivel de
complejidad, y su definición está en un DTD (Document Type Definition)
o en XML-Schema.
Comprobable si es válido ⇒ Cada documento se puede validar frente a
un DTD, a un esquema XML o en su defecto, se puede declarar bien
formado.
Independiente del medio ⇒ Para publicar contenidos en múltiples
formatos.
Independiente del fabricante y la plataforma ⇒ Para poder utilizar 5
cualquier herramienta estándar.
6. XML
Razones para su utilización
Facilidad ⇒ Fácil de entender por los humanos y fácil
de procesar por programas informáticos
Universal ⇒ Totalmente independiente del sistema
operativo y del lenguaje de programación
Versatilidad ⇒ Permite representar cualquier tipo de
dato de una forma sencilla y sirve para datos sencillos,
jerárquicos, estructurados, etc.
Texto plano ⇒ Independiente de la plataforma de
procesamiento (no binario)
Estructuración ⇒Documento jerárquico totalmente
estructurado, formando árboles de datos 6
7. XML
Campos de aplicación
Extracción, Intercambio e integración de información
entre aplicaciones y sistemas heterogéneos
Generación de vistas (HTML, WML, PDF, etc.) a partir
de datos en documentos XML
Configuración de aplicaciones y de servicios
Bases de datos
Sistemas de información geográfica (GML)
Sistemas de información gerencial
Etc.
7
9. XML
Formato de un documento XML
Documento XML: Sólo contiene texto plano, puede
ser un archivo, una secuencia de caracteres que se
envía por un socket, etc.
Aplicación XML: Conjunto particular de tags que
permiten representar una determinada información (ej.:
la información sobre datos geográficos del catastro)
Se dice que un documento XML está bien formado
(well-formed) si cumple con el conjunto de reglas ⇒
construir parsers eficientes
Distingue entre mayúsculas y minúsculas
Seguir codificación UTF-8, UTF-16, ISO-8859-1, etc.
⇒ evitar la “ñ” y caracteres acentuados 9
10. XML
Formato de un documento XML
Comentarios: Empiezan con <!-- y termina con -->,
pudiendo englobar varias líneas
Dentro de un comentario no puede aparecer la
secuencia “--”
Comentarios tipo <!---- Comentario ----> no
son válidos
Declaración XML: <?xml version="1.0"
encoding="ISO-8859-1" standalone="no" ?>
version: Indica la versión de la especificación XML a
la que es conforme el documento (valor 1.0)
encoding: Indica la codificación de los caracteres del
documento 10
11. XML
Formato de un documento XML
encoding: Por defecto, UTF-8 (es un sistema de
codificación de longitud variable que permite representar
todos los caracteres Unicode. El rango de caracteres del
ASCII estándar (7 bits) se representa con un byte ⇒ un
documento ASCII es un documento UTF-8. Los caracteres
128..2047 se representan con 2 bytes y el resto de
caracteres se representan con 3 bytes
encoding: Cuando un documento XML se crea con un
editor ASCII de 8 bits, si el documento usa caracteres no
estándar ASCII (128..255) (ej.: á, Ü, ñ, etc.), puede
especificar ISO-XXXX- 1. Codificación de un byte 0..127 ⇒
ASCII estándar 128..159 ⇒ caracteres de control 160..255
⇒ letras acentuadas y caracteres adicionales para
determinados idiomas. Por ejemplo, ISO-8859-1 ⇒ Latin 1 11
12. XML
Formato de un documento XML
standalone: yes ⇒ El documento no necesita
ningún otro. no (por defecto) ⇒ El documento requiere
algún otro (en el ejemplo, el esquema referenciado)
Todo documento debe tener un elemento raíz. Cuando
se usa un esquema para validar el documento XML, se
indica en el tag raíz. XML ⇒ datos en forma de árbol
Entre el tag de inicio de un elemento y el de fin puede
haber otros elementos o texto. Si contiene texto, los
blancos forman parte de él
A diferencia de HTML, no se puede mezclar el orden
de los tags anidados. El primer elemento que se abre
debe ser el último que se cierra 12
13. XML
Formato de un documento XML
Un elemento puede tener atributos, que indican
características (contenido y/o propósito) propias de los
elementos. El valor del atributo tiene que ir
entrecomillado, de la forma: atributo=“valor”, y
para un elemento dado, un atributo sólo puede tener
un valor
Elemento vacío: No tiene elementos anidados ni
texto. Puede tener atributos. Ejemplo: <tag
atr1=“val1” atr2=“val2”></tag>, por
comodidad, se puede usar la notación <tag
atr11=“val1” atr2=“val2”/>
13
14. XML
Formato de un documento XML
Un documento bien formado debe cumplir dos
condiciones siguientes: (1) las etiquetas están
anidadas correctamente y (2) los atributos son únicos
en un elemento
En principio, se puede seguir la siguiente convención:
Usar elementos para datos multivaluados o de gran
cantidad de texto; y usar atributos en caso contrario
Para poder incluir ciertos caracteres en el valor de un
atributo o en el texto de un elemento, XML predefine
las siguientes referencias a entidades: < ⇒ <,
& ⇒ &, > ⇒ >, " ⇒ “, ' =>
‘. Por ejemplo: <tag char=“"”> Si A <
B, entonces ... </tag> 14
16. XML
Tecnología XML
XML Schema. Recomendación de W3C para la
creación de esquemas para documentos XML
RDF (Resource Definition Framework). Propuesta para
la representación de metadatos en XML
Hojas de estilo. Lenguajes que transforman
documentos XML en documentos HTML, de forma que
los documentos XML se puedan ver en un navegador.
XSL (XML Stylesheet Language) ⇒ Lenguaje de
transformación
SAX (Simple API XML). Parser de documentos XML
MathML. Aplicación de XML a matemáticas
XPath. Define la sintaxis para identificar y referirse las
distintas partes de un documento XML. 16
17. XML
Tecnología XML
DOM (Document Object Model). Parser que construye
una representación en árbol de un documento XML.
Ofrece una visión orientada a objetos del documento
XML en lugar de una visión de tipo abstracto de datos.
Para ello crea una serie de interfaces que definen el
comportamiento de cada elemento. Así se accede a la
estructura y a los datos mediante métodos
XLink y XPointer. Permiten añadir enlaces e
imágenes a XML. Sin embargo, aún no son soportados
por ningún navegador por lo que actualmente, en las
páginas XML no se pueden mostrar imágenes o
enlaces. La solución sería generar HTML mediante
XSLT
17
18. XML
Tecnología XML
XQuery. Proporciona un modo flexible de consulta
para extraer datos de los documentos en el Web.
XML Namespaces. Describe cómo se puede asociar
una URL con cada etiqueta y atributo de un documento
XML.
XML Schemas. Proporcionan un modo de definir la
estructura, el contenido y la semántica de los
documentos XML.
XEncryption, XSignature y XSecurity. Tratan los
aspectos de seguridad y autentificación en el
intercambio de documentos XML.
18
19. XML
Ventajas XML
Es un formato estructurado. Contiene información y
metainformación
Ha sido diseñado específicamente para Internet.
Soportado por visualizadores y servidores
Numerosas herramientas de procesamiento
Legible por personas humanas
Admite la definición de vocabularios específicos
Separa contenido del procesamiento y visualización
Aumenta la seguridad mediante la validación de
documentos
Formato abierto, respaldado por numerosas
organizaciones 19
20. XML
Inconvenientes XML
Puede requerir demasiado espacio, ancho de banda y
tiempo de procesamiento. Documentos largos con
mucha información redundante
Es una sintaxis de documentos, no un lenguaje de
programación
Es posible crear formatos y vocabularios propietarios
Puede fomentar la proliferación de vocabularios
específicos
Bueno para texto, malo para datos binarios
Poco eficiente como lenguaje de almacenamiento de
bases de datos 20
21. XML
Conclusiones sobre XML
La falta de estructura en la información en Internet incide
negativamente en las prestaciones de la red y en las posibilidades
de aprovechamiento de la información allí depositada
XML es un lenguaje de marcado de documentos diseñado para
trabajar en Internet simple, flexible y fácil de utilizar
Hay mucho trabajo por hacer para conseguir un intercambio
automatizado de documentos en Internet que permita el desarrollo
de las aplicaciones ya existentes y de otras nuevas
Enlaces de interés relativos a XML
WWW Consortium (W3C) ⇒ www.w3.org
Escuela W3 ⇒ www.w3schools.com
XML.com de O'Reilly ⇒ www.xml.com
Especificación XML 1.0 ⇒ www.w3.org/TR/REC-xml
OASIS ⇒ www.oasis-open.org
21
22. XML y XML Schema
XML.
Espacios de Nombres.
XML Schema.
22
23. Espacios de Nombres
Un documento XML puede hacer uso de espacios de
nombres
Concepto similar al de CORBA IDL y C++, paquete
Java, etc.
Permiten evitar conflictos de nombres cuando en un
documento XML se usan tags de distintas aplicaciones
XML
Cada espacio de nombres está asociado a una URI
(Uniform Resource Identifier) o identificador global
único, que debe ser única. Se aconseja usar URL
(Uniform Resource Locator). No tienen porque tener
una existencia real (y de hecho, no suelen tenerla)
23
24. Espacios de Nombres
Por ejemplo: <asignaturas
xmlns:xsi="http://www.w3.org/2001/XMLSche
ma-instance"
xsi:noNamespaceSchemaLocation="http://www
.ual.es/~acorral/Asignaturas.xsd">
xmlns: permite especificar los elementos y los que éste
contiene pueden usar los atributos y elementos del
espacio de nombres asociado con la URL
http://www.w3.org/2001/XMLSchema-instance,
prefijándolos con xsi:
Es la URI la que define el espacio de nombres y no el
prefijo. Distintas documentos XML pueden usar distintos
prefijos para referirse a un mismo espacio de nombres
24
25. Espacios de Nombres
En este ejemplo usamos el espacio de nombres
http://www.w3.org/2001/XMLSchema-
instance para usar el atributo
noNamespaceSchemaLocation, que permite
especificar la ubicación del esquema que valida a un
documento XML que no define un espacio de nombres
propio
Es posible ir asociando espacios de nombres a los
elementos según van apareciendo
Mediante xmlns=“...” se define un espacio de
nombres por defecto (sin alias)
Ampliamente utilizados para combinar vocabularios.
Facilitan la incorporación de elementos no previstos
inicialmente 25
26. XML y XML Schema
XML.
Espacios de Nombres.
XML Schema.
26
27. XML Schema
Esquema ⇒ Definición de estructura de un conjunto
de documentos XML
Validar ⇒ Chequear que un documento sigue un
esquema. Principal ventaja: protección de errores.
Otras aplicaciones: edición, compresión, etc.
Existen varios tipos de documentos para expresar los
tags válidos de una aplicación XML y sus restricciones
DTD (Document Type Definition) ⇒ Un ejemplo de
esquemas (con varias limitaciones)
XML Schema ⇒ Desarrollo posterior del W3C (.xsd)
Existen otros: RELAX-NG, Schematron, etc.
27
28. XML Schema
Características de los DTDs
Especifican estructura del documento: elementos,
atributos, anidamientos, etc.
Integridad referencial mínima (ID, IDREF)
Mecanismo sencillo de abstracción: entidades ≈
macros
Inclusión de documentos externos
Integrados en XML (Parte de la especificación)
Sencillos de comprender (≈ Expresiones regulares)
Semánticamente pobres
28
29. XML Schema
Limitaciones de los DTDs
La Sintaxis no es XML (difíciles de manipular)
No soportan Espacios de Nombres
No permiten especificar tipos de datos (por ejemplo:
enteros, flotantes, fechas, etc. Ni secuencias no ordenadas
((e1,e2,e3)|(e1,e3,e2)|(e2,e1,e3)|...(e3,e2,e1))
No hay soporte para declaraciones sensibles al contexto:
Los elementos se definen todos a nivel de documento,
ejemplo, contenido con el mismo nombre cuya estructura
cambia en diferentes contextos
Soporte limitado para referencias cruzadas, no es posible
formar claves a partir de varios atributos o de elementos
No son extensibles (una vez definido, no es posible añadir
nuevos vocabularios a un DTD) 29
30. XML Schema
Los Schemas permiten
Describir estructura
Anidación
Multiplicidad
Ordenamiento
Describir tipos
Para velocidad de funcionamiento
Para mejor almacenamiento
Para búsquedas
Para inserción de datos
Para detectar errores
30
31. XML Schema
Los tipos de datos tienen en XML Schema la función
de las clases en la POO. El usuario puede construir
tipos de datos a partir de tipos predefinidos, agrupando
elementos y atributos de una determinada forma y con
mecanismos de extensión parecidos a la herencia.
Los tipos de datos se clasifican en función de los elementos
y atributos que contienen ⇒ Los tipos de datos pueden ser
simples o complejos.
Tipos simples
Tipos predefinidos de XML: string, double, boolean, etc.
List (lista de datos separados por espacios).
Union (tipo de dato derivado de la unión de tipos predefinidos).
Tipos complejos ⇒ Aquellos que tienen elementos hijos y/o
31
atributos.
32. XML Schema
XML Schema incluye el uso de namespaces. Los
"espacios de nombres" permiten definir elementos con
igual nombre dentro del mismo contexto, siempre y
cuando se anteponga un prefijo al nombre del
elemento. El uso de namespaces también evita
confusiones en la reutilización de código.
Es posible agrupar atributos, haciendo más
comprensible el uso de un grupo de aspectos de varios
elementos distintos, pero con denominador común,
que deben ir juntos en cada uno de estos elementos.
Pueden tener nombre o ser anónimos. Si tienen
nombre pueden ser reutilizados dentro del mismo
XML Schema o por otros XML Schemas 32
33. XML Schema
Objetivos de diseño
Sintaxis XML
Soporte para Espacios de Nombres
Mayor expresividad. Restricciones numéricas e
integridad dependientes del contexto
Tipos de datos
Gran cantidad de tipos de datos predefinidos
Creación de tipos de datos por el usuario
Extensibilidad
Inclusión/Redefinición de esquemas
Herencia de tipos de datos
Soporte a documentación 33
35. XML Schema
Ventajas al utilizar schemas
Utilizan una gran cantidad de tipos de datos básicos
Son extensibles ⇒ restricciones, extensiones, herencia
Están escritos en XML
Resulta más largo que un DTD pero a cambio:
Mayor precisión en la definición de tipos de datos: <date
type=“date”>1999-03-11</date> ⇒ ¿11 de marzo o 3
de noviembre?
La exportación e importación de datos en formato xml
más sencilla
Posibilidad de uso de datos complejos definidos por el
usuario 35
36. XML Schema
Características de XML Schema
XML Schema cuenta con una serie de tipos
predefinidos como son las cadenas, los enteros, etc.
Un esquema creado con XML Schema se guarda en
un archivo de texto con la extensión .xsd, y
normalmente siguen el siguiente patrón
36
37. XML Schema
Características de XML Schema
El espacio de nombres del XMLSchema es xsd:
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema”/>
schemaes el elemento raíz del documento
Un elemento (element) se define como
<xsd:element name="nombre" type="tipo"/>
name es el nombre del elemento y type el tipo de datos
Los valores más comunes de tipos de datos (type) son:
xsd:boolean xsd:integer
xsd:date xsd:string
xsd:decimal xsd:time
Ej.: <xsd:element name="apellido" type="xsd:string"/> 37
38. XML Schema
Características de XML Schema
Los atributos (attribute) se declaran:
<xsd:attribute name="name“ type="type"/>
name y type es igual que en xsd:element
Otros atributos:
default="default value" ⇒ si no se especifica otro
valor
fixed="value" ⇒ no se puede especificar otro valor
use="optional" ⇒ el atributo no es obligatorio (por
defecto)
use="required" ⇒ el atributo debe estar presente
Ejemplo: <xsd:attribute name=“idioma"
38
type="xsd:string"/>
39. XML Schema
Definición de tipos
De los tipos básicos pueden derivarse nuevos tipos,
simples o complejos
Los tipos simples son tipos (de elementos o
atributos) que tienen sólo valores y no otros
atributos o elementos. Se definen mediante
xsd:simpleType
<xsd:element name=“nombre” type=“xsd:string”/>
<xsd:attribute name=“identificacion”
type=“xsd:ID”/>
Los tipos complejos pueden contener cualquier
combinación de contenido de elementos,
información de caracteres (texto) y atributos. Se
definen con xsd:complexType 39
41. XML Schema
Tipos simples
Para definir un tipo simple personalizado se sigue la
sintaxis siguiente:
<xsd:simpleType name=”nombreTipoPersonalizado”>
<xsd:restriction base=”nombreTipoBase”>
... Restricciones o facetas ...
</xsd:restriction>
</xsd:simpleType>
donde nombreTipoPersonalizado es el nombre del tipo
que se quiere definir, nombreTipoBase es el tipo que se
está tomando como base para la definición de nuestro
tipo, y las Restricciones son cada una de las
expresiones o reglas que definen el tipo personalizado
41
42. XML Schema
Tipos simples (restricciones)
Permiten definir un tipo simple a partir de otro,
restringiendo los valores de este último ⇒ Las
restricciones representan uno de los mecanismos para
definir tipos derivados de otros tipos simples
El tipo Genre define un tipo string enumerado, es
decir, sus valores posibles están restringidos a uno de
los definidos en la enumeración
Existen muchas otras posibilidades de restricciones
Definir un tipo derivado de un string que restringe la
longitud máxima de sus posibles valores
Definir un tipo derivado de un string que restringe sus
valores mediante una expresión regular
42
43. XML Schema
Tipos simples (restricciones)
Permiten restringir el valor que se le puede dar
a un elemento o atributo XML
Tipos de restricciones:
Sobre valores
Sobre un conjunto de valores
Sobre series de valores
Sobre espacios en blanco
Se pueden definir también ⇒ enumeraciones
patrones, rangos y listas 43
44. XML Schema
Tipos simples (restricciones)
La forma general de establecer una restricción sobre
un valor es:
<xsd:element name="name"> (o xsd:attribute)
<xsd:restriction base="type">
... Restricciones ...
</xsd:restriction>
</xsd:element>
Por ejemplo:
<xsd:element name=“edad">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0">
<xsd:maxInclusive value="140">
</xsd:restriction>
</xsd:element> 44
45. XML Schema
Tipos simples (restricciones)
Restringe el valor a un conjunto de valores.
<xsd:enumeration value=”valor”/>
Ejemplo:
<xsd:element name=“estacion">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value=“primavera"/>
<xsd:enumeration value=“verano"/>
<xsd:enumeration value=“otoño"/>
<xsd:enumeration value=“invierno"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
45
46. XML Schema
Tipos simples (restricciones)
Para limitar el contenido del elemento XML definiendo
las series de números y letras que se pueden usar
patrones (pattern). <xsd:pattern
value=”expresionRegex”/>
Ejemplo
<xsd:element name="letra">
<xsd:simpleType>
<xsd:restriction base="xs:string">
<xsd:pattern value="[a-z]"/>
<!-- <xsd:pattern value=“INV06d{3}"/> -->
</xsd:restriction>
</xsd:simpleType>
46
</xsd:element>
47. XML Schema
Tipos simples (restricciones)
expresionRegex ⇒ indica cómo debería ser
el formato del contenido. Lenguaje regex,
selección de símbolos
. (el punto) ⇒ Cualquier carácter
d ⇒ dígito. D ⇒ No dígito
s ⇒ espacio en blanco y salto de línea. S ⇒
Distinto de espacio en blanco y salto de línea
* (asterisco) ⇒ Para tener cero o más
elementos de los precedidos por *
| ⇒ Para elegir un valor entre varios 47
48. XML Schema
Tipos simples (restricciones)
Símbolos regex
? ⇒ Para tener cero o un elemento de los
precedidos por la ?
+ ⇒ Para tener uno o más elementos de los
precedidos por el +
{x} ⇒ Para repetir exactamente x valores del
elemento que precede a las llaves
{x,} ⇒ Para repetir al menos (mínimo) x
valores del elemento que precede a las llaves
{x,y} ⇒ Para repetir entre x e y valores del
elemento que precede a las llaves 48
49. XML Schema
Tipos simples (restricciones)
Restricciones sobre espacios en blanco.
whiteSpace ⇒ dice lo que hay que hacer con
los espacios en blanco
value="preserve" ⇒ Mantiene los espacios
en blanco como están
value="replace" ⇒ Cambia los espacios en
blanco (saltos, tab, …) por espacios
value="collapse" ⇒ Reemplaza todas las
secuencias de espacios en blanco por un sólo
espacio en blanco
49
50. XML Schema
Tipos simples (restricciones)
Restricciones sobre números (rangos)
minInclusive ⇒ Número debe ser ≥ value
minExclusive ⇒ Número debe ser > value
maxInclusive ⇒ Número debe ser ≤ value
maxExclusive ⇒ Número debe ser < value
totalDigits ⇒ Número debe tener
exactamente value dígitos
fractionDigits ⇒ Número no debe tener
más de value dígitos después del punto
decimal
50
51. XML Schema
Tipos simples (restricciones)
Restricciones sobre string (rangos)
length ⇒ El string debe contener
exactamente value caracteres
minLength ⇒ El string debe contener al
menos value caracteres
maxLength ⇒ El string no debe contener más
de value caracteres
pattern ⇒ El value es una expresión regular
que el string debe cumplir
51
53. XML Schema
Tipos simples (restricciones)
Listas: Colecciones de datos similares a los arrays
<xsd:list base=”tipoBase”/>
<xsd:list base=”tipoBase”>
... Restricciones sobre longitud ...
</xsd:list>
Ejemplo
<xsd:simpleType name=“alineacion”>
<xsd:list base=“xsd:string"/>
<xsd:lenght value=“5"/>
</xsd:simpleType>
53
54. XML Schema
Tipos complejos
Elementos que contienen otros elementos hijo o que
contienen atributos o texto
Se suelen dividir en 4 tipos:
Elementos vacíos ⇒ Sólo contienen atributos,
nunca elementos o texto
Elementos no vacíos con atributos ⇒ Contienen
texto y posiblemente atributos
Elementos con elementos hijos ⇒ No contienen
texto, sólo incluyen atributos o elementos
Elementos con elementos hijos y con “texto” o valor
propio (mixtos) ⇒ Contienen una combinación de
elementos, atributos y texto 54
55. XML Schema
Tipos complejos. Ejemplos
<product pid="1345"/>
<comida tipo=“postre”>helado</comida>
<empleado>
<nombre>Manuel</nombre>
<apellidos>Suarez</apellidos>
</empleado>
<descripcion>Sucedió el <date>03.03.99</date></descripcion>
55
56. XML Schema
Tipos complejos. Sintaxis
Se definen como:
<xsd:element name="name" type="tipo">
<xsd:complexType>
... Declaración del tipo ...
</xsd:complexType>
</xsd:element>
Ejemplo:
<xsd:element name="empleado">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nombre" type="xsd:string"/>
<xsd:element name="apellidos" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element> 56
57. XML Schema
Tipos complejos. Sintaxis
También podremos usar la siguiente sintaxis si
queremos usar el tipo en más de un elemento:
<xsd:element name="empleado" type="personainfo"/>
<xsd:element name="estudiante" type="personainfo"/>
<xsd:element name="miembro" type="personainfo"/>
<xsd:complexType name="personainfo">
<xsd:sequence>
<xsd:element name="nombre" type="xsd:string"/>
<xsd:element name="apellido" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
57
58. XML Schema
Tipos complejos. Extensión y restricción
Un tipo complejo puede estar basado
(extendido) en otro tipo complejo
<xsd:complexType name="newType">
<xsd:complexContent>
<xsd:extension base=“xsd:anyType">
... Declaraciones de atributos ...
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
58
59. XML Schema
Tipos complejos. Extensión y restricción
Un tipo complejo puede estar basado en la
restricción de otro tipo complejo
<xsd:complexType name=”nombreTipo”>
<xsd:simpleContent>
<xsd:restriction base=”nombreTipoBase”>
... Restricciones o facetas ...
... Declaración de atributos ...
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
59
60. XML Schema
Tipos complejos. Extensión y restricción
Ejemplo. Definir un tipo complejo que se adapte a la
dirección postal, asumiendo que ya hay definido un
tipo Dirección
<xsd:complexType name=“DireccionPostal">
<xsd:complexContent>
<xsd:extension base=“tipo:Direccion">
<sequence>
<element name=“provincia” type=“Provincia”/>
<element name=“codigopostal” type=“positiveInteger”/>
</sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
60
62. XML Schema
Tipos complejos. Elementos vacíos
Los elementos vacíos (con atributos) son “complejos”
<xsd:attribute nombre=”nombreAtributo” type=”tipoBasico”>
... Restricciones ...
</xsd:attribute>
Ejemplo
<xsd:element name="producto">
<xsd:complexType>
<xsd:attribute name="prodid"
type="xsd:positiveInteger"/>
</xsd:complexType>
</xsd:element>
62
63. XML Schema
Tipos complejos. Elementos mixtos
Pueden contener texto y elementos
Se añade mixed="true" al elemento xsd:complexType
El texto no se menciona en el elemento, y puede ir en
cualquier sitio (básicamente se ignora)
<xsd:complexType name="paragraph" mixed="true">
<xsd:sequence>
<xsd:element name="someName” type="xsd:anyType"/>
</xsd:sequence>
</xsd:complexType>
63
64. XML Schema
Tipos complejos. Indicadores
De Orden:
En un determinado orden o secuencia:
sequence
Pudiendo el autor del documento escoger
alguno de los elementos del grupo: choice
Dar al autor total libertad tanto respecto al
orden como a la selección de elementos: all
De ocurrencias: cardinalidades ⇒ minOccurs y
maxOccurs
64
65. XML Schema
Tipos complejos. xsd:sequence
Es un “compositor” que define una secuencia
ordenada de elementos
<xsd:element name="persona">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nombre" type="xsd:string"/>
<xsd:element name="apellido" type="xsd:string"/>
<xsd:element name=“edad" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
65
66. XML Schema
Tipos complejos. xsd:choice
Elementos que contienen alternativa de
elementos, en los que sólo puede aparecer
uno de ellos
<xsd:element name=“transporte">
<xsd:complexType>
<xsd:choice>
<xsd:element name="tren" type="xsd:string"/>
<xsd:element name="avion" type="xsd:string"/>
<xsd:element name="coche" type="xsd:string"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
66
67. XML Schema
Tipos complejos. xsd:all
Permite a los elementos aparecer en cualquier
orden
<xsd:element name="persona">
<xsd:complexType>
<xsd:all>
<xsd:element name="nombre" type="xsd:string"/>
<xsd:element name="apellidos" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
67
68. XML Schema
Tipos complejos. minOccurs y maxOccurs
Se utilizan para indicar el número máximo y mínimo de
veces que puede aparecer un elemento hijo de un
elemento complejo
minOccurs = 0: Opcionalidad
maxOccurs = unbounded: no existe valor límite
68
69. XML Schema
Tipos complejos. Comentarios
annotation ⇒ Mecanismo para documentar
los componentes de un esquema, haciendo
una función similar a los comentarios
appinfo ⇒ Proporciona información a otras
aplicaciones, lo que supone un procesamiento
externo al propio documento
documentation ⇒ Texto o referencia a texto
dentro del elemento annotation
69
70. XML Schema
Tipos complejos. Comentarios
<xsd:complexType name=“elemento”>
<xsd:annotation>
<xsd:documentation>
... este elemento es ...
</xsd:documentation>
</xsd:annotation>
</xsd:complexType>
70
75. XML Schema
Ejemplo XML Schema (3)
<attribute name=”id”>
<simpleType>
<restriction base=”string”>
<pattern value=”/d{8}-[A-Z]{4}”/>
</restriction>
</simpleType>
</attribute> Esquema para los clientes de un comercio
</complexType>
<simpleType name=”TipoNIF”>
<restriction base=”string”>
<pattern value=”/d{8}-[A-Z]{1}”/>
</restriction>
</simpleType>
<simpleType name=”TipoTelefono”>
<restriction base=”integer”>
<pattern value=”/d{9}”/>
</restriction>
<simpleType> 75
</schema>
76. XML Schema
Otras características de XML Schema
Agrupaciones (xsd:group) ⇒ Es posible
nombrar agrupaciones de elementos y
atributos para hacer referencias a ellas
Uniones (xsd:union) ⇒ Como conocemos a
las uniciones
Tipos abstractos (abstract=“true”) ⇒ tipo
abstracto que no puede usarse directamente
Inclusión de esquemas (xsd:include) ⇒ incluir
elementos de otros esquemas (mismo names.)
76
77. XML Schema
Otras características de XML Schema
Importación de esquemas (xsd:import) ⇒
incluir elementos de otros esquemas con
distintos espacios de nombres (namespaces)
Redefinición de esquemas (xsd:redefine) ⇒
similar a include pero permite modificar los
elementos incluidos
Indicar que un elemento es único (xsd:unique)
⇒ también para atributos y combinac. (atr-ele)
Indicar unicidad y clave (xsd:key)
77
78. XML Schema
Otras características de XML Schema
Indicar referencias a claves (xsd:keyref) ⇒ especifica
que debe hacer referencia a una clave (claves
externas)
Valores nulos (empty (sin contenido) xsd:nil=“true”
(no hay valor)). Para indicar que un elemento puede
ser nulo sin estar vacío (nillable=“true”)
any ⇒ indica cualquier contenido de un determinado
espacio de nombres
anyAttribute ⇒ indica cualquier atributo de un
espacio de nombres
... 78