• Save
Tema 2
Upcoming SlideShare
Loading in...5
×
 

Tema 2

on

  • 1,556 views

Tema 2 en pdf

Tema 2 en pdf

Statistics

Views

Total Views
1,556
Views on SlideShare
1,499
Embed Views
57

Actions

Likes
0
Downloads
0
Comments
0

2 Embeds 57

http://localhost 41
http://www.ieei.ual.es:81 16

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Tema 2 Tema 2 Presentation Transcript

  • XML y XML Schema Programación de Red. Ingeniería en Informática
  • XML y XLM SchemaObjetivos: 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
  • XML y XML Schema XML. Espacios de Nombres. XML Schema. 3
  • 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
  • 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.
  • 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
  • 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
  • XML Estructura general de un documento XML 8
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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: &lt; ⇒ <, &amp; ⇒ &, &gt; ⇒ >, &quot; ⇒ “, &apos; => ‘. Por ejemplo: <tag char=“&quot;”> Si A &lt; B, entonces ... </tag> 14
  • XML Ejemplo de un documento XML 15
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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 OReilly ⇒ www.xml.com  Especificación XML 1.0 ⇒ www.w3.org/TR/REC-xml OASIS ⇒ www.oasis-open.org 21 
  • XML y XML Schema XML. Espacios de Nombres. XML Schema. 22
  • 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
  • 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
  • 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
  • XML y XML Schema XML. Espacios de Nombres. XML Schema. 26
  • 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
  • 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
  • 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
  • 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
  • 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.
  • 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
  • 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
  • XML Schema Espacio de Ejemplo nombres <xsd:schema targetNamespace=“http://www.ac.upc.es/aad/libro” xmlns=“http://www.w3.org/2001/XMLSchema”> <simpleType name=“linea”> <restriction base=“string”> <maxLength value=“50”/> </restriction> </simpleType> <simpleType name=“sigloXX”> <restriction base=“integer”> <minInclusive value=“1900”/> <maxInclusive value=“1999”/> </restriction> Raíz </simpleType> <element name=“libro” type=“TipoLibro”/> <complexType name=“TipoLibro”> <sequence> <element name=“titulo” type=“linea”/> <element name=“autor” type=“linea”/> <element name=“anyo” type=“sigloXX”/> <element name=“precio” type=“decimal”> <complexType> <attribute name=“divisa” type=“string”/> </complexType> </element> </sequence> <attribute name=“isbn” type=“ID”/> </complexType> </element> </xsd:schema> 34
  • 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
  • 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
  • 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
  • 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"/>
  • 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
  • 40
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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>
  • 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
  • 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
  • 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
  • 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
  • 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
  • XML Schema Tipos simples (restricciones)  Ejemplos  <xsd:pattern value=“0-[2-6][0-9]d{5}-[0- 9x]"/>  <xsd:pattern value=“84sd([0- 9]|s){6}s[0-9x]"/>  <xsd:pattern value=“d {7,8}[A-Z]"/> 52
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • XML Schema Tipos complejos. Herencia <xsd:element name="empleado" type="fullpersonainfo"/> <xsd:complexType name="personainfo"> <xsd:sequence> <xsd:element name="nombre" type="xsd:string"/> <xsd:element name="apellido" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="fullpersonainfo"> <xsd:complexContent> <xsd:extension base="personainfo"> <xsd:sequence> <xsd:element name="direccion" type="xsd:string"/> <xsd:element name="ciudad" type="xsd:string"/> <xsd:element name="pais" type="xsd:string"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> 61 </xsd:complexType>
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • XML Schema Tipos complejos. Comentarios <xsd:complexType name=“elemento”> <xsd:annotation> <xsd:documentation> ... este elemento es ... </xsd:documentation> </xsd:annotation> </xsd:complexType> 70
  • XML Schema Ejemplo XML Schema (1) <xsd:complexType name=“vehiculo”> <xsd:sequence> <xsd:element name="nruedas" type="xsd:integer"/> <xsd:element name=“caballos" type="xsd:integer"/> <xsd:element name=“marca" type="xsd:string"/> <xsd:element name=“combustible" type=“combisList"/> </xsd:sequence> <xsd:attribute name=“identificador” type=“xsd:string”> </xsd:complexType> <xsd:simpleType name=“combusList” type=“xsd:string”> <xsd:enumeration value=“gasoleo"/> <xsd:enumeration value=“sin plomo 95"/> <xsd:enumeration value=“sin plomo 98"/> </xsd:simpleType> <xsd:complexType name=“coche"> <xsd:complexContent> <xsd:extension base=“vehiculo"> <xsd:element name=“plazas" type="xsd:integer"/> <xsd:element name=“velocidadMax" type="xsd:decimal"/> </xsd:extension> </xsd:complexContent> 71 </xsd:complexType>
  • XML Schema Ejemplo XML Schema (1) <xsd:complexType name=“camion"> <xsd:complexContent> <xsd:extension base=“vehiculo"> <xsd:element name=“pma" type="xsd:integer"/> <xsd:element name=“autonomia" type="xsd:float"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> Utilización de estos tipos <camion identificador=“BSX6541”> <nruedas>10</nruedas> <caballos>800</caballos> <marca>VOLVO</marca> <combustible>gasoleo</combustible> <pma>45800</pma> <autonomia>2345.66</autonomia> 72 </camion>
  • XML Schema Ejemplo XML Schema (2) <xsd:element name=“alumno”> <xsd:complexType> <xsd:sequence> <xsd:element name="nombre" type="xsd:string"/> <xsd:element name="apellidos" type="xsd:string"/> <xsd:element name="nacim" type="xsd:gYear” minOccurs="0“ maxOccurs="1"/> </xs:sequence> <xs:attribute name="dni" type="xsd:integer"/> </xs:complexType> </xs:element> Utilización de estos tipos <alumno dni="9399390"> <nombre>Juan</nombre> <apellidos>García García</apellidos> <nacim>1985</nacim> 73 </alumno>
  • XML Schema Ejemplo XML Schema (3) <?xml version=”1.0”?> <schema xmlns=”http://www.w3.org/2001/XMLSchema” targetNS=”http://ejemplo.com/Cliente.xsd” xmlns:tns=”http://ejemplo.com/Cliente.xsd”> <element name=”cliente” type=”TipoCliente”/> <complexType name=”TipoCliente”> <sequence> <element name=”nombre”> <simpleType> <restriction base=”string”> <maxLength value=”40”/> </restriction> </simpleType> </element> <element name=”NIF” type=”tns:TipoNIF”/> <element name=”direccion” type=”string”/> <element name=”telefono” type=”tns:TipoTelefono”/> <element name=”gastoTotal” type=”decimal”> 74 </sequence>
  • 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>
  • 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
  • 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
  • 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