VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
XML - Introducción
1. Jose Emilio Labra Gayo – Universidad de Oviedo
XML
Departamento de Informática
Universidad de Oviedo
http://www.di.uniovi.es/~labra
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
< <
> >
" “
' ‘
& &
<código>
if x < 4 then x:=x + 1;
</código>
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 < 3 && x > 4 then
print "Hola"
</código>
≡
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. 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. 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