XML Básico

1,243 views
1,024 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,243
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

XML Básico

  1. 1. XML Básico Óliver Centeno Álvarez
  2. 2. Noviembre 2009 XML Básico 2 Objetivos  Conocer el lenguaje XML y su funcionamiento  Conocer los esquemas de XML y su necesidad (DTD y XSD)  Conocer el lenguaje de transformación y estilos para documentos XML (XSL)  Conocer el lenguaje de consulta sobre documentos XML (XPath)
  3. 3. Noviembre 2009 XML Básico 3 Contenidos I. Introducción a XML II. Creación de DTDs III. Espacios de Nombres y XSD IV. XML Canónico V. XPath VI. XSLT
  4. 4. Noviembre 2009 XML Básico 4 Contenidos I. Introducción a XML II. Creación de DTDs III. Espacios de Nombres y XSD IV. XML Canónico V. XPath VI. XSLT
  5. 5. Noviembre 2009 XML Básico 5 I. Introducción a XML 1. Introducción a XML 2. Origen de XML 3. Estructura de un documento XML 1. Elementos y Atributos 2. Instrucciones de Proceso 3. Entidades y Comentarios 4. Secciones CDATA 4. Documentos bien formados
  6. 6. Noviembre 2009 I. Introducción a XML 6 1. Introducción a XML  eXtensible Markup Language  Metalenguaje extensible de etiquetas desarrollado por el W3C  Simplificación y adaptación del SGML  Se propone como un estándar para el intercambio de información estructurada entre diferentes plataformas  Permite la compatibilidad entre sistemas para compartir la información de una manera segura, fiable y fácil
  7. 7. Noviembre 2009 I. Introducción a XML 7 1. Introducción a XML  Similar a HTML  Etiquetas o “tags”  Apertura y cierre <etiqueta> </etiqueta>  Autocerradas <etiqueta/>  Pero más estricto  Una etiqueta engloba a todas  Todas las etiquetas cerradas  No mezclar aperturas y cierres  Válido: <a><b></b></a>  Inválido: <a><b></a></b>
  8. 8. Noviembre 2009 I. Introducción a XML 8 1. Introducción a XML  Ejemplo <LIBRO> <TITULO>Las recetas de mama</TITULO> <AUTOR>Milagros Sánchez</AUTOR> <EDITORIAL>San Luciano</EDITORIAL> <CUBIERTA TIPO=“Blanda” /> <CATEGORIA CLASE=“NOFICCION” /> <ISBN>0-000-00000-0</ISBN> <NOTA NUMERO=“5” /> <COMENTARIOS> Es un libro estupendo </COMENTARIOS> </LIBRO>
  9. 9. Noviembre 2009 I. Introducción a XML 9 2. Origen de XML  Años 70: IBM diseña GML para almacenar grandes cantidades de información  1986: Normalizado por la ISO  SGML  Emplea gramáticas específicas definidas (DTD)  1989: Nace HTML en el marco de SGML  Poco exigente en cuanto a estructura  1998: XML v1.0  revisado 4 veces (última en 2006)  2004: XML v1.1 revisado en 2006
  10. 10. Noviembre 2009 I. Introducción a XML 10 2. Origen de XML  Subconjunto del SGML que permite:  Mezclar elementos de diferentes lenguajes. Es decir, que los lenguajes sean extensibles.  Crear analizadores simples, sin ninguna lógica especial para cada lenguaje.  Que no se acepte nunca un documento con errores de sintaxis.  XML está orientado a hacer las cosas más sencillas para los programas automáticos que necesiten interpretar el documento.
  11. 11. Noviembre 2009 I. Introducción a XML 11 3. Estructura de documentos XML  Información estructurada  Etiquetas o tags <etiqueta>  Organizada en forma de árbol  Un único nodo raíz  Elementos (Nodos) <elemento>…</elemento> <elemento/>  Atributos <elemento atributo1=“valor1” atributo2=“valor2” …>
  12. 12. Noviembre 2009 I. Introducción a XML 12 3. Estructura de documentos XML <?xml version="1.0" encoding="ISO-8859-1" ?> <Raiz_Mensaje> <Mensaje> <Remitente> <Nombre>Nombre del remitente</Nombre> <Mail> Correo del remitente </Mail> </Remitente> <Destinatario> <Nombre>Nombre del destinatario</Nombre> <Mail>Correo del destinatario</Mail> </Destinatario> <Texto> <Asunto> ... </Asunto> <Parrafo> ... </Parrafo> </Texto> </Mensaje> </Raiz_Mensaje> Raiz_Mensaje Mensaje Remitente Destinatario Texto Nombre Mail Nombre Mail Asunto Parrafo
  13. 13. Noviembre 2009 I. Introducción a XML 13 3. Estructura de documentos XML  Prólogo (opcional)  Instrucciones de preproceso  Cuerpo (obligatorio)  Elementos y Atributos  Secciones CDATA  Entidades  Comentarios
  14. 14. Noviembre 2009 I. Introducción a XML 14 3. Estructura de documentos XML  Prólogo  Contiene información relativa al documento XML.  Contiene la declaración de XML.  La declaración de XML es obligatoria e indica al parser que versión de documento XML va a ser “parseado”.  Opcionalmente  Contiene la vinculación con su DTD (si existe).  Contiene instrucciones que deben ser ejecutadas por la aplicación que lo procese (instrucciones de proceso).  Contiene la vinculación con su hoja de estilo correspondiente (si existe).  Ejemplo <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE Nodo_Raiz SYSTEM "Estructura.dtd">
  15. 15. Noviembre 2009 I. Introducción a XML 15 3. Estructura de documentos XML  Prólogo Declaración de Documento <?xml version=“1.0” rmd=“ALL” ?> <?xml version=“1.0” encoding=“ISO-8859-1” ?> <?xml version=“1.0” standalone=“yes” ?> Instrucción de proceso Declaración de marca requerida Juego de codificación de caracteres utilizado en el documento ¿tiene DTD? No tiene DTD
  16. 16. Noviembre 2009 I. Introducción a XML 16 3. Estructura de documentos XML  Secciones CDATA  No son analizadas por el parser XML.  Se utilizan en el caso de que no interese que una cadena sea analizada por el parser.  <![CDATA[ contenido no procesado ]]>  Ejemplo <elemento> <![CDATA [ <HTML> .... </HTML> ]]> </elemento>  Comentarios  <!-- comentario XML -->
  17. 17. Noviembre 2009 XML Básico 17 3. Estructura de documentos XML  Entidades  Permiten introducir información en el documento  Definidas en un documento DTD  <!ENTITY entidad “valor”>  Uso: Precedidas por el símbolo &  &aacute; &ntilde; &lt; …  Externas/internas  Analizadas/no analizadas  Generales/Parámetro
  18. 18. Noviembre 2009 XML Básico 18 3. Estructura de documentos XML  Entidades  Internas  <!ENTITY VGA “Visual Graphics Adapter”>  Externas  <!ENTITY MANUAL SYSTEM “c:manual.doc”>  No analizadas  <!ENTITY IMAGEN SYSTEM “http//:www.miwebsite.com/imagen.gif” NDATA>  Parámetro  <!ENTITY % elemento “<!ELEMENT elemento1 (#PCDATA)”>
  19. 19. Noviembre 2009 I. Introducción a XML 19 4. Documentos Bien Formados  Han de tener una estructura estrictamente jerárquica.  Deben tener un único elemento raíz que contenga a todos los demás.  Los valores atributos siempre deben estar entre comillas simples o dobles.  Sensible a mayúsculas y minúsculas.  Elementos delimitados por una etiqueta inicial y otra final con el mismo nombre.  Elementos vacíos autocerrados con /
  20. 20. Noviembre 2009 XML Básico 20 4. Documentos Bien Formados  Ejemplo <libro> <titulo>Un titulo cualquiera</titulo> <capitulos> <capitulo> <titulo> Capitulo 1 </titulo> <parrafo numero = “1”> Un parrafo </parrafo> </capitulo> <capitulo> <titulo> Capitulo 2 </titulo> </capitulo> </capitulos> </libro> <autor>el autor del libro</autor>
  21. 21. Noviembre 2009 I. Introducción a XML 21 4. Documentos Bien Formados  Un documento "bien formado" solo se refiere a su estructura sintáctica  A veces es necesario  Especificar una relación entre los elementos del documento  Verificar la corrección de los datos  Verificar la integridad de los datos  Establecer un entendimiento compartido  Nuevos lenguajes de marcado, para aplicaciones específicas
  22. 22. Noviembre 2009 I. Introducción a XML 22 4. Documentos Bien Formados  Se comprueba:  Elementos o atributos declarados en el esquema.  Estructura jerárquica de elementos y atributos.  Orden de los elementos.  Valores de atributos y elementos.  Unicidad de valores.  Se especifica en un documento externo (documentos de definición)  DTD y XSD
  23. 23. I. Introducción a XML Ejercicios
  24. 24. Noviembre 2009 XML Básico 24 Contenidos I. Introducción a XML II. Creación de DTDs III. Espacios de Nombres y XSD IV. XML Canónico V. XPath VI. XSLT
  25. 25. Noviembre 2009 XML Básico 25 II. Creación de DTDs 1. Concepto y tipos de DTD 2. Definición de Elementos 1. Operadores 2. Elementos mixtos 3. Definición de Atributos 4. Definición de Entidades 1. Entidades generales 2. Entidades paramétricas y externas 5. Definición de Nomenclatura
  26. 26. Noviembre 2009 II. Creación de DTDs 26 1. Concepto y tipos de DTD  DTD (Document Type Definition)  Define los tipos de elementos, atributos y entidades permitidas  Un documento es "válido" si cumple las reglas de un DTD determinada  Puede ser un fichero externo o definirse dentro del propio documento XML  Tipos de documentos DTD  Internos <!DOCTYPE raíz [ … ]>  Externos <!DOCTYPE raíz SYSTEM “…”>
  27. 27. Noviembre 2009 II. Creación de DTDs 27 2. Definición de Elementos  DTD (Document Type Definition) <!ELEMENT Raiz_Mensaje (Mensaje)> <!ELEMENT Mensaje (Remitente, Destinatario, Texto)> <!ELEMENT Remitente (Nombre, Mail)> <!ELEMENT Destinatario (Nombre, Mail)> <!ELEMENT Texto (Asunto, Parrafo)> <!ELEMENT Nombre (#PCDATA)> <!ELEMENT Mail (#PCDATA)> <!ELEMENT Asunto (#PCDATA)> <!ELEMENT Parrafo (#PCDATA)>
  28. 28. Noviembre 2009 II. Creación de DTDs 28 2. Definición de Elementos  <!ELEMENT nodo (hijo1, hijo2, hijo3)>  #PCDATA (texto)  EMPTY (sin contenido)  ANY (en desuso)  Otros elementos  Contenido mixto elementos/texto  Modificadores  | Uno de dos  ? Opcional  * Cero o más  + Uno o más
  29. 29. Noviembre 2009 II. Creación de DTDs 29 3. Definición de Atributos  <!ATTLIST nodo atributo tipo modificador>  <!ATTLIST Nodo atributo CDATA #REQUIRED>  Tipos  CDATA (texto)  NMTOKEN ( a A 1 . : - _ )  ID, IDREF  Enumerados  <!ATTLIST monitor marca (SONY | FUJITSU) “SONY”>  Modificadores  #REQUIRED, #IMPLIED, #FIXED
  30. 30. Noviembre 2009 II. Creación de DTDs 30 3. Definición de Atributos  Ejemplo <!ELEMENT Raiz_Mensaje (Mensaje*)> <!ELEMENT Mensaje (Remitente, Destinatario)> <!ELEMENT Remitente (Nombre, Mail)> <!ELEMENT Destinatario (Nombre, Mail)> <!ELEMENT Nombre (#PCDATA)> <!ELEMENT Mail (#PCDATA)> <!ATTLIST Mensaje Asunto CDATA #IMPLIED Parrafo CDATA #REQUIRED>
  31. 31. Noviembre 2009 II. Creación de DTDs 31 3. Definición de Atributos  Ejemplo Raiz_Mensaje Mensaje Remitente Destinatario Nombre Mail Nombre Mail Asunto Parrafo
  32. 32. Noviembre 2009 II. Creación de DTDs 32 3. Definición de Atributos <?xml version="1.0" encoding="ISO-8859-1" ?> <Raiz_Mensaje> <Mensaje asunto="…" parrafo="…"> <Remitente> <Nombre>Nombre del remitente</Nombre> <Mail> Correo del remitente </Mail> </Remitente> <Destinatario> <Nombre>Nombre del destinatario</Nombre> <Mail>Correo del destinatario</Mail> </Destinatario> </Mensaje> </Raiz_Mensaje>
  33. 33. Noviembre 2009 XML Básico 33 4. Definición de Entidades  Abreviaturas que se usan dentro del documento XML  Siempre analizadas  Entidades generales internas  <!ENTITY VGA “Visual Graphics Adapter”>  Entidades generales externas  <!ENTITY MANUAL SYSTEM “c:manual.txt”>  Entidades no analizadas  <!ENTITY IMAGEN SYSTEM “c:imagen.gif” NDATA>
  34. 34. Noviembre 2009 XML Básico 34 4. Definición de Entidades  Entidades Parámetro  Se utilizan sólo dentro del DTD  Se referencian mediante % en lugar de &  Entidades parámetro internas  <!ENTITY % elemento “<!ELEMENT nodo (hijos)>”>  Entidades parámetro externas  <!ENTITY % elemento SYSTEM “c:manual.doc”>  Ejemplo <!DOCTYPE [ <!ENTITY % mielemento “<!ELEMENT elemento1 (#PCDATA)>”> %mielemento; ]>
  35. 35. Noviembre 2009 XML Básico 35 5. Definición de Nomenclatura  Permite especificar el formato de datos NO XML  Comúnmente para tipos MIME  <!NOTATION GIF SYSTEM "image/gif"> <!NOTATION JPG SYSTEM "image/jpeg"> <!NOTATION PNG SYSTEM "image/png">  Se puede utilizar como tipo de atributo  <!ATTLIST foto formato NOTATION (GIF | JPG | PNG) #IMPLIED>
  36. 36. II. Creación de DTDs Ejercicios
  37. 37. Noviembre 2009 XML Básico 37 Contenidos I. Introducción a XML II. Creación de DTDs III. Espacios de Nombres y XSD IV. XML Canónico V. XPath VI. XSLT
  38. 38. Noviembre 2009 XML Básico 38 III. Espacios de Nombres y XSD 1. Motivación 2. Uso de Espacios de Nombres Predeterminados 3. XSD 1. Declaración de Elementos y Atributos 2. Tipos Simples y Tipos Complejos 3. Formato cualificado y no cualificado 4. Declarando Espacios de Nombres
  39. 39. Noviembre 2009 III. Espacios de Nombres y XSD 39 1. Motivación  Limitaciones del DTD:  No existe jerarquía de nombres  No existen tipos de datos  Poco flexible a elementos mixtos  No soporta nuevas ampliaciones de XML
  40. 40. Noviembre 2009 III. Espacios de Nombres y XSD 40 2. Uso de Namespaces  Espacios de Nombres  Definición de tipos para reutilización  Estructurar los esquemas  Equivalente a los paquetes Java  Utilizan un “alias” para referenciarlos dentro del XML  Espacios de Nombres W3C:  xmlns  http://www.w3.org/2001/XMLSchema  http://www.w3.org/2001/XMLSchema-instance  http://www.w3.org/1999/XSL/Transform  …
  41. 41. Noviembre 2009 III. Espacios de Nombres y XSD 41 2. Uso de Namespaces  Ejemplo  <elemento xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xsi:schemaLocation="http://Test.com/Purchase Main.xsd" xmlns:p="http://NamespaceTest.com/Purchase" xmlns:o="http://NamespaceTest.com/OrderTypes" xmlns:cm="http://NamespaceTest.com/CommonTypes" > <p:pedido tipo="cm:primerPedido"/> <o:objeto id="cm:idProducto"/>
  42. 42. Noviembre 2009 III. Espacios de Nombres y XSD 42 3. XSD  XSD (XML Schema Definition)  Evolución de DTD descrita por W3C  Más complejo y más potente  Sintaxis XML  Nodos y tipos (primitivos y derivados)  Soporta la extensión del documento  Reutilizar, modularizar, definir tipos de datos, …  Se puede utilizar para transformar el documento en una jerarquía de objetos  Soporta espacios de nombres (namespaces)  Permite asegurar la integridad de los datos  10-11-2009 ¿es octubre o noviembre?
  43. 43. Noviembre 2009 III. Espacios de Nombres y XSD 43 3. XSD  Un XML Schema:  Define elementos que pueden aparecer en el documento  Define atributos que pueden aparecer en el documento  Define las relaciones padre hijo entre los distintos elementos  Define el orden de los elementos  Define el número de elementos  Define si un elemento estará vacío o si tendrá un valor  Define los tipos de datos para elementos y atributos  Y todo con sintaxis totalmente XML
  44. 44. Noviembre 2009 III. Espacios de Nombres y XSD 44 3. XSD  Ejemplo XSD: <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.myweb.com" elementFormDefault="qualified"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
  45. 45. Noviembre 2009 III. Espacios de Nombres y XSD 45 3. XSD  Ejemplo Validación: <?xml version="1.0"?> <note xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xsi:schemaLocation="note.xsd"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
  46. 46. Noviembre 2009 III. Espacios de Nombres y XSD 46 3. XSD  Elementos de un esquema XSD  <xsd:element>  <xsd:attribute>  <xsd:sequence>  <xsd:choice>  <xsd:all>  <xsd:complexType>  …
  47. 47. Noviembre 2009 III. Espacios de Nombres y XSD 47 3. XSD  Declaración de elementos  <xsd:element name=“nombre_nodo” type=“tipo_dato” default=“valor por defecto” fixed=“valor fijo” minOccurs=“cardinalidad mínima” maxOccurs=“cardinalidad máxima”>
  48. 48. Noviembre 2009 III. Espacios de Nombres y XSD 48 3. XSD  Declaración elementos complejos  Elementos y/o atributos  <xsd:attribute name=“nombre_atributo” type=“tipo_dato” use=“optional | mandatory” fixed=“valor fijo” >  <xsd:complexType mixed=“true | false”>  <xsd:sequence>  <xsd:choice>  <xsd:complexContent>  <xsd:extension base="tipo complejo">
  49. 49. Noviembre 2009 III. Espacios de Nombres y XSD 49 3. XSD  Ejemplo 1: <!-- Elemento con contenido complejo --> <xsd:element name="Cliente"> <xsd:complexType> <xsd:sequence> <xsd:element name="FechaNac" type="xsd:date" /> <xsd:element name="Direccion" type="AddressType"> <xsd:complexType name="AddressType"> <xsd:sequence> <xsd:element name="Line1" type="xsd:string"/> <xsd:element name="Line2" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element>
  50. 50. Noviembre 2009 III. Espacios de Nombres y XSD 50 3. XSD  Ejemplo 2: <!-- Extensión de tipos complejos --> <xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="fullpersoninfo"> <xs:complexContent> <xs:extension base="personinfo"> <xs:sequence> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
  51. 51. Noviembre 2009 III. Espacios de Nombres y XSD 51 3. XSD  Ejemplo 3: <!-- Tipo conplejo con atributos y sin contenido --> <xs:element name="product"> <xs:complexType> <xs:attribute name="prodid" type="xs:positiveInteger"/> </xs:complexType> </xs:element> <!-- Tipo conplejo con atributos y contenido de tipo texto --> <xs:element name="shoesize"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="country" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
  52. 52. Noviembre 2009 III. Espacios de Nombres y XSD 52 3. XSD  Ejemplo 4: <!-- Elementos con contenido mixto --> <xs:element name="letter"> <xs:complexType mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="orderid" type="xs:positiveInteger"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element>
  53. 53. Noviembre 2009 III. Espacios de Nombres y XSD 53 3. XSD  Tipos primitivos de datos:  xsd:string  xsd:boolean  xsd:decimal  xsd:float  xsd:double  xsd:dateTime  xsd:date  xsd:time  …
  54. 54. Noviembre 2009 III. Espacios de Nombres y XSD 54 3. XSD  Tipos de datos derivados:  integer (decimal)  long (integer)  normalizedString (string)  token (normalizedString)  Name (token)  ID (Name)  IDREF (Name)  ENTITY (Name)  …  Se definen como restricción sobre otro tipo  <xsd:simpleType>
  55. 55. Noviembre 2009 III. Espacios de Nombres y XSD 55 3. XSD  Ejemplo de tipos derivados <xs:simpleType name="edad"> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="120"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="coche"> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType>
  56. 56. Noviembre 2009 III. Espacios de Nombres y XSD 56 3. XSD  Los tipos derivados admiten patrones para restringir  Ejemplos: <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z0-9]{8}"/> </xs:restriction> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve | replace | colapse"/> </xs:restriction>
  57. 57. Noviembre 2009 III. Espacios de Nombres y XSD 57 3. XSD  Reutilización de esquemas <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cmn="CommonTypes" elementFormDefault="qualified" targetNamespace="CustomerTypes" > <xs:import namespace="CommonTypes" schemaLocation="CommonTypes.xsd" /> <xs:complexType name="CustomerType"> <xs:sequence> <xs:element name="Name" type="xs:string" /> < xs:element name="DeliveryAddress" type="cmn:AddressType" /> < xs:element name="BillingAddress" type="cmn:AddressType" /> </xs:sequence> </xs:complexType> </xs:schema>
  58. 58. Noviembre 2009 III. Espacios de Nombres y XSD 58 3. XSD  Formatos de esquemas  Atributo elementFormDefault de <xsd:schema>  Formato cualificado (qualified)  Exige utilizar el espacio de nombres en todos los nodos  Formato no cualificado (unqualified)  Sólo exige namespace para el nodo raíz  Y para los elementos definidos en el mismo XSD del nodo raíz  El resto no utiliza namespace
  59. 59. Noviembre 2009 III. Espacios de Nombres y XSD 59 4. Declarando Namespaces  Declaración de esquemas  Atributo targetNamespace de <xsd:schema>  Uso: Se debe importar el documento y crear un alias  <xsd:schema targetNamespace=“espacio” elementFormDefault= “qualified|unqualified” xmlns:xsd=“http://www.w3.org/...” xmlns:xxx=“espacio xxx”>  <xsd:import schemaLocation=“fichero.xsd” namespace=“espacio xxx” />
  60. 60. 4. XSD Veamos unos Ejemplos
  61. 61. Noviembre 2009 XML Básico 61 Contenidos I. Introducción a XML II. Creación de DTDs III. Espacios de Nombres y XSD IV. XML Canónico V. XPath VI. XSLT
  62. 62. Noviembre 2009 XML Básico 62 IV. XML Canónico 1. Motivación 2. XML Canónico 3. Canonizar XML
  63. 63. Noviembre 2009 IV. XML Canónico 63 1. Motivación  La validación es importante y podría ser requerida para garantizar la fiabilidad de una aplicación XML  Sin embargo, afecta al rendimiento  Un analizador sin validación no es necesario que lea las entidades externas  Estas entidades externas podrían no ser expandidas  La información pasada a la aplicación consumidora podría no ser la misma cuando se usa un analizador con o sin validación
  64. 64. Noviembre 2009 IV. XML Canónico 64 1. Motivación  El coste de la validación puede reducirse eficientemente teniendo en cuenta que  Los documentos internos podrían no requerir validación  Los documentos que vienen de fuera del sistema deben validarse cuando entran  Una vez validados, podrían utilizarse sin ninguna otra validación  Cuando nosotros somos productor y consumidor de documentos XML podemos validar sólo para depuración y desactivarla durante la producción  Un documento validado puede convertirse a otro equivalente más eficiente mediante canonización
  65. 65. Noviembre 2009 IV. XML Canónico 65 2. XML Canónico  Canonical XML v1.0  "Cualquier documento XML es parte de un conjunto de documentos XML … equivalentes … dentro de un contexto de aplicación … Excepto para las limitaciones de unos pocos casos inusuales, si dos documentos tienen la misma forma canónica, … son equivalentes dentro de un contexto de aplicación dado"  Dos documentos podrían tener formas canónicas diferentes y ser equivalentes en un contexto dado por reglas de equivalencia específicas de la aplicación
  66. 66. Noviembre 2009 IV. XML Canónico 66 3. Canonizar XML  El proceso de canonizalización supone cambios en el documento original: 1. Codificación del documento en UTF-8 2. Normalización de saltos de línea a #xA 3. Normalización de los atributos (ordenar, “”, …) 4. Sustitución de caracteres y entidades analizadas y secciones CDATA 5. Eliminación de la declaración y prólogo XML 6. Expansión de elementos vacíos a inicio-fin 7. Normalización de espacios en blanco 8. Adicción de atributos con valor por defecto
  67. 67. Noviembre 2009 IV. XML Canónico 67 3. Canonizar XML  Ejemplo 1  Entrada  <?xml version="1.0"?> <?xml-stylesheet href="doc.xsl" type="text/xsl" ?> <!DOCTYPE doc SYSTEM "doc.dtd"> <doc>&saludo;<!-- Comment 1 --></doc> <?pi-without-data ?>  Salida  <?xml-stylesheet href="doc.xsl" type="text/xsl" ?> <doc>Hola, Mundo!</doc> <?pi-without-data?>
  68. 68. Noviembre 2009 IV. XML Canónico 68 3. Canonizar XML  Ejemplo 2  Entrada  <!DOCTYPE doc [<!ATTLIST e9 attr CDATA "default">]> <doc> <e1 /> <e2 ></e2> <e3 name = "elem3" id="elem3" /> <e4 name="elem4" id="elem4" ></e4> <e5 a:attr="out" b:attr="sorted" attr2="all" attr="I'm" xmlns:b="http://www.ietf.org" xmlns:a="http://www.w3.org" xmlns="http://example.org"/> <e6 xmlns="" xmlns:a="http://www.w3.org"> <e7 xmlns="http://www.ietf.org"> <e8 xmlns="" xmlns:a="http://www.w3.org"> <e9 xmlns="" xmlns:a="http://www.ietf.org"/> </e8> </e7> </e6> </doc>
  69. 69. Noviembre 2009 IV. XML Canónico 69 3. Canonizar XML  Ejemplo 2  Salida  <doc> <e1></e1> <e2></e2> <e3 id="elem3" name="elem3"></e3> <e4 id="elem4" name="elem4"></e4> <e5 xmlns="http://example.org" xmlns:a="http://www.w3.org" xmlns:b="http://www.ietf.org" attr="I'm" attr2="all" b:attr="sorted" a:attr="out"></e5> <e6 xmlns:a="http://www.w3.org"> <e7 xmlns="http://www.ietf.org"> <e8 xmlns=""> <e9 xmlns:a="http://www.ietf.org" attr="default"></e9> </e8> </e7> </e6> </doc>
  70. 70. Noviembre 2009 IV. XML Canónico 70 3. Canonizar XML  Ejemplo 3  Entrada  <!DOCTYPE doc [ <!ATTLIST normId id ID #IMPLIED> <!ATTLIST normNames attr NMTOKENS #IMPLIED> ]> <doc> <text>First line Second line</text> <value>2</value> <compute> <![CDATA[value>"0" && value<"10" ?"valid":"error"]]> </compute> <compute expr='value>"0" &amp;&amp; value&lt;"10" ?"valid":"error"'>valid</compute> <norm attr=' &apos; &apos; '/> <normNames attr=' A B '/> <normId id=' &apos; &apos; '/> </doc>
  71. 71. Noviembre 2009 IV. XML Canónico 71 3. Canonizar XML  Ejemplo 3  Salida  <doc> <text>First line Second line</text> <value>2</value> <compute>value&gt;"0" &amp;&amp; value&lt;"10" ?"valid":"error"</compute> <compute expr="value>&quot;0&quot; &amp;&amp; value&lt;&quot;10&quot; ?&quot;valid&quot;:&quot;error&quot;">valid</compute> <norm attr=" ' ' "></norm> <normNames attr="A B"></normNames> <normId id="' '"></normId> </doc>
  72. 72. Noviembre 2009 XML Básico 72 Contenidos I. Introducción a XML II. Creación de DTDs III. Espacios de Nombres y XSD IV. XML Canónico V. XPath VI. XSLT
  73. 73. Noviembre 2009 XML Básico 73 V. XPath 1. Introducción a XPath 2. Predicados XPath 3. Funciones XPath
  74. 74. Noviembre 2009 V. XPath 74 1. Introducción a XPath  Lenguaje de consulta sobre XML  Se apoya en la estructura de árbol de XML  Navegación tipo directorios UNIX con filtrado Expresión Descripción nodo Selecciona todos los hijos del nodo indicado / Selecciona el nodo raíz // Selecciona todos los nodos a partir del actual . Selecciona el nodo actual .. Selecciona el nodo padre del actual @ Selecciona atributos * Wildcard
  75. 75. Noviembre 2009 V. XPath 75 1. Introducción a XPath  Ejemplos:  books.xml  Obtener los títulos de todos los libros  /bookstore/book/title  Obtener el título del primer libro  /bookstore/book[1]/title  Obtener todos los autores  //author  Obtener todos los títulos nietos de bookstore  /bookstore/*/title  Obtener todos los elementos de nivel 1  /*/*
  76. 76. Noviembre 2009 V. XPath 76 2. Predicados en XPath  Se indican entre corchetes  Permiten restringir una búsqueda  Por valor de un nodo [nodo='valor']  Por presencia de un atributo [@atributo]  Combinando filtros = != < > and or not …  Ejemplos  inventory.xml  Obtener los títulos de libros con precio>35  /bookstore/book[price>35]/price  Obtener el atributo exchange de los nodos price  //price/@exchange  Obtener los libros del estilo de la especialidad del store  //book[/bookstore/@specialty=@style]
  77. 77. Noviembre 2009 V. XPath 77 3. Funciones en XPath  Permiten realizar tareas de filtrado más complejas  Se añaden al árbol de búsqueda o al predicado  Algunas funciones son: Función Descripción last() Selecciona el último elemento hijo first() Selecciona el primer elemento hijo position() Permite filtrar por posición del nodo comment() Selecciona un nodo comentario text() Selecciona texto dentro de un nodo (incluido el contenido de un CDATA) processing- instruction() Selecciona instrucciones de pre-procesamiento
  78. 78. Noviembre 2009 V. XPath 78 3. Funciones en XPath  Ejemplos:  inventory.xml  Obtener el último libro  //book[last()]  Obtener el último autor de cada libro  //book/author[last()]  Obtener los primeros autores  //author[position()=1]  Obtener el contenido de bookstore  /bookstore/text()  Obtener el precio total de los libros  sum(//price)
  79. 79. Noviembre 2009 XML Básico 79 Contenidos I. Introducción a XML II. Creación de DTDs III. Espacios de Nombres y XSD IV. XML Canónico V. XPath VI. XSLT
  80. 80. Noviembre 2009 XML Básico 80 VI. XSLT 1. Transformación de Documentos 2. Estilos en XML 3. Transformaciones en XML 4. Estructuras de control XSLT
  81. 81. Noviembre 2009 VI. XSLT 81 1. Transformación de Documentos  En ocasiones es necesario transformar documentos XML  Interoperabilidad  Cambio de estructura origen/destino  Procesamiento distinto de envío  Presentación de documentos  XSLT permite definir trasformadores de documentos  Se define mediante XML  Toma XML como entrada  Genera XML, HTML, texto, …  Caso particular: Hojas de estilo XML
  82. 82. Noviembre 2009 VI. XSLT 82 2. Estilos en XML  XSL (eXtensible Stylesheet Language)  Familia de lenguajes basados en el estándar XML  Describir cómo la información de un documento  debe ser transformada  o formateada  Para su presentación en un medio  Declaración de la hoja de estilos (nodo raíz)  <xsl:stylesheet version="1.0" xmlns:xsl= "http://www.w3.org/1999/XSL/Transform">  Uso de la hoja de estilos  <?xml-stylesheet href="estilo.xsl" type="text/xsl"?>
  83. 83. Noviembre 2009 VI. XSLT 83 2. Estilos en XML  Elementos comunes  <xsl:import href=“ruta a xsl” >  <xsl:include href=“ruta a xsl” >  <xsl:output method=“text | xml | html” indent=“yes | no”>  <xsl:template match=“XPath” >  <xsl:text >  <xsl:number value=“XPath” format="1. "/>  <xsl:value-of select=“XPath” />
  84. 84. Noviembre 2009 VI. XSLT 84 2. Estilos en XML  Plantillas XSL  Permite restringir la aplicación de un estilo a elementos que cumplan un patrón (XPath)  Primero se define la plantilla  <xsl:template match="XPath">…</xsl:template>  Después se invoca  <xsl:template match="/">  <xsl:apply-templates select="XPath"/>  </xsl:template>  Al invocarla nos situamos en un nodo mediante el atributo match y se aplica a partir de este
  85. 85. VI. XSLT Veamos unos Ejemplos
  86. 86. Noviembre 2009 VI. XSLT 86 3. Transformación de documentos  XSLT (XSL Transformations)  Parte más importante de XSL  Desarrollado por el W3C  Transforma un documento XML en otro  Añadir y eliminar elementos y atributos  Redistribuir y ordenar elementos  Emplea XPath para navegar por el documento  Nodo raíz del documento de transformación  <xsl:transform version="1.0" xmlns:xsl= "http://www.w3.org/1999/XSL/Transform">
  87. 87. Noviembre 2009 VI. XSLT 87 3. Transformación de documentos  El modelo de procesamiento incluye:  Uno o más documentos origen XML  Uno o más módulos de estilo XSLT  Un procesador de plantillas XSLT  Uno o más documentos resultado
  88. 88. Noviembre 2009 VI. XSLT 88 3. Transformación de documentos  Elementos XSLT  <xsl:variable match=“XPath” >  <xsl:element name=“nombre nodo” use-attribute-sets=“atts” >  <xsl:attribute name=“nombre att”>  <xsl:copy use-attribute-sets=“atts” >  <xsl:copy-of select=“XPath” />  …
  89. 89. Noviembre 2009 VI. XSLT 89 3. Transformación de documentos  Ejemplo <xsl:stylesheet version="1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" > <xsl:output method="xml" indent="yes"/> <xsl:template match="/persons"> <root> <xsl:apply-templates select="person"/> </root> </xsl:template> <xsl:template match="person"> <name username="{@username}"> <xsl:value-of select="name" /> </name> </xsl:template> </xsl:stylesheet>
  90. 90. Noviembre 2009 VI. XSLT 90 3. Transformación de documentos  Ejemplo  XML Entrada <persons> <person username="JS1"> <name>John</name> <family-name>Smith</family-name> </person> <person username="MI1"> <name>Morka</name> <family-name>Ismincius</family-name> </person> </persons>  XML Salida <root> <name username="JS1">John</name> <name username="MI1">Morka</name> </root>
  91. 91. Noviembre 2009 VI. XSLT 91 4. Estructuras de Control XSLT  Elementos para el control de flujo  <xsl:for-each select=“XPath” >  <xsl:if test=“condición” >  <xsl:choose>  <xsl:when test=“…”>  <xsl:otherwise>  <xsl:sort select=“XPath”>
  92. 92. VI. XSLT Veamos unos Ejemplos

×