Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

XML - Introducción

1,721 views

Published on

Pequeña introducción a XML.
Utilizada en diversos cursos por Jose Emilio Labra Gayo

Changelog:

23/05/2017: Actualizadas para añadir sintaxis coloreada

Published in: Education
  • Be the first to comment

XML - Introducción

  1. 1. Jose Emilio Labra Gayo – Universidad de Oviedo XML Departamento de Informática Universidad de Oviedo http://www.di.uniovi.es/~labra
  2. 2. Jose Emilio Labra Gayo – Universidad de Oviedo 1970s GML (IBM) – Generalized Markup Language (Goldfarb, Mosher, Lorie) 1986 SGML Standard Generalized Markup Language (Estándar ISO) Intercambio de documentos Principio: Separar contenido de representación Muy flexible (permite definir vocabularios específicos para cada aplicación) HTML = vocabulario de SGML Charles Goldfarb SGML SGML
  3. 3. Jose Emilio Labra Gayo – Universidad de Oviedo Tim Bray 20% de características de SGML  80% de funcionalidad de SGML Detalle (Especificación de XML = 26 páginas, de SGML > 500 Desarrollado por T. Bray, J. Paoli, C. M. Sperberg-McQueen (1995) T. Bray: Consultor de Textuality para Netscape (ahora en Sun) C. M. Sperberg-McQueen (TEI, SGML) J. Paoli (Microsoft) Objetivos: Crear una versión simplificada de SGML para la Web XML
  4. 4. Jose Emilio Labra Gayo – Universidad de Oviedo "…necesito 20 rotuladores RX2 de código R23, que escriban y 2 grapadoras Lin de código G56 envueltas para regalo" XML y el comercio electrónico XML aparece en pleno apogeo del comercio electrónico Formato que permita transmitir información semiestructurada Problema: Dificultad de procesar automáticamente el lenguaje natural
  5. 5. Jose Emilio Labra Gayo – Universidad de Oviedo HTML y la información semiestructurada HTML = lenguaje para representar hipertexto Etiquetas: body, h1, p, table, ... no tienen significado del dominio Indican únicamente cómo representar el contenido Dentro de las etiquetas: lenguaje natural <html> <head> <title>Pedido</title> </head> <body> <h1>Pedido de material</h1> <table> <tr><th>Codigo</th><th>Nombre</th><th>Cantidad</th><th>Comentarios</th></tr> <tr><td>R23</td><td>Rotulador RX2</td><td>20</td><td>Color negro</td></tr> <tr><td>G56</td><td>Grapadora Lin</td><td>2</td><td>Envuelta para regalo</td></tr> </table> </html> Técnicas de Screen scrapping Una posible representación de pedidos...
  6. 6. Jose Emilio Labra Gayo – Universidad de Oviedo XML y el comercio electrónico Las marcas de XML permiten procesar de forma no ambigüa los documentos <pedido> <producto codigo="R23"> <nombre>Rotulador RX2</nombre> <cantidad>20</cantidad> <comentarios>Comprobad que escriben</comentarios> </producto> <producto codigo="G56"> <nombre>Grapadora Lin</nombre> <cantidad>2</cantidad> <comentarios>Envuelta para regalo</comentarios> </producto> </pedido>
  7. 7. Jose Emilio Labra Gayo – Universidad de Oviedo XML <?xml version=“1.0” ?> <raíz> <elemento> … </elemento> </raíz> <!DOCTYPE raíz[ … ]> Declaración de XML Declaración de Tipo DTD Opcional Documento
  8. 8. Jose Emilio Labra Gayo – Universidad de Oviedo Declaración de XML version: Actual = 1.0 También existe la versión 1.1 Mayor compatibilidad con Unicode Identificadores: Permite cualquier carácter Unicode encoding: UTF-8, UTF-16, iso-8859-1, etc. standalone: Indica si se puede gestionar el documento sin hacer uso de recursos externos <?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>
  9. 9. Jose Emilio Labra Gayo – Universidad de Oviedo Documentos y elementos XML Los documentos consisten en una serie de datos marcados mediante etiquetas Las etiquetas describen la estructura del documento Un elemento = etiqueta inicial, etiqueta final y contenido entre ambas. La etiqueta inicial puede incluir atributos Distinción minúsculas/mayúsculas <etiqueta attributo="valor">……</etiqueta>
  10. 10. Jose Emilio Labra Gayo – Universidad de Oviedo Documentos XML Elementos vacíos Elementos vacío: elementos que no incluyen información Habitualmente, incluyen atributos <etiqueta attributo="valor"></etiqueta> = <etiqueta attributo="valor" /> Ejemplo: <img src="foto.jpg" alt="Foto de Paisaje" ></img> Sintaxis abreviada: <img src="foto.jpg" alt="Foto de Paisaje" />
  11. 11. Jose Emilio Labra Gayo – Universidad de Oviedo Anidamiento Se pueden anidar elementos <externo> <interno>texto</interno> </externo> <externo> <interno>texto</externo> </interno> ...pero no se pueden entrelazar:  
  12. 12. Jose Emilio Labra Gayo – Universidad de Oviedo <pedido fecha="3/2/2011"> <producto codigo="G23"> <nombre>Grapadora</nombre> <cantidad>20</cantidad> <comentarios> Contactar con <persona>Juan</persona> </comentarios> </producto> <producto codigo="R15"> <nombre>Rotulador</nombre> <cantidad>10</cantidad> </producto> </pedido> Árbol del documento XML pedido producto productofecha <root> 3/2/2011 Atributo Elemento Raíz Texto nombre cantidadcodigo G23 comentarios Grapadora 2 Contactar con persona Juan nombre cantidadcodigo R15 Rotulador 10 http://software.hixie.ch/utilities/js/live-dom-viewer
  13. 13. Jose Emilio Labra Gayo – Universidad de Oviedo Ejercicio <html> <head> <title>Pagina</title></head> <body> <h1>Ejemplo</h1> <p>La <a href="http://www.uniovi.es"> Universidad de Oviedo</a> está en <em>Asturias</em> </p> </body> </html> Dibujar el árbol del siguiente documento HTML NOTA: Cualquier documento HTML se puede representar como un árbol Solución
  14. 14. Jose Emilio Labra Gayo – Universidad de Oviedo <html> <head> <title>Prueba</title> <script type="text/javascript"> function inserta() { var hola = document.createTextNode("Hola"); var p = document.createElement("p"); p.appendChild(hola); document.body.appendChild(p); } </script> </head> <body> <input type="button" value="Saluda!" onclick="inserta();" /> </body> </html> Modificación del árbol http://www.di.uniovi.es/~labra/cursos/XML/ejemplos/CambiaDOM.html El árbol DOM puede manipularse dinámicamente
  15. 15. Jose Emilio Labra Gayo – Universidad de Oviedo Atributos Cada elemento puede contener atributos en la etiqueta inicial <poema fecha="Abril de 1915" lugar="Granada"> . . . </poema> El orden de los atributos no es significativo No puede haber 2 atributos con el mismo nombre Las comillas dobles y simples pueden mezclarse <autor frase="Juan dijo 'Hola' "> . . . </autor> <autor frase='Juan dijo "Hola" '> . . . </autor>
  16. 16. Jose Emilio Labra Gayo – Universidad de Oviedo Atributos predefinidos xml:lang especifica el idioma. Ejemplo: en (inglés), es (español) xml:space especifica cómo tratar el espacio en blanco. preserve = Mantenerlo default = Permitir a la aplicación que lo trate como quiera. xml:base: Especifica URL de base en las referencias relativas <doc xml:base="http://www.ejemplo.org"> <link url="friends.xml">Amigos</link> </doc> xmlns:a Declara a como un alias para un espacio de nombres
  17. 17. Jose Emilio Labra Gayo – Universidad de Oviedo Comentarios Mediante <!-- y --> <poema fecha="Abril de 1915" lugar="Granada"> <!-- Este poema es divertido --> <titulo>Alba</titulo> <verso>Mi corazón oprimido</verso> <!-- Cuando me inspire escribiré más versos --> </poema> NOTA: Dentro de los comentarios no pueden aparecer dos caracteres - seguidos
  18. 18. Jose Emilio Labra Gayo – Universidad de Oviedo Caracteres especiales Mediante &#nº; se puede incluir un carácter Unicode Ejemplo: ∀ incluye  &nombre; permite referenciar macros (se definen en una DTD) Algunas macros predefinidas Para incluir los caracteres especiales, se utilizan las macros &lt; < &gt; > &quot; “ &apos; ‘ &amp; & <código> if x &lt; 4 then x:=x + 1; </código>
  19. 19. Jose Emilio Labra Gayo – Universidad de Oviedo Secciones CDATA Las secciones CDATA permiten escribir texto literal que no será procesado <código> if x < 3 && x > 4 then print “Hola” </código> <código> <![CDATA[ if x < 3 && x > 4 then print “Hola” ]]> </código> <código> if x &lt; 3 &amp;&amp; x &gt; 4 then print &quot;Hola&quot; </código>   ≡
  20. 20. Jose Emilio Labra Gayo – Universidad de Oviedo Instrucciones de Procesamiento Indican alguna acción a realizar por una aplicación externa Si el procesador reconoce la aplicación externa le pasa los datos Si no la reconoce, se ignora Formato: <?aplicación datos para la aplicación ?> <?xml-stylesheet type="text/xsl" href="hoja.xsl"?> Ejemplos: <?php 2+3 ?> <?sort ascending ?> <?xml version="1.0" ?> La declaración inicial puede considerarse una instrucción de procesamiento:
  21. 21. Jose Emilio Labra Gayo – Universidad de Oviedo Documento bien formado Sigue las reglas sintácticas anteriores Importante: Contiene un único elemento raíz Todas las etiquetas están correctamente anidadas <?xml version="1.0"?> <poema fecha="Abril de 1915" lugar="Granada"> <titulo>Alba</titulo> <verso>Mi <em>corazón</em> oprimido</verso> <verso>siente junto a la alborada</verso> <verso>el <em>dolor</em> de sus amores</verso> <verso>y el sueño de las distancias.</verso> </poema>
  22. 22. Jose Emilio Labra Gayo – Universidad de Oviedo Documento válido Se puede incluir una declaración del tipo de documento Documento válido Está bien formado y La estructura encaja con la declaración del tipo de documento <?xml version="1.0"?> <!DOCTYPE poema SYSTEM "poema.dtd"> <poema fecha="Abril de 1915" lugar="Granada"> <titulo>Alba</titulo> <verso>Mi <em>corazón</em> oprimido</verso> <verso>siente junto a la alborada</verso> <verso>el <em>dolor</em> de sus amores</verso> <verso>y el sueño de las distancias.</verso> </poema> <!ELEMENT poema (titulo,verso*)> <!ELEMENT titulo (#PCDATA)> <!ELEMENT verso (#PCDATA|em)*> <!ELEMENT em (#PCDATA)> <!ATTLIST poema fecha CDATA #REQUIRED lugar CDATA #IMPLIED> poema.dtd
  23. 23. Jose Emilio Labra Gayo – Universidad de Oviedo FIN

×