curso: “tecnología web -...

109
1 Curso sobre Tecnología Web Versión 2009 Curso: “Tecnología WebProfesores: Jose Emilio Labra Gayo (Universidad de Oviedo, España) Raúl Monge (UTFSM, Chile) Universidad Técnica Federico Santa María Departamento de Informática Curso sobre Tecnología Web Versión 2009 Contenido 1.- Tecnologías XML Definición y validación: DTDs, Espacios de nombres, XML Schema Transformación y consulta de XML: XSLT, XPath, XQuery Programación XML: SAX, DOM 2.-Servicios Web SOAP, WSDL, UDDI REST 3.-Web Semántica Fundamentos, RDF, Ontologías, Reglas 4.-Tendencias en la Web Web 1.0, 2.0, 3.0, …

Upload: phamkhuong

Post on 04-Jun-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

1

Curso sobre Tecnología Web Versión 2009

Curso: “Tecnología Web”

Profesores:Jose Emilio Labra Gayo (Universidad de Oviedo, España) Raúl Monge (UTFSM, Chile)

Universidad Técnica Federico Santa MaríaDepartamento de Informática

Curso sobre Tecnología Web Versión 2009

Contenido

1.- Tecnologías XMLDefinición y validación: DTDs, Espacios de nombres, XML SchemaTransformación y consulta de XML: XSLT, XPath, XQueryProgramación XML: SAX, DOM

2.-Servicios WebSOAP, WSDL, UDDIREST

3.-Web SemánticaFundamentos, RDF, Ontologías, Reglas

4.-Tendencias en la WebWeb 1.0, 2.0, 3.0, …

Page 2: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

2

Curso sobre Tecnología Web Versión 2009

Horario

Programación XML: SAX, DOM, JAXBAplicaciones XML: XHTML, SVG, SMIL, WML, X3D, etc

20:30h – 22hClase 4

*break*

Acceso XML (XPath)Transformación XML (XSLT)

Consultas XML (XQuery)

18:15h – 20:15hClase 3

*break*

XML SchemaDiseño Vocabularios XML

16:30h – 18hClase 2

*once*

Lenguajes de marcadoXML, DTDs

NameSpaces

14:30h – 16hClase 1

Viernes

Curso sobre Tecnología Web Versión 2009

Motivación

WWW = Mayor almacen de información jamás recopilado por la humanidad

CaracterísticasGrandes cantidades de información sobre cualquier asuntoAcceso casi instantáneo desde cualquier lugar con conexión a

InternetSistema no centralizado ⇒ Cualquier persona puede añadir más

informaciónPlataforma Multimedia (Texto, Imágenes, Vídeo, etc.)Identificación de recursos unificada (URIs)

Page 3: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

3

Curso sobre Tecnología Web Versión 2009

Grandes Retos

Integración de aplicacionesBúsqueda de lenguajes comunes: EstandarizaciónInteroperabilidad y computación ubicuaModelos Orientados a Servicios

Automatización de tareasRepresentaciones comprensibles por las máquinasCreación de agentes autónomos

AccesibilidadAcceso universalAtención a todos los usuarios: discapacidades, entornos diferentes, etc.

Curso sobre Tecnología Web Versión 2009

Arquitectura de la Web

URIUnicode

Firm

as d

igit a

les

XML + Namespaces + XML Schema

Demostración

Docum.auto-

descritoRDF + RDF Schema

Datos

Ontologías

Datos

Lógica

ReglasConfianza

Page 4: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

4

Curso sobre Tecnología Web Versión 2009

Representación de InformaciónBits, bytes, números, caracteres, ...

Los ordenadores manejan código binario: 0s y 1sBytes: Grupos de 8 bits

Números: Sistemas de codificación binaria, octal, hexadecimal...Caracteres: Código que asocia a cada carácter un nº

ASCII: 7 bits ⇒ (0 – 127)(A)merican (S)tandard (C)ode for (I)nformation (I)nterchange

Extensiones de ASCIIISO-8859-1 (iso-latin-1)

(8 bits) ASCII (0-127) + otros caracteres típicos de Europa occidental Familia ISO-8859-X = Otros alfabetos europeos ISO-8859-15 (iso-latin-9) Igual que iso-8859-1 + símbolo de €

¡CUIDADO! ...hay muchos idiomas y muchos caracteres...

ℜ € き ㄝ ㌟ ㉃ ⋐ ∀ ℵ ₤ ウ ぼ

Curso sobre Tecnología Web Versión 2009

UnicodeISO-10646 (31 bits) Define un repertorio universal de caracteres (UCS)

En continua revisión: ISO-10646-2:2001 contiene más de 70.000 caracteresUNICODE = Consorcio de empresas que define restricciones sobre la

implementación de ISO-10646Varias codificaciones (UTF = Unicode Transformation Format)- UTF-8: Los primeros 127 códigos se presentan igual (compatible con ASCII)

El resto se codifican en longitud variableRelativamente Eficiente

- UTF-16: Usa 16bits para los caracteres más comunes, el resto con pares de 16 bits

- UTF-32: Codificación directa en 32 bits (desperdicio de espacio)

NOTA: Conviene distinguir:

Carácter: Entidad abstracta (Letra A)

Glifo (Glyph): Representación del carácter A A A A A A

Fuente (Font): Conjunto de glyphs, ejemplo: Times Roman, Arial, etc.

Page 5: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

5

Curso sobre Tecnología Web Versión 2009

Otra InformaciónImágenes: En pantalla = matriz de puntos de colores (pixels)

Formatos Raster (Raw): Se enumeran todos los puntos con sus colores Ejemplo: Bitmap, TIFF

Compresión: diversos algoritmos de compresiónGIF: Utiliza 8 bits (hasta 256 colores)

Byte de color = Indice en la paleta de coloresJPEG: utiliza 24 bits (hasta 16 millones de colores)

Vectorial: Se enumeran las instrucciones de dibujoEjemplos: DXF, SVG (estándar de Internet)

Sonido: Formatos raster (WAV) y comprimidos (MP3)Vídeo: Formatos comprimidos (MPEG)Realidad Virtual: Lenguaje de Modelado (VRML, X3D)

Curso sobre Tecnología Web Versión 2009

Identificación de recursos

Recurso = Unidad básica fundamental de la WWWHTTP es un protocolo que se basa en manipular recursos

Los métodos GET, PUT, UPDATE, DELETE actúan sobre recursosIdentificador ≠ Recurso ≠ Representación

URI http://weather.net/Oviedo Identifica

Tiempo en OviedoMetadatos: Content-type: application/xhtml+xml

Datos:<html xmlns=“…”><head>…</head><body><h1>Tiempo en Oviedo</h1><p>Nubes y claros</p></body></html>

Representa

Representación

Page 6: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

6

Curso sobre Tecnología Web Versión 2009

Identificación de recursos

URIs = mecanismo para identificar recursosFormato:

http://tools.ietf.org/html/rfc3986

esquema : // autoridad camino ?consulta#fragmento

http :// ejemplo.com:8042 /libros/castellano?autor=Cervantes #capitulo2

Otros ejemplos de URIs:ftp://ftp.is.co.za/rfc/rfc1808.txtmailto:[email protected]://192.0.2.16:80/ urn:oasis:names:specification:docbook:dtd:xml:4.1.2

Nota: los caracteres deben codificarse. Significado especial de espacios, ?, /, etc.

Nota: las URNs identifican nombres únicos solamente. Sin protocolo de acceso

Curso sobre Tecnología Web Versión 2009

Identificación de recursos

La parte de la consulta contiene componentes no jerárquicosNormalmente se utiliza para parametrizar el accesoLa representación de los recursos pueden obtenerse dinámicamenteBase para servicios web RESTUtilidad: curl permite acceder desde línea de comandosEjemplo: curl “http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=YahooDemo&query=Chile&results=10”

Importancia de nombres adecuados para URIshttp://www.w3.org/Provider/Style/URI

Page 7: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

7

Curso sobre Tecnología Web Versión 2009

HTTP

HTTP es el protocolo que define la WWWProtocolo basado en texto

Mensajes legibles por humanos (los contenidos no necesariamente)Conjunto de Operaciones básico: GET, PUT, UPDATE, POST, etc.

Basado en cliente/servidor: Petición / RespuestaSin estado

Formato de mensajes

línea inicialcabecera del mensaje *cuerpo del mensaje ?

Algunas páginas permiten ver los mensajes: http://web-sniffer.net/

Curso sobre Tecnología Web Versión 2009

HTTP

Peticiones

GET /index.html HTTP/1.1Host: www.uniovi.esUser-Agent: Mozilla/5.0 …Accept: text/xml, application/xml, text/html, …Accept-language: us,en; q= 0.5

Otros métodos posibles:

PUT, POST, DELETE…

Page 8: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

8

Curso sobre Tecnología Web Versión 2009

HTTP

Respuestas

HTTP/1.1 200 OKDate: Fri, 17 Nov 2006 15:36:32 GMTServer: ApacheLast-Modified: Fri, 17 Nov 2006 09:05:32 GMTContent-length: 43305Content-type: text/html

<!DOCTYPE html PUBLIC …><html xmlns=“…”>…</html>

Códigos estándar: 2**: Variaciones de OK3**: redirecciones4**: Problemas del cliente

(404, no encontrado)5**: problemas del servidor

Curso sobre Tecnología Web Versión 2009

Arquitectura de la Web

URIUnicode

XML + Namespaces + XML Schema

Docum.auto-

descrito Firm

as d

igit a

les

Demostración

RDF + RDF Schema

Datos

Ontologías

Datos

Lógica

ReglasConfianza

Page 9: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

9

Curso sobre Tecnología Web Versión 2009

Orígenes de XMLMarcado de documentos

Orígenes: Industria de la PublicaciónUso de marcas = indica cómo componer documento para impresión

Ejemplo de corrección tipográficaFuente: http://recursos.cnice.mec.es/bancoimagenes

Curso sobre Tecnología Web Versión 2009

Marcado de documentos

ALBA Abril de 1915 Granada Mi corazón oprimido siente junto a la alborada el dolor de sus amores y el sueño de las distancias.

Sólo texto

]ALBA[ ← Título, negrita, centrado, 14pt]Abril de 1915[← SubTítulo, negrita, centrado]Granada[← SubTítulo cursiva, centrado]Mi corazón oprimido [← Verso, 10pt]siente junto a la alborada [← Verso]el dolor de sus amores [← Verso]y el sueño de las distancias. [← Verso

Texto marcadoALBA

Abril de 1915Granada

Mi corazón oprimido siente junto a la alborada el dolor de sus amores y el sueño de las distancias.

Resultado

Page 10: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

10

Curso sobre Tecnología Web Versión 2009

Marcado DescriptivoEl marcado no es la información que contiene el documentoMarcado = información acerca del documento = meta-informaciónLenguajes de Marcado descriptivo: Incluyen marcas que describen cómo

procesar el documento

<html><head><title>Poema</title></head><body lang=“es”><h1>Alba</h1><h2>Abril de 1915 </h2><h2><i>Granada</i></h2><p>Mi corazón oprimido</p><p>siente junto a la alborada</p><p>el dolor de sus amores</p><p>y el sueño de las distancias. </p></body></html>

Ejemplo: HTML

Curso sobre Tecnología Web Versión 2009

Marcado Generalizado

Marcado generalizado = Sintaxis común que facilita la creación de lenguajes descriptivos

<html><head><title>Poema</title></head><body lang=“es”><h1>Alba</h1><h2>Abril de 1915 </h2><h2><i>Granada</i></h2><p>Mi corazón oprimido</p><p>siente junto a la alborada</p><p>el dolor de sus amores</p><p>y el sueño de las distancias.</p></body></html>

HTML

<poema fecha="Abril de 1915" lugar="Granada">

<titulo>Alba</titulo>

<verso>Mi corazón oprimido</verso><verso>siente junto a la alborada</verso><verso>el dolor de sus amores</verso><verso>y el sueño de las distancias. </verso></poema>

Otras marcas...(misma sintaxis)

Sintaxis común <etiqueta atrib=“valor”>contenido

</etiqueta>

Page 11: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

11

Curso sobre Tecnología Web Versión 2009

Marcado GeneralizadoSGML

(70- ) GML desarrollado en IBM – Generalized Markup Language (Goldfarb, Mosher, Lorie)

(86) SGML Standard Generalized Markup Language (Estándar ISO) Utilizado para el intercambio de documentosPrincipio: Separar contenido de la forma de representarloMuy flexible (permite definir vocabularios específicos para

cada aplicación)HTML era un vocabulario de SGML

Curso sobre Tecnología Web Versión 2009

Marcado GeneralizadoXML

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

20% de características de SGML ⇔ 80% de funcionalidad de SGMLDetalle (Especificación de XML = 26 páginas, de SGML > 500

Page 12: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

12

Curso sobre Tecnología Web Versión 2009

XML

<?xml version=“1.0” ?>

<raíz><elemento>…

</elemento></raíz>

<!DOCTYPE raíz[…

]>

Declaración de XML

Declaración deTipo DTDOpcional

Documento

Curso sobre Tecnología Web Versión 2009

Declaración de XML

<?xml version=“1.0”encoding=“iso-8859-1”standalone=“yes”?>

version: Actual = 1.0Borrador de versión 1.1 Mayor compatibilidad con UnicodeIdentificadores: Permite cualquier carácter Unicode

encoding: UTF-8, UTF-16, iso-8859-1, etc.standalone: Indica si el documento no hace referencias a entidades externas

Page 13: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

13

Curso sobre Tecnología Web Versión 2009

Elementos XMLLos documentos consisten en una serie de datos marcados

mediante etiquetasLas etiquetas describen la estructura del documentoUn elemento = etiqueta inicial, etiqueta final y contenido entre

ambas. La etiqueta inicial puede incluir atributos.

<etiqueta attributo=“valor”>……</etiqueta>

Distinción minúsculas/mayúsculas

Curso sobre Tecnología Web Versión 2009

Elementos vacíos

Elementos vacíos: elementos que no incluyen contenido (pueden contener atributos)

<etiqueta attributo=“valor”></etiqueta>⇓

<etiqueta atributo=“valor”/>

Ejemplo:

<img src=“foto.jpg” alt=“Foto de Paisaje” ></img>

Sintaxis abreviada:

Page 14: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

14

Curso sobre Tecnología Web Versión 2009

Anidamiento

Se pueden anidar elementos<externo><interno>texto</interno>

</externo>

<externo><interno>texto</externo>

</interno>

...pero no se pueden entrelazar:

Curso sobre Tecnología Web Versión 2009

Árbol del documento XML

Cualquier documento XML puede representarse como un árbol<poema fecha="Abril de 1915" lugar="Granada"><titulo>Alba</titulo><verso>Mi corazón oprimido</verso><verso>siente junto a la alborada</verso><verso>el dolor de sus amores</verso></poema>

Poema

Título Verso Verso Verso

Alba Mi corazon ... siente ... el dolor ...

fecha Lugar

<root>

GranadaAbril de 1915

AtributoElementoRaíz

Texto

Page 15: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

15

Curso sobre Tecnología Web Versión 2009

Árbol del documento

Cualquier documento XML puede representarse como un árbolLos documentos HTML también

<html><head><title>Pagina</title></head><body><h1>Ejemplo</h1><p>Este párrafo tiene un

<a href="http://www.uniovi.es">enlace</a> y un texto <em>enfatizado</em></p>

</body> </html>

Ejercicio: Dibujar el árbol del siguiente documento HTML

Curso sobre Tecnología Web Versión 2009

DOM

El árbol DOM puede manipularse dinámicamente<html>

<head><title>Prueba</title><script type="text/javascript"><!--

function clona() {var raiz=document.documentElement;var cuerpo=raiz.getElementsByTagName("body")[0];var texto=cuerpo.firstChild;var textoNuevo=texto.cloneNode(true);cuerpo.appendChild(textoNuevo);

}--></script>

</head><body>

Hola<input type="button" name="Clona" value="Saluda!" onclick="clona();" />

</body></html> http://www.di.uniovi.es/~labra/cursos/XML/ejemplos/cambiaDOM.html

Page 16: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

16

Curso sobre Tecnología Web Versión 2009

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 significativoNo puede haber 2 atributos con el mismo nombreLas comillas dobles y simples pueden mezclarse

<autor frase=“Juan dijo ‘Hola’ ”>. . .

</autor> <autor frase=‘Juan dijo “Hola” ’>. . .

</autor>

Curso sobre Tecnología Web Versión 2009

Atributos predefinidos

xml:lang especifica el idioma. Ejemplo: en (inglés), sp (español)xml:space especifica cómo tratar el espacio en blanco.

preserve = Mantenerlodefault = 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

Page 17: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

17

Curso sobre Tecnología Web Versión 2009

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>

Dentro de los comentarios no pueden aparecer los caracteres --

Curso sobre Tecnología Web Versión 2009

Caracteres especiales

Mediante &#nº; se puede incluir un carácter UnicodeEjemplo: &#x2200; 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>

Page 18: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

18

Curso sobre Tecnología Web Versión 2009

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><![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>

Curso sobre Tecnología Web Versión 2009

Instrucciones de Procesamiento

Es posible incluir instrucciones que indican al procesador alguna acción a realizar

Sintaxis: <?aplicación datos ?>

En realidad la declaración de documento es una instrucción de procesamiento

<?xml-stylesheet type="text/xsl" href=“hoja.xsl"?>

Pueden utilizarse para asociar una hoja de estilos al documento:

...o para otros propósitos especiales

<?xml version=“1.0” ?>

<?php ... ?>

Page 19: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

19

Curso sobre Tecnología Web Versión 2009

Documento bien formado

Documento bien formadoSigue las reglas sintácticas Importante:

Contiene un único elemento raízTodas las etiquetas están correctamente anidadas

<pizzas><pizza nombre="Margarita" precio="6"><ingrediente nombre="Tomate" /><ingrediente nombre="Queso" /></pizza>

</pizzas>

<pizzas><pizza nombre="Margarita" precio="6"><ingrediente nombre="Tomate" >

</pizzas>

Curso sobre Tecnología Web Versión 2009

Documento válido

Se puede incluir una declaración del tipo de documento

Documento válidoEstá bien formado + Estructura encaja con DTD

<?xml version=“1.0”?><!DOCTYPE poema SYSTEM “poema.dtd”><poema fecha="Abril de 1915"

lugar="Granada">

<titulo>Alba</titulo>

<verso>Mi corazón oprimido</verso><verso>siente junto a la alborada</verso><verso>el dolor de sus amores</verso><verso>y el sueño de las distancias. </verso></poema>

<!ELEMENT poema (titulo,verso*)><!ELEMENT titulo (#PCDATA)><!ELEMENT verso (#PCDATA)><!ATTLIST poema fecha CDATA #REQUIRED

lugar CDATA #IMPLIED>

poema.dtd

Page 20: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

20

Curso sobre Tecnología Web Versión 2009

Declaración Tipo DocumentoDTD

La DTD permite especificar la estructura del documentoLa DTD puede estar separada del documento

Emisor Documentoautodescrito

DTD

Receptor

valida

Curso sobre Tecnología Web Versión 2009

Declaración de tipo de documento (DTD)

<?xml version=“1.0”?><!DOCTYPE pizzas SYSTEM “http://www.mafia.it/pizzas.dtd“ ><pizzas>. . .</pizzas>

<?xml version=“1.0”?><!DOCTYPE pizzas [<!ELEMENT pizzas (pizza*)>

. . .]><pizzas>. . . </pizzas>

DTD interno

DTD externo

<?xml version=“1.0”?><!DOCTYPE HTML PUBLIC

"-//W3C//DTD HTML 4.0//EN”“http://www.w3c.org/TR/REC-html/strict.dtd”>

PUBLIC (DTDs compartidos por diversas organizaciones)

SYSTEM (DTDs de ámbito local)

También es posible especificar un DTD externo y añadir definiciones locales

Page 21: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

21

Curso sobre Tecnología Web Versión 2009

DTDTipos de declaraciones

ELEMENTElementos del documento XML

ATTLISTLista de atributos de un elemento

ENTITYEntidades (≈variables o macros)

NOTATIONDefinen tipos de contenidosFacilitan la inclusión de formatos binarios (imágenes, vídeos, sonidos, ...)

Curso sobre Tecnología Web Versión 2009

Contenido de Elementos(?) = 0, 1 elemento(*) = 0 ó más elementos(+) = 1 ó más elementos(|) = alternativa(,) = secuenciaEMPTY = vacíoANY = cualquier estructura de subelementos#PCDATA = cadena de caracteres analizados

<!ELEMENT pizza (ingrediente*, inventor?)><!ELEMENT servicio (domicilio | restaurante) ><!ELEMENT ingrediente EMPTY><!ELEMENT inventor (#PCDATA)><!ELEMENT sección (título, (contenido | sección+))>

Recursividad

Page 22: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

22

Curso sobre Tecnología Web Versión 2009

Contenido mixto

Contenido que puede mezclar texto con elementosEjemplo:

<comentario>Este texto está relacionado con el <enlace url=“http://www.quijote.com”>Quijote</enlace> y ha sido realizado por <persona>Leopoldo Alas Clarín</persona></comentario>

<!ELEMENT comentario (#PCDATA|enlace|persona)* >

<!ELEMENT enlace (#PCDATA)><!ELEMENT persona (#PCDATA)><!ATTLIST enlace url CDATA #REQUIRED>

Curso sobre Tecnología Web Versión 2009

Atributos

Valor de los Atributos#REQUIRED Obligatorio#IMPLIED Opcional#FIXED ConstanteValor Valor por defecto

<!ATTLIST pizza nombre CDATA #REQUIRED><!ATTLIST ingrediente nombre CDATA #REQUIRED

calorías CDATA #IMPLIED><!ATTLIST precio moneda (euros|dólares) #REQUIRED

valor CDATA #REQUIRED><!ATTLIST conOrégano (sí|no) “sí” ><!ATTLIST impuesto tipo CDATA #FIXED “IVA”>

Tipos de datosCDATA = Cadena de caracteresNMTOKEN = Palabra (sin espacios)NMTOKENS = Lista de palabrasEnumeración separada por |

<pizza nombre=“4 estaciones” ><ingrediente nombre=“Jamón” /><precio moneda=“euros” valor=“7” />

</pizza>

Page 23: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

23

Curso sobre Tecnología Web Versión 2009

Valores ID e IDREF

<!ATTLIST persona código ID #REQUIRED><!ATTLIST dueño código IDREF #REQUIRED>

ID = Nombre único (sin duplicados)IDREF = Su valor debe apuntar a un ID

<persona código=“23” nombre =“Juan” /><persona código=“35” nombre =“Pepe” /><persona código=“37” nombre =“Luis” />

<dueño código=“35” />

Curso sobre Tecnología Web Versión 2009

DTDEntidades Generales

Entidades: Asignan nombres a ciertos elementos (similar a variables)Se denotan por &entidad;No se admite recursividad

<pizza nombre=”&marg;" precio=”7">&queso;</pizza>

<!ENTITY marg “Pizza Margarita”><!ENTITY queso “<ingrediente nombre=‘queso’ />” >

Entidades predefinidas: Permiten incluir etiquetas sin analizar &lt; < &quot; “ &apos; ‘&gt; > &amp; &

<pizza nombre=”Pizza Margarita" precio=”7"><ingrediente nombre=‘queso’ /></pizza>

Entidades numéricas: Código numérico del carácter

&#x2200; ∀ &#8707; ∃

Page 24: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

24

Curso sobre Tecnología Web Versión 2009

DTD Entidades externas

Permiten usar archivos externos (Incluir otros documentos XML)

<pizzas><pizza nombre=”4 Quesos" precio=”7"><ingrediente nombre=“Jamón” /><ingrediente nombre=“Queso” />

</pizza>. . .</pizzas>

pizzas.xml<personal><trabajador

nombre=” Benito Alcaparra" >. . .

</trabajador>. . .</personal>

personal.xml

<establecimiento nombre=“Pizzería Al Capone”>

&personal;&pizzas;

</establecimiento>

establecimiento.xml

<!ELEMENT establecimiento ANY><!ENTITY personal SYSTEM “personal.xml”><!ENTITY pizzas SYSTEM “pizzas.xml”>

establecimiento.dtd

Curso sobre Tecnología Web Versión 2009

DTDEntidades externas

Las entidades externas combinadas con notaciones permiten incluir archivos externos de datos binarios

<!NOTATION gif SYSTEM “gifEditor.exe”><!ENTITY dibujo SYSTEM “logotipo.gif” NDATA gif>

<información><logotipo>&dibujo;</logotipo>

</información>

Page 25: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

25

Curso sobre Tecnología Web Versión 2009

DTD Entidades Parámetro

<!ENTITY %localización “calle,número?,ciudad,país,códigoPostal” ><!ENTITY establecimiento (nombre,dueño?,%localización;)><!ENTITY persona (dni, nombre, %localización;>

Permiten dar nombres a partes de un DTDSe denotan por %entidad;

Entidades externas: Permiten incluir elementos externos en una DTDAplicación: Dividir la definición de una DTD en varios documentos

<!ENTITY %persona SYSTEM “persona.dtd”><!ENTITY %establecimiento SYSTEM “establecimiento.dtd”>%persona;%establecimiento;

<!ENTITY establecimiento (nombre,dueño?,calle,número?,ciudad,país,códigoPostal) ><!ENTITY persona (dni, nombre, calle,número?,ciudad,país,códigoPostal) >

Curso sobre Tecnología Web Versión 2009

Discusión sobre XML: Ventajas

Es un formato estructurado Contiene información y meta-información

Ha sido diseñado específicamente para InternetSoportado por visualizadores y servidores

Numerosas herramientas de procesamientoLegible por personas humanasAdmite la definición de vocabularios específicosSepara contenido del procesamiento y visualizaciónAumenta la seguridad mediante la validación de documentosFormato abierto, respaldado por numerosas organizacionesUna vez definido un DTD común, facilita intercambio de información

Page 26: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

26

Curso sobre Tecnología Web Versión 2009

Discusión sobre XML: Inconvenientes

Puede requerir demasiado espacio, ancho de banda y tiempo de procesamiento

Documentos largos con mucha información redundanteProblemas para Bases de Datos

Es una sintaxis de documentos, no un lenguaje de programaciónEs posible crear formatos y vocabularios propietariosPuede fomentar la proliferación de vocabularios específicosBueno para texto, malo para datos binarios

<?xml version=“1.0”><imagen formato=“base64”>DS34JSCDF029876D76523981DFNDF3F2134F5FD019AFGF23DAND345CD2135911943DCBKAPFGDAJJK32A10....</imagen>

Curso sobre Tecnología Web Versión 2009

Espacios de Nombres

Page 27: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

27

Curso sobre Tecnología Web Versión 2009

Problema de la Homonimia

Homonimia: Mismo nombre con diferentes propósitos

<país nombre=“Francia”><capital>París</capital></país>

<inversión><capital>7000€</capital>

</inversión>

¿Cómo combinar en el mismo documento estos vocabularios?<inversiones><país nombre=“Francia”><capital>París</capital><capital>1200€</capital>

</país>. . .

</inversiones>

Ambigüedad

Curso sobre Tecnología Web Versión 2009

Posibles Soluciónes

Asignar un nombre único a cada etiqueta...Posibles soluciones:

Crear una autoridad mundial que asigne nombres...... o usar un mecanismo ya existente: URIsUna URI es un identificador global único

Ejemplo: http://www.aulanet.uniovi.esSOLUCIÓN:

Asociar a cada etiqueta una URI que indica a quéespacio de nombres pertenece...

[http:www.bolsa.com]:capital[http:www.geog.es]:capital

Page 28: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

28

Curso sobre Tecnología Web Versión 2009

Posibles soluciones

<[http://www.bolsa.com]:inversiones><[http://www.geog.es]:país

[http://www.geog.es]:nombre=“Francia”><[http://www.geog.es]:capital>París</[http://www.geog.es]:capital><[http://www.bolsa.com]:capital>1200€</[http://www.bolsa.com]:capital>

</[http://www.bolsa.com]:país>. . .

</[http://www.bolsa.com]:inversiones>

Solución fácil... Asociar a cada etiqueta una URI

Legibilidad...

Curso sobre Tecnología Web Versión 2009

Definición

Solución: Asociar un alias a los elementos de un espacio de nombres dentro de un ámbitoxmlns:alias define alias en el ámbito de un elemento

<b:inversionesxmlns:b=“http://www.bolsa.com”xmlns:geo=“http://www.geog.es”>

<geo:país geo:nombre=“Francia”><geo:capital>París</geo:capital><b:capital>1200€</b:capital>

</geo:país>. . .

</b:inversiones> NOTA: Las URIs sólo se utilizan para que el nombre sea único, no son enlaces, ni tienen que contener información

Page 29: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

29

Curso sobre Tecnología Web Versión 2009

Asignación Dinámica

Es posible ir asociando espacios de nombres a los elementos según van apareciendo

<b:inversionesxmlns:b=“http://www.bolsa.com”>

<geo:paísxmlns:geo=“http://www.geog.es”geo:nombre=“Francia”>

<geo:capital>París</geo:capital><b:capital>1200€</b:capital>

</geo:país>. . .

</b:inversiones>

Curso sobre Tecnología Web Versión 2009

Espacio de nombres por defecto

Mediante xmlns=“...” se define un espacio de nombres por defecto (sin alias)

<inversionesxmlns=“http://www.bolsa.com”>

<geo:paísxmlns:geo=“http://www.geog.es”geo:nombre=“Francia”>

<geo:capital>París</geo:capital><capital>1200€</capital>

</geo:país>. . .

</inversiones> Se refiere a http://www.bolsa.com

Page 30: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

30

Curso sobre Tecnología Web Versión 2009

Algunos espacios de nombre populares

XHTML: http://www.w3.org/1999/xhtmlXSLT: http://www.w3.org/1999/XSL/TransformSVG: http://www.w3.org/2000/svgXLink: http://www.w3.org/1999/xlinkRDF: http://www.w3.org/1999/02/22-rdf-syntax-ns#Dublin Core: http://purl.org/dc/elements/1.1/Atom: http://www.w3.org/2005/Atom

Curso sobre Tecnología Web Versión 2009

Combinación de espacios de nombres

http://www.di.uniovi.es/~labra/cursos/XML/ejemplos/combinaNamespaces.xhtml

Page 31: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

31

Curso sobre Tecnología Web Versión 2009

Validar espacios de nombres con DTDs

Posteriores a los DTDs, por tanto, los DTDs no dan soporte a Espacios de NombresHay que definir los espacios de nombre usados

<!DOCTYPE inversiones [<!ELEMENT inversiones (g:país*)><!ELEMENT g:país (g:capital,capital) ><!ELEMENT g:capital (#PCDATA)><!ELEMENT capital (#PCDATA)><!ATTLIST inversiones

xmlns CDATA #FIXED "http://www.bolsa.com"><!ATTLIST g:país

g:nombre CDATA #REQUIREDxmlns:g CDATA #FIXED "http://www.geog.es">

]>

Curso sobre Tecnología Web Versión 2009

Valoración

Ampliamente utilizados para combinar vocabulariosFacilitan la incorporación de elementos no previstos inicialmenteSintaxis extraña al principio

Uso de prefijos URIs como elemento diferenciador...pero las URLS también sirven para

acceder a recursosDifícil combinación con DTDs

Page 32: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

32

Curso sobre Tecnología Web Versión 2009

XML Schema

Curso sobre Tecnología Web Versión 2009

Lenguajes de Esquemas

Esquema = definición de estructura de un conjunto de documentos XMLValidar = Chequear que un documento sigue un esquema

Principal Ventaja: Protección de erroresOtras aplicaciones: Edición, compresión, etc.

DTDs = un ejemplo de esquemas (con varias limitaciones)XML Schema = desarrollo posterior del W3cExisten Otros:

RELAX-NG, Schematron, etc.

Page 33: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

33

Curso sobre Tecnología Web Versión 2009

Características de DTD’s

Especifican estructura del documento:Elementos, atributos, anidamientos, etc.

Integridad referencial mínima (ID, IDREF)Mecanismo sencillo de abstracción

Entidades ≈ MacrosInclusión de documentos externosIntegrados en XML (Parte de la especificación)Sencillos de comprender (≈ Expresiones regulares)

Curso sobre Tecnología Web Versión 2009

Limitaciones de DTD’s

La Sintaxis no es XML (difíciles de manipular)No soportan Espacios de nombresNo permiten especificar tipos de datos (por ejemplo: enteros,

flotantes, fechas, etc.No permiten especificar 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 posibleformar 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)

Page 34: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

34

Curso sobre Tecnología Web Versión 2009

XML SchemaObjetivos de Diseño

Sintaxis XMLSoporte para Espacios de NombresMayor expresividad

Restricciones numéricasIntegridad dependientes del contexto

Tipos de datosGran cantidad de tipos de datos predefinidosCreación de tipos de datos por el usuario

ExtensibilidadInclusión/Redefinición de esquemasHerencia de tipos de datos

Soporte a Documentación

Curso sobre Tecnología Web Versión 2009

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"targetNamespace="http://www.uniovi.es/alumnos"xmlns="http://www.uniovi.es/alumnos">

<xs:element name="alumnos"><xs:complexType><xs:sequence><xs:element name="alumno" minOccurs="1" maxOccurs="200"

type="TipoAlumno"/></xs:sequence>

</xs:complexType></xs:element><xs:complexType name="TipoAlumno">

<xs:sequence><xs:element name="nombre" type="xs:string"/><xs:element name="apellidos" type="xs:string"/><xs:element name="nacim" type="xs:gYear"/>

</xs:sequence><xs:attribute name="dni" type="xs:string"/>

</xs:complexType></xs:schema>

Ejemplo

Permite especificar tipos

Permite especificar rangos de inclusión

Elemento raíz schema y espacio de nombres

determinado

alumnos.xsd

Page 35: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

35

Curso sobre Tecnología Web Versión 2009

Estructura del Schema

El esquema está formado por:Raíz: schema de espacio de nombres

http://www.w3.org/2001/XMLSchematargetNamespace indica el espacio de nombres que se está definiendoSubelementos:

Declaraciones globales de elementos y atributosDefiniciones de tipos de elementos y atributosAnotaciones

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"targetNamespace="http://www.uniovi.es/alumnos"xmlns="http://www.uniovi.es/alumnos">

<xs:element name="alumnos">. . .

</xs:element>. . .

</xs:schema>

Curso sobre Tecnología Web Versión 2009

Tipos Complejos vsSimples

Pueden declararse 2 tipos:Complejos: Pueden contener sub-elementos y atributos

<alumno dni=“9873435”><nombre>Jose</nombre><apellidos>Bueno</apellidos>

</alumno>

Ejemplo de Tipo Complejo

Simples

Simples: No contienen sub-elementos ni atributosPueden aparecer dentro de elementos o en valores de atributos

Page 36: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

36

Curso sobre Tecnología Web Versión 2009

Validación: esquemas e Instancias

Un documento XML Schema define un conjunto de documentos con una determinada estructura

Un documento XML puede validarse contra varios esquemasPuede asociaciarse explícitamente mediante el atributo schemaLocation

Utiliza 2 cadenas, el espacio de nombres y la URL del documentoSi no se utiliza espacio de nombres, puede usarse noNamespaceSchemaLocation

<alumnos xmlns="http://www.uniovi.es/alumnos”xsi:SchemaLocation=“http://www.uniovi.es/alumnos

alumnos.xsd”xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance">

. . . </alumnos>

alumnos.xml

Curso sobre Tecnología Web Versión 2009

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"targetNamespace="http://www.uniovi.es/alumnos"xmlns="http://www.uniovi.es/alumnos">

<xs:element name="alumnos"><xs:complexType><xs:sequence><xs:element name="alumno" minOccurs="1" maxOccurs="200"

type="TipoAlumno"/></xs:sequence>

</xs:complexType></xs:element><xs:complexType name="TipoAlumno">

<xs:sequence><xs:element name="nombre" type="xs:string"/><xs:element name="apellidos" type="xs:string"/><xs:element name="nacim" type="xs:gYear"/>

</xs:sequence><xs:attribute name="dni" type="xs:integer"/>

</xs:complexType></xs:schema>

Validación: esquemas e instancias

<alumnos xmlns="http://www.uniovi.es/alumnos”xsi:schemaLocation=“http://www.uniovi.es/alumnos

alumnos.xsd”xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance">

. . . </alumnos>

alumnos.xml

alumnos.xsd

Los espacios de nombresdeben coincidir.También puede usarse:xsi:noNameSpaceLocation

Page 37: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

37

Curso sobre Tecnología Web Versión 2009

Tipos Anónimos vs. con nombre

<xs:element name="alumno"> <xs:sequence>

<xs:element name="nombre" type="xs:string"/><xs:element name="apellidos" type="xs:string"/>

</xs:sequence></xs:element>

…<xs:element name="alumno" type="TipoPersona"/>…<xs:ComplexType name="TipoPersona"> <xs:sequence>

<xs:element name="nombre" type="xs:string"/><xs:element name="apellidos" type="xs:string"/>

</xs:sequence></xs:ComplexType>

+ legible

+ Reutilizable

Curso sobre Tecnología Web Versión 2009

Referencias<xs:element name="alumno"> <xs:sequence>

<xs:element name="nombre" type="xs:string"/><xs:element name="apellidos" type="xs:string"/>

</xs:sequence></xs:element>

<xs:element name="alumnos"><xs:sequence>

<xs:element ref="alumno" /></xs:sequence></xs:element>

Page 38: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

38

Curso sobre Tecnología Web Versión 2009

Tipos complejos a partir de tipos simples

<xs:element name="precio"><xs:complexType><xs:simpleContent><xs:extension base="xs:decimal"><xs:attribute name="moneda" type="xs:string" />

</xs:extension></xs:simpleContent>

</xs:complexType></xs:element>

<precio moneda=“euros">23.45</precio>

Curso sobre Tecnología Web Versión 2009

Tipos Complejos: Secuencia

Construcción básica mediante secuencia de elementos<xs:element name=“alumno”>

<xs:complexType><xs:sequence>

<xs:element name="nombre" type="xs:string"/><xs:element name="apellidos" type="xs:string"/><xs:element name="nacim" type="xs:gYear"

minOccurs="0" maxOccurs="1"/></xs:sequence><xs:attribute name="dni" type="xs:integer"/>

</xs:complexType></xs:element>

<alumno dni="9399390"><nombre>Juan</nombre><apellidos>García García</apellidos><nacim>1985</nacim>

</alumno>

Page 39: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

39

Curso sobre Tecnología Web Versión 2009

Tipos Complejos:Alternativa

<xs:complexType name="Transporte"><xs:choice><xs:element name="coche" type="xs:string"/><xs:element name="tren" type="xs:string"/><xs:element name="avión" type="xs:string"/>

</xs:choice></xs:complexType>

<transporte><coche>Renault R23</coche></transporte>

choice: Representa alternativas OJO: Es una o-exclusiva

Curso sobre Tecnología Web Versión 2009

Tipos Complejos: Contenido Mixto

El contenido Mixto permite mezclar texto con elementos<xs:complexType name="TCom" mixed="true"><xs:choice minOccurs="0" maxOccurs="unbounded">

<xs:element name="emph" type="xs:string"/></xs:choice>

</xs:complexType>

<xs:element name="comentarios" type="TCom" />

<comentarios>Es un poco <emph>listillo</emph>

</comentarios>

Page 40: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

40

Curso sobre Tecnología Web Versión 2009

Secuencias no ordenadas

all = Todos los elementos en cualquier ordenEn DTDs requería enumerar las combinaciones:

(A,B,C)|(A,C,B)|...|(C,B,A)

<xs:complexType name="TipoLibro"><xs:all>

<xs:element name="autor" type="xs:string"/><xs:element name="título" type="xs:string"/>

</xs:all></xs:complexType><xs:element name="libro" type="TipoLibro" />

<libro><autor>Juanita la Loca</autor><título>No estoy loca</título>

</libro>

<libro><título>El kigote</título><autor>Cerbantes</autor>

</libro>

Curso sobre Tecnología Web Versión 2009

Agrupaciones

Es posible nombrar agrupaciones de elementos y de atributos parahacer referencias a ellas

<xs:group name="nombApell"> <xs:sequence>

<xs:element name="nombre" type="xs:string"/><xs:element name="apellidos" type="xs:string"/>

</xs:sequence></xs:group>

<xs:complexType name="TipoAlumno"> <xs:group ref="nombApell" /><xs:element name="carrera" type="xs:string"/>

</xs:complexType>

Page 41: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

41

Curso sobre Tecnología Web Versión 2009

Tipos Simples

Los tipos simples son lo que no pueden contener elementos o atributos

Son los valores de atributos o el contenido de elementos básicosPueden ser:

Predefinidos o built-in (Definidos en la especificación) Primitivos Derivados

Definidos por el usuario (a partir de tipos predefinidos)

Curso sobre Tecnología Web Versión 2009

Tipos Primitivos

stringbooleannumber, float, doubleduration, dateTime, time, date, gYearMonth, gYear, gMonthDay,

gDay, gMonthhexBinary, base64BinaryanyURIQName = Nombre cualificado con espacio de nombresNOTATION = Notación binaria (similar a DTD)

Page 42: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

42

Curso sobre Tecnología Web Versión 2009

Jerarquía de tipos

Curso sobre Tecnología Web Versión 2009

Facetas de TiposLos nuevos tipos se construyen restringiendo las facetas

length, minlength, maxlength: Longitud del tipo de datospattern: Restricciones sobre valores mediante expresiones regularesenumeration: Restringe a una determinada enumeración de valoreswhitespace: Define política de tratamiento de espacios

(preserve/replace, collapse)(max/min)(in/ex)clusive: Límites superiores/inferiores del tipo de datostotaldigits, fractionDigits: número de dígitos totales y decimales

Page 43: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

43

Curso sobre Tecnología Web Versión 2009

Enumeraciones y Restricciones

Enumeración<xs:simpleType name="TipoCarrera"><xs:restriction base="xs:token"><xs:enumeration value="Gestión"/><xs:enumeration value="Sistemas"/>

</xs:restriction></xs:simpleType>

<xs:simpleType name="mes"><xs:restriction base=“xs:integer"><xs:minInclusive value="1" /><xs:maxInclusive value="31" />

</xs:restriction></xs:simpleType>

Restricciones sobre valores

Curso sobre Tecnología Web Versión 2009

Listas<xs:simpleType name=“ListaRGB"><xs:list itemType=“ValorRGB"/></xs:simpleType>

<xs:simpleType name=“ValorRGB"> <xs:restriction base="xs:nonNegativeInteger">

<xs:maxInclusive value="255" /></xs:restriction></xs:simpleType>

<xs:simpleType name="Color"><xs:restriction base=“ListaRGB"><xs:length value="3" />

</xs:restriction></xs:simpleType>

Se pueden aplicar las facetas: length, maxLength, minLength, enumeration

<color>255 255 0</color>

Page 44: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

44

Curso sobre Tecnología Web Versión 2009

Uniones<xs:simpleType name="TipoNota"><xs:union>

<xs:simpleType><xs:restriction base="xs:float"><xs:maxInclusive value="10" /><xs:minInclusive value="0" />

</xs:restriction></xs:simpleType><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="No presentado" />

</xs:restriction></xs:simpleType>

</xs:union></xs:simpleType>

<xs:element name="nota" type="TipoNota" />

<nota> 5.75 </nota>

<nota> No presentado </nota>

Curso sobre Tecnología Web Versión 2009

Expresiones regulares

<xs:simpleType name="NIF"><xs:restriction base="xs:token"><xs:pattern value="\d{7,8}[A-Z]" />

</xs:restriction></xs:simpleType>

<xs:element name="nif" type="NIF" />

<nif>9394173J</nif>

<nif>11079845M</nif>

Expresión Posibles valores

Ejemplos de expresiones regulares

Elemento 2b, ab, aab, aaab, …xb, yb, zbb, abab, aab, aaab, …ax, bx, cx

Elemento \da*b[xyz]ba?ba+b[a-c]x

Page 45: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

45

Curso sobre Tecnología Web Versión 2009

Expresiones Regulares

[a-c]x[^0-9]x\Dx(pa){2}rucha.abc(a|b)+xa{1,3}x\n\p{Lu}\p{Sc}

ax, bx, cxCarácter ≠ dígito seguido de xCarácter ≠ dígito seguido de xpaparuchaCualquier carácter (1) seguido de abcax, bx, aax, bbx, abx, bax,...ax, aax, aaaxSalto de líneaLetra mayúscula

Símbolo de moneda

Curso sobre Tecnología Web Versión 2009

Tipos Derivados por Extensión

Similar a las subclases de POO: Añadir elementos a un tipo base<xs:complexType name="Figura" >

<xs:attribute name="color" type="Color"/></xs:complexType>

<xs:complexType name="Rectángulo"><xs:complexContent><xs:extension base="Figura"><xs:attribute name="base" type="xs:float" /><xs:attribute name="altura" type="xs:float" /></xs:extension></xs:complexContent></xs:complexType>

<xs:complexType name="Círculo">...similar pero incluyendo el radio</xs:complexType>

Page 46: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

46

Curso sobre Tecnología Web Versión 2009

Tipos Derivados por Extensión

Los tipos derivados pueden utilizarse en los mismos sitios que la clase base<xs:element name="figuras">

<xs:complexType><xs:sequence><xs:element name="figura" type="Figura"

maxOccurs="unbounded" /></xs:sequence>

</xs:complexType></xs:element>

<figuras><figura base="23" altura="3" xsi:type="Rectángulo" /><figura radio="3" xsi:type="Círculo" /></figuras>

Es necesario especificar el tipo mediante xsi:type

Curso sobre Tecnología Web Versión 2009

Tipos Abstractos

Mediante abstract="true" se declara un tipo como abstracto. Ese tipo no puede usarse directamente

<xs:complexType name="Figura" abstract="true"><xs:attribute name="color" type="Color"/></xs:complexType>

También es posible limitar la derivación de tiposfinal="restriction"

Page 47: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

47

Curso sobre Tecnología Web Versión 2009

Declaración de Atributos

<xs:complexType name="Círculo"><xs:attribute name="radio"

type="xs:float" use="required" />

<xs:attribute name="color" type="Color" default="255 0 0"/>

<xs:attribute name="tipo" type="xs:string" fixed="jpeg" />

</xs:complexType>

Por defecto los atributos son opcionales. Indicar que son obligatorios: use="required"

Valor por defecto de un atributo. Podría definirse otro valor.

Valor fijo de un atributo. Si no se define, se utiliza ése. Si se define, debe coincidir.

Curso sobre Tecnología Web Versión 2009

Inclusión de Esquemas

include permite incluir elementos de otros esquemasLos elementos deben estar en el mismo espacio de nombresEs como si se hubiesen tecleado todos en un mismo fichero

Alumnos.xsd Profesores.xsd

<xsd:schema …><xsd:include schemaLocation="Alumnos.xsd"/><xsd:include schemaLocation="Profesores.xsd"/>…

</xsd:schema>

Universidad.xsd

Page 48: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

48

Curso sobre Tecnología Web Versión 2009

Importación de Esquemas

import permite incluir elementos de otros esquemas con distintosespacios de nombres

Espacio de nombres A

Alumnos.xsd

Espacio denombres P

Profes.xsd

<xsd:schema …><xsd:import namespace="A" schemaLocation="Alumnos.xsd"/><xsd:import namespace="P" schemaLocation="Profes.xsd"/>…

</xsd:schema>

Universidad.xsd

Curso sobre Tecnología Web Versión 2009

Redefinición de Esquemas

redefine es similar a include pero permite modificar los elementos incluidos.

Alumnos.xsd

<xs:redefine schemaLocation="Alumnos.xsd"><xs:complexType name="TipoAlumno">

<xs:complexContent><xs:extension base="TipoAlumno">

<xs:sequence><xs:element name="nota" type="Nota" />

</xs:sequence></xs:extension>

</xs:complexContent></xs:complexType>

</xs:redefine>

AlumnosConNotas.xsd

Añade el elemento nota

Page 49: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

49

Curso sobre Tecnología Web Versión 2009

Claves y Unicidad

Los DTDs proporcionaban el atributo ID para marcar la unicidad (un valor ID era único en todo el documento)

XML Schema tiene más posibilidades:Indicar que un elemento es único (unique) Definir atributos únicosDefinir combinaciones de elementos y atributos como únicosDistinción entre unicidad y claves (key)

Clave = además de ser único, debe existir y no puede ser nulo. Declarar el rango de un documento en el que algo es único

Curso sobre Tecnología Web Versión 2009

Claves y Unicidad

<xs:complexType name="Alumnos"><xs:sequence><xs:element name="Alumno" type="TipoAlumno"/></xs:sequence><xs:key name="DNI"><xs:selector xpath="a:alumno"/><xs:field xpath="a:dni"/>

</xs:key></xs:complexType>

Es necesario incluir el espaciode nombres (XPath)

La clave puede formarse paraatributos y elementos

<xs:key name="DNI"><xs:selector xpath="a:alumno"/><xs:field xpath="a:nombre"/><xs:field xpath="a:nombre"/>

</xs:key>

Una clave puede estar formadapor varios elementos

Page 50: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

50

Curso sobre Tecnología Web Versión 2009

Claves y Unicidad

<xs:complexType name="Alumnos"><xs:sequence><xs:element name="Alumno" type="TipoAlumno"/></xs:sequence><xs:unique name="DNI"><xs:selector xpath="a:alumno"/><xs:field xpath="a:dni"/>

</xs:unique></xs:complexType>

Unique especifica que debeser único, pero podría no existir

Curso sobre Tecnología Web Versión 2009

Referencias a Claves

<xs:element name="clase"><xs:sequence><xs:element name="alumnos" ...<xs:element name="delegado" ...</xs:sequence>

<xs:key name="DNI"><xs:selector xpath="a:alumnos/a:alumno"/><xs:field xpath="a:dni"/></xs:key>

<xs:keyref name="Delegado" refer="DNI"><xs:selector xpath="a:delegado"/><xs:field xpath="a:dni"/>

</xs:keyref>

keyref especifica que debe hacer referencia a una clave (Claves Externas)

Page 51: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

51

Curso sobre Tecnología Web Versión 2009

Valores Nulos

Indicar que un elemento puede ser nulo sin estar vacío.Vacío (Empty): Un elemento sin contenidoNulo (Nil): Un elemento que indica que no hay valor

<xsd:element name="Persona"><xsd:complexType><xsd:element name="nombre" type="xsd:NMTOKEN"/><xsd:element name="primerApell" type="xsd:NMTOKEN"/><xsd:element name="segundoApell" type="xsd:NMTOKEN"

nillable="true"/></xsd:complexType></xsd:element>

<persona><nombre>John</nombre><primerApell>Smith</primerApell> <segundoApell xsi:nil="true"/>

</persona>

El segundo apellido puedeser un NMTOKEN o estarindefinido

Curso sobre Tecnología Web Versión 2009

Incluir cualquier contenido...

any indica cualquier contenido de un determinado espacio de nombresanyAttribute cualquier atributo de un espacio de nombres

<xs:complexType name="Comentario"><xs:sequence><xs:any namespace="http://www.w3.org/1999/xhtml"

minOccurs="1"processContents="skip" />

</xs:sequence><xs:anyAttribute

namespace="http://www.w3.org/1999/xhtml"/></xs:complexType>

<comentarios><html:p>Es un

<html:emph>Listillo</html:emph></html:p>

</comentarios>

También puede declararse##any, ##local, ##other

Otros valoresstrict = obliga a validarlax = valida si es posible

Page 52: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

52

Curso sobre Tecnología Web Versión 2009

XML SchemaLimitaciones

No soporta entidades. Mecanismo para crear macros<!ENTITY &texto; "Esto texto se repite muchas veces" >

Es necesario seguir usando los DTDsLenguaje de Restricciones limitado

Ejemplo: ¿Verificar valor total = suma de valores parciales?Sensibilidad al contexto limitada

Por ejemplo: Especificar que el contenido depende del valor de un atributo

<transporte tipo="coche"> ...</transporte><transporte tipo="avión"> ...</transporte>

Tamaño de archivos XML Schema puede ser excesivoLegibilidad de las especificaciones...XML no siempre es legibleComplejidad de la especificación:

Muchas situaciones/combinaciones excepcionales

Curso sobre Tecnología Web Versión 2009

Otras Técnicas

Relax NGSchematron

Page 53: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

53

Curso sobre Tecnología Web Versión 2009

Otras técnicasRelax NG

Relax NG. Desarrollado por OASIS a partir de TREX y RELAXEstandarizado por ISO como parte 2 del DSDL (Document Schema

Definition Languages)Soporta mayor número de restricciones y gramáticas ambigüasIncluye una sintaxis abreviada (no XML)

Curso sobre Tecnología Web Versión 2009

Otras TécnicasRelax NG

<element name="a:alumnos"xmlns="http://relaxng.org/ns/structure/1.0"xmlns:a="http://www.uniovi.es/alumnos"datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">

<zeroOrMore><element name="a:alumno"><attribute name="dni">

<data type="nonNegativeInteger" /></attribute><element name="a:nombre"><text/></element><element name="a:apellidos"><text/></element><element name="a:nota"><data type="double" /></element><element name="a:email"><text/></element>

</element></zeroOrMore>

</element>

Page 54: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

54

Curso sobre Tecnología Web Versión 2009

Otras TécnicasRelax NG

Relax NG permite mayor expresividad

Ejemplo:Un alumno debe tener un atributo DNI o un elemento DNI, pero no

ambos

Curso sobre Tecnología Web Versión 2009

Otras TécnicasRelax NG

<element name="a:alumnos"xmlns="http://relaxng.org/ns/structure/1.0"xmlns:a="http://www.uniovi.es/alumnos"datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">

<zeroOrMore><element name="a:alumno">

<choice><attribute name="dni"><data type="nonNegativeInteger" /></attribute><element name="a:dni"><data type="nonNegativeInteger" /></element>

</choice><element name="a:nombre"><text/></element><element name="a:apellidos"><text/></element><element name="a:nota"><data type="double" /></element><element name="a:email"><text/></element>

</element></zeroOrMore>

</element>

Page 55: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

55

Curso sobre Tecnología Web Versión 2009

Otras TécnicasRelax NG

Otro ejemplo:Los alumnos de tipo=“delegado” solamente tienen nombre y apellidos.

Curso sobre Tecnología Web Versión 2009

Otras TécnicasRelax NG

<element name="a:alumnos"xmlns="http://relaxng.org/ns/structure/1.0"xmlns:a="http://www.uniovi.es/alumnos"datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">

<zeroOrMore><choice>

<element name="a:alumno"><attribute name="tipo"><value>delegado</value></attribute><element name="a:nombre"><text/></element>

<element name="a:apellidos"><text/></element></element>

<element name="a:alumno"><element name="a:nombre"><text/></element><element name="a:apellidos"><text/></element><element name="a:nota"><data type="double" /></element>

</element></choice></zeroOrMore>

</element>

Page 56: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

56

Curso sobre Tecnología Web Versión 2009

Otras TécnicasSchematron

Schematron fue desarrollado por Rick JelliffeEstandarizado por ISO como parte 3 del DSDL (Document Schema Definition

Languages)Utiliza un modelo basado en reglas (en vez de gramáticas)Asocia reglas de validación a expresiones XPathPuede expresar restricciones arbitrarias

Curso sobre Tecnología Web Versión 2009

Otras Técnicas Schematron

<?xml version="1.0" encoding="UTF-8"?><sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron">

<sch:pattern name="Chequear DNIs"><sch:rule context="alumno">

<sch:assert test="@dni &gt; 10000000 and @dni &lt; 99999999">El dni debe estar entre 10000000 y 99999999</sch:assert>

</sch:rule></sch:pattern><sch:pattern name="Chequear nota">

<sch:rule context="media"><sch:assert test="sum(//alumno/nota) div count(//alumno/nota) = .">

No encaja la media</sch:assert>

</sch:rule></sch:pattern>

</sch:schema>

Page 57: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

57

Curso sobre Tecnología Web Versión 2009

Otras TécnicasFundamentos teóricos

Taxonomy of XML Schema languages using Formal Language Theory, M. Murata, D. Lee, M. Mani, K. Kawaguchi, ACM Transactions on Internet Technology, 2005

Relax NG ≈ Regular tree grammarsXML Schema ≈ Simple type tree grammarsDTDs ≈ local tree grammars

Curso sobre Tecnología Web Versión 2009

Diseño Vocabularios XML

Page 58: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

58

Curso sobre Tecnología Web Versión 2009

Diseño Vocabularios XML

Separación tradicional de dos mundosSistemas orientados a Datos

Información uniforme y fuertemente estructurada (ej. Tablas)Mucha cantidad de información repetidaObjetivo: Procesamiento eficiente (Almacenes de datos)

Sistemas orientados a DocumentaciónInformación poco uniforme y entrelazada (ej. Libros)No existe un patrón uniformeObjetivo: Comunicación, Presentación (Mensajes)

Se podría añadir un tercer mundo: Programación Orientada a ObjetosPropuestas para añadir capacidad de programación a documentos

XML: Información semi-estructurada (Lugar intermedio)Estructuras jerárquicas entrelazadas

Curso sobre Tecnología Web Versión 2009

Diseño Vocabularios XML

Características a tener en cuentaTamaño de documentosFacilidad de escrituraFacilidad de procesamientoFlexibilidad (ej. HTML es muy flexible, Bases de Datos = menos)Consistencia: Evitar características incoherentesNivel de abstracción: Buscar término medio en nivel de detalle

<fecha>10 Marzo 2003</fecha><fecha><día>10</dia><mes>Marzo</mes><año>2003</año></fecha>

Patrones de diseño:www.xmlpatterns.com

Page 59: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

59

Curso sobre Tecnología Web Versión 2009

Ejemplo de Discusión

¿Atributos o Elementos?

<pizza nombre="Margarita" precio=“6” />

<pizza> <nombre>Margarita </nombre><precio>6</precio>

</pizza>

Representación de propiedades

Razones filosóficas:Atributos: valores asociados con objetos sin identidad propia (edad)Subelementos: valores con identidad propia (fecha-nacimiento)

Orígenes (SGML):Atributos: meta-información (información sobre el contenido)Subelementos: Contenido

Curso sobre Tecnología Web Versión 2009

Ejemplo de Discusión

¿Atributos o Elementos?

<pizza nombre="Margarita" precio=“6” />

<pizza> <nombre>Margarita </nombre><precio>6</precio>

</pizza>

Representación de propiedades

En los DTDsPueden incluirse restricciones sobre su valor

Ej. valor “si” o “no”Pueden definirse valores por defectoPueden validarse los valores ID e IDREFPueden definirse restricciones sobre espacios en blanco (NMTOKENS)

Ocupan menos espacioMás fáciles de procesar (SAX y DOM)Acceso a entidades externas (datos binarios)

Soportan valores arbitrariamente complejos y repetidosEstablecen un ordenSoportan atributos de atributosMayor flexibilidad ante modificaciones

Page 60: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

60

Curso sobre Tecnología Web Versión 2009

Diseño Vocabularios En resumen...

Algunos Consejos:Estudiar dominio de la Aplicación (ver estándares ya definidos!!!)Considerar futuras ampliaciones (extensibilidad)Validar antes de que sea tardeUsar espacios de nombres etc. etc.

...Aparición de una nueva torre de Babel...

Curso sobre Tecnología Web Versión 2009

Acceso a documentos XMLXPath

Page 61: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

61

Curso sobre Tecnología Web Versión 2009

Introducción a XPath

XPath define acceder a partes de un documento XMLSurgió dentro de XSL pero se generalizó su uso en otros contextos,

por ejemplo: XQuerySe basa en relaciones de “parentesco” entre nodosSu estilo de notación es similar a las rutas de los ficheros, pero se

refiere a nodos en un documento XMLEjemplo: /alumno/nombre

Curso sobre Tecnología Web Versión 2009

XPath:Términos básicos

Nodo actual (current node)Es un nodo que está seleccionado cuando se va a evaluar una expresión

XPath Constituye el punto de partida al evaluar la expresión

Nodo contexto (context node)Para evaluar una expresión, se van evaluando subexpresiones parcialesCada vez que se evalúa una subexpresión se obtiene un nuevo conjunto

de nodos (node-set) que es el nuevo contexto para evaluar la siguiente subexpresión

Tamaño del contexto (context size)El número de nodos que se están evaluando en un momento dado en la

expresión XPath

Page 62: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

62

Curso sobre Tecnología Web Versión 2009

Expresiones XPath

Una expresión XPath arroja (tras ser evaluada) una expresión de 4 tipos posibles: conjunto de nodos (node-set), booleano, número,cadena

Hay que considerar una expresión XPath como un “predicado”, que devuelve todo lo que encaja con dicho predicado

<alumno dni="9399390"><nombre>Juan</nombre><apellidos>García García</apellidos><nacim>1985</nacim>

</alumno>

/alumno/nombre

Juan

Curso sobre Tecnología Web Versión 2009

Expresiones XPath

Tokens válidos en una expresión XPathParéntesis y similares: ( ) { } [ ]Elemento actual (.) elemento padre (..)Atributo @, elemento *, separador ::, coma (,)El nombre de un elementoTipo de nodo (comment, text, processing instruction, node)Operadores: and, or, mod, div, *, /, //, |, +, -, =, !=, <, <=, >, >=Nombres de funciónNombre de eje (axis): ancestor, ancestor-or-self, attribute, child,

descendant, descendant-or-self, following, following-sibling, namespace, parent, preceding, preceding-sibling, self

Literales, entre comillas dobles o simples (se pueden anidar alternadas)NúmerosReferencias a variables ($nombreVariable)

Page 63: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

63

Curso sobre Tecnología Web Versión 2009

Conjunto de nodosEl resultado de evaluar una expresión XPathLos nodos pueden ser de 7 tipos

ElementoAtributoTextoEspacio de nombresInstrucción de procesamientoComentarioRaíz

Los elementos de un conjunto de nodos son siempre hermanos Sus hijos originales no están incluidos, pero se puede acceder a ellos

Conjunto de nodos

Curso sobre Tecnología Web Versión 2009

Location pathSe corresponde con la idea intuitiva de “ruta de directorio”Un location path siempre devuelve un node-setTipos de rutas de localización

Patrones (patterns): sólo permiten el uso de los ejes child y attribute (se verádespués)

Absolutas: parten de la raízRelativas: no parten de la raíz (depende del nodo de contexto, context node).

Este cambia con cada /, que actúa como separador de los pasos de localización. En cada paso se selecciona un nuevo node-set que pasa a ser el nodo de contexto

Page 64: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

64

Curso sobre Tecnología Web Versión 2009

Pasos de localizaciónPaso de localización: cada paso de una ruta de localización

(separados por /)Un paso de localización consta de:

Eje (axis). Es la relación entre el nodo de contexto y el pasoPrueba de nodo (node test). Es el “nombre de directorio”Predicado (predicate). Expresión XPath entre corchetes.

El eje a veces está implícito (no se pone). El predicado es opcional

eje::pruebanodo[predicado]/ alumno / nombre / Juan

Curso sobre Tecnología Web Versión 2009

Prueba de nodoLa forma más simple es el nombre del nodo (su etiqueta)También se puede utilizar * que simboliza cualquier nombreEjemplos:

/universidad/euitio/alumnos/alumnoCualquier nodo “alumno” que sea hijo de un nodo “alumnos” que sea hijo de un nodo “euitio” que sea hijo del nodo “universidad” que será el nodo raíz

/universidad/*Encaja con cualquier nodo que sea hijo del nodo “universidad” que será el nodo raíz

universidad/*Encaja con cualquier nodo que sea hijo de un nodo “universidad”que sea hijo del nodo de contexto

IMPORTANTE: // indica “que sea hijo de cualquiera” desde el raíz

Page 65: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

65

Curso sobre Tecnología Web Versión 2009

Ejes (axis)Denota la relación entre paso de localización y nodo de contextoPosibilidades: ancestor, ancestor-or-self, attribute, child,

descendant, descendant-or-self, following, following-sibling, namespace, parent, preceding, preceding-sibling, self

El eje y la prueba de nodo se separan mediante ::child está implícito y casi nunca se pone. Ejemplos:

/universidad/euitioEquivale de manera implícita a /child::universidad/child::euitio

/universidad/uniovi/following-sibling::*Todos los nodos que son “hermanos después de” uniovi (en el orden del documento) que es hijo de universidad

Curso sobre Tecnología Web Versión 2009

Predicado

Añade un nivel de verificación al paso de localizaciónExpresión booleanaEjemplos:

/verso[position()=2]/verso[contains(., ‘de’)]

En el predicado pueden intervenir funciones XPath

Page 66: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

66

Curso sobre Tecnología Web Versión 2009

Funciones XPath

Gran variedad de funcionesboolean(): convierte a booleano. Aplicada a un conjunto de nodos,

devuelve true si no es vacío. not(), true()count(): Devuelve el número de nodos en un conjunto de nodosname(): Devuelve el nombre de un nodo (su etiqueta). local-name(),

namespace-uri()position(): Devuelve la posición de un nodo en su contexto (empieza en 1)

last()Biblioteca de strings. normalize-space(), string(), concat(), string-length()sum()

Curso sobre Tecnología Web Versión 2009

Acceso a atributos

Se puede acceder a un elemento atributo gracias al eje attribute::Contiene todos los nodos atributo del nodo contextoUna abreviatura de esto es la arroba @Ejemplo:

alumno/@dni

Page 67: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

67

Curso sobre Tecnología Web Versión 2009

Transformación de XMLXSLT y XSL-FO

Curso sobre Tecnología Web Versión 2009

Hojas de estilos para XML

SGML tenía DSSSL (Document Style Semantics and SpecificationLanguage)

Para XML se optó por crear XSL (XML Stylesheet Language)Posteriormente se dividió en 3 partes:XSLT: Transformación de documentos XMLXPath: Especificar caminos y expresiones XMLXSL-FO: Objetos de formateo

Además, CSS también puede usarse con XML

Page 68: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

68

Curso sobre Tecnología Web Versión 2009

Hojas de estilos para XMLPosibilidades

DocumentoXML

CSS

PresentaciónXSLT XSL-FO

XHTML

XSLT CSS

Curso sobre Tecnología Web Versión 2009

Hojas de estilo para XMLCSS con XML

<?xml version="1.0" encoding="iso-8859-1" ?><?xml-stylesheet type="text/css"

href="mensaje.css" ?><mensaje><destino>Juanito el Loco</destino><remitente>María la Impaciente</remitente><texto>Recuerda que nos tenemos que ver en la alacena...</texto></mensaje>

mensaje.xml

Posibilidades limitadas☺ Facilidad

de uso

mensaje { border: 5px solid; ...}destino { color: blue; ... }remitente { color: red; ... }texto { margin: 5em; ... }

mensaje.css

DocumentoXML CSS Presentación

Page 69: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

69

Curso sobre Tecnología Web Versión 2009

Hojas de estilo para XMLConvirtiendo a HTML

Es la técnica más popularPermite añadir características de hipertexto e interactivasMenor calidad para medios impresos

DocumentoXML PresentaciónXHTMLXSLT CSS

Curso sobre Tecnología Web Versión 2009

Hojas de estilo para XMLXSL

Originalmente, XSL = XSLT + XPath + XSL-FOPosteriormente, XPath y XSLT toman identidad propiaXSL-FO = Objetos de formateo con propiedades Muchas propiedades, son comunes con CSS(2001) XSL-1.0 (Incluía XPath y XSLT)

Incluye modelos de páginas, soporte para internacionalización e hiper-enlaces.

(2003) XSL-1.1 Mayor soporte para marcadores, índices y múltiples flujos

(2006) XPath 2.0: Soporte para tipos de datos y Schemas(2006) XSLT 2.0: Tipos de datos de XPath 2.0

Page 70: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

70

Curso sobre Tecnología Web Versión 2009

Transformación de XMLXSLT

XSLT es un lenguaje declarativo (transforma un árbol en otro árbol)El programador incluye una serie de reglas de transformaciónEl procesador es el que se encarga de obtener el árbol y de escribir

el resultadoLas reglas se basan en la definición de plantillas (templates)

Las plantillas utilizan sintaxis de XPath

<xsl:template match=“valor a encajar”>código de salida

</xsl:template>

Curso sobre Tecnología Web Versión 2009

Transformación de XMLXSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html" />

<xsl:template match="/"> <html><body><h1>Pizzas del Restaurante Al Capone</h1><xsl:apply-templates />

</body></html></xsl:template>

<xsl:template match="pizzas"><table><caption>Tipos de Pizzas</caption><tr><xsl:apply-templates /></table></xsl:template>

<xsl:template match="pizza"><tr><td><xsl:value-of select="@nombre"/></td><td><xsl:apply-templates /></td><td><xsl:value-of select="@precio" /></td></tr></xsl:template>

<xsl:template match="ingrediente"><xsl:value-of select="@nombre" /></xsl:template></xsl:stylesheet>

Referencia a valor de atributo

Valores que se incluyen en resultado

Patrón de encaje

Page 71: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

71

Curso sobre Tecnología Web Versión 2009

XSLTLenguaje de programación

<ns><num>5</num><num>6</num><num>7</num><num>8</num><num>9</num><num>10</num><num>11</num><num>12</num><num>100</num></ns>

<xsl:template match="num"><li><xsl:value-of select="."/>! = <xsl:call-template name="fact"><xsl:with-param name="x"><xsl:value-of select="." /></xsl:with-param>

</xsl:call-template></li>

</xsl:template>

<xsl:template name="fact"><xsl:param name="x" /><xsl:choose> <xsl:when test="$x = 0">1</xsl:when><xsl:otherwise><xsl:variable name="llamada"><xsl:call-template name="fact"><xsl:with-param name="x"><xsl:value-of select="$x - 1" /></xsl:with-param>

</xsl:call-template></xsl:variable><xsl:value-of select="$llamada * $x"/>

</xsl:otherwise></xsl:choose>

</xsl:template>

fact x = if x = 0 then 1else x * fact (x – 1)

Curso sobre Tecnología Web Versión 2009

Hojas de estilo para XMLXSL-FO

XSL-Formatting ObjectsDescribe documento en un formato "imprimible" (presentación)

Fichero XML

Hoja XSLT

Procesador XSLT

Fichero XSL-FO

Procesador XSL-FO

...o un visualizador.

Page 72: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

72

Curso sobre Tecnología Web Versión 2009

XSL-FOCaracterísticas

Sintaxis XMLMuchas propiedades compatibles con CSSOtras posibilidades no contempladas en CSS

Texto de derecha a izquierda o de arriba a abajoNotas al pieNotas al margenNúmeros de página y referencias cruzadas...

Curso sobre Tecnología Web Versión 2009

XSL-FOEjemplo

<?xml version="1.0" encoding="iso-8859-1"?><fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"><fo:layout-master-set><fo:simple-page-master master-name="PáginaEjemplo"><fo:region-body margin="2cm"/>

</fo:simple-page-master></fo:layout-master-set>

<fo:page-sequencemaster-reference="PáginaEjemplo">

<fo:flow flow-name="xsl-region-body"><fo:block>Hola en FO</fo:block>

</fo:flow></fo:page-sequence>

</fo:root>

Page 73: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

73

Curso sobre Tecnología Web Versión 2009

XSL-FOEstructura de documento

Espacio de nombres: http://www.w3.org/1999/XSL/FormatElemento raíz: fo:rootOrganización visual del documento:

Uso de modelos de página: "páginas maestras"Los modelos se definen dentro de fo:layout-master-setSólo un tipo de página maestra, fo:simple-page-master, que es una

página rectangularLas páginas del documento harán referencia a las páginas maestras

que se hayan definido, y heredarán sus propiedades

Curso sobre Tecnología Web Versión 2009

XSL-FOfo:simple-page-master

body

margin-top

mar

gin-

left

margin-right

margin-bottom

before

after

start end

Atributos:master-namepage-heightpage-widthmargin-left, margin-top, margin-

right, margin-bottomEjemplo:

<fo:layout-master-set><fo:simple-page-master

master-name="pagina-normal"page-height="29.7cm"page-width="21cm"margin-left="3cm"margin-right="3cm" margin-top="2cm"margin-bottom="2cm">

</fo:simple-page-master></fo:layout-master-set>

Page 74: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

74

Curso sobre Tecnología Web Versión 2009

XSL-FOfo:page-sequence (I)

Crear una secuencia de páginasReferencia a la página modelo

Atributo master-referenceDebe haberse definido en fo:layout-master-set

Elementos que incluye como hijos:fo:title (opcional): Contiene el texto del "título" de la página (puede ser

usado por navegadores de Internet como <TITLE>)fo:static-content: Puede haber muchos o ninguno. Contienen texto que

se repite en todas las páginas. También puede contener elementos que se repiten aunque se calculen en cada una (como el número de página)

fo:flow: Un elemento que contiene los contenidos de las páginas, que se irán incluyendo en secuencia

Curso sobre Tecnología Web Versión 2009

XSL-FOfo:page-sequence (II)

Tiene 8 atributos opcionales para indicar cómo se pagina la secuencia:initial-page-number force-page-count format letter-value country language grouping-separator grouping-size

Page 75: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

75

Curso sobre Tecnología Web Versión 2009

XSL-FORegiones (I)

Regiones de la página: hijas de fo:simple-page-masterDescribir tamaños de las regionesPueden incluir márgenes

fo:region-beforefo:region-after

Atributo extentfo:region-body

No tiene atributo extentEs todo entre los márgenes de páginaSu contenido "pisa" al de las regiones before,after, start y endPero puede incluir márgenes

Curso sobre Tecnología Web Versión 2009

XSL-FORegiones (II)

<fo:layout-master-set><fo:simple-page-master

master-name="pagina-normal"page-height="29.7cm"page-width="21cm"margin-left="3cm"margin-right="3cm" margin-top="2cm"margin-bottom="2cm">

<fo:region-before extent="1cm"/><fo:region-body margin-top="1cm"

margin-bottom="1cm"/><fo:region-after extent="1cm"/>

</fo:simple-page-master></fo:layout-master-set>

body

margin-top

mar

gin-

left

margin-right

margin-bottom

before

after

1 cm

Page 76: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

76

Curso sobre Tecnología Web Versión 2009

XSL-FOModelo de formateo

Cajas rectangulares, llamadas áreas, que pueden contener:TextoEspacio vacíoImágenesOtros objetos de formateo

Las cajas tienen bordes y márgenesAlgunos objetos de formateo generan más de un área (ej.: en

rupturas de páginas o similares)Elementos a manejar:

Objetos de formateo: Orden y posición del contenidoPropiedades de formateo: atributos de los objetos (tipo de letra,

tamaño, color, etc.). Se especifican de manera similar a como se hace en CSS.

Curso sobre Tecnología Web Versión 2009

Región

Bloque

XSL-FOEstructura de las áreas

Hay 4 tipos de áreas, representados en el siguiente diagrama

Línea Inline

Contenedor de más alto nivel: cabecera,

cuerpo, piePárrafo. Rompe línea antes y

después. Se colocan en secuencia "donde toque".

Generadas por el programa procesador de XSL-FO (no

hay objetos que las representen)

Partes de una línea (caracteres,

ecuaciones, etc.)

Page 77: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

77

Curso sobre Tecnología Web Versión 2009

XSL-FOfo:flow

Contiene el "contenido real" de las páginasEs una secuencia de elementos fo:block, fo:block-container, fo:table-

and-caption, fo:table, y fo:list-block.Atributo flow-name

Indica en qué región de la página va el contenidoValores posibles:

xsl-region-bodyxsl-region-beforexsl-region-afterxsl-region-startxsl-region-end

Curso sobre Tecnología Web Versión 2009

XSL-FOfo:static-content

El contenido aparecerá en cada secuencia de página

<fo:layout-master-set><fo:simple-page-master master-name="miPágina"

margin="2cm"><fo:region-body margin="2cm" /> <fo:region-before extent="2cm" /></fo:simple-page-master>

</fo:layout-master-set>

<fo:page-sequence master-reference="miPágina"><fo:static-content flow-name="xsl-region-before"

font-style="italic" font-size="10pt" font-family="Times"><fo:block text-align="start"

background-color="blue" color="white">Página <fo:page-number/>

</fo:block></fo:static-content>

<fo:flow flow-name="xsl-region-body"><fo:block>Hola con cabecera</fo:block>

</fo:flow></fo:page-sequence>

</fo:root>

Page 78: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

78

Curso sobre Tecnología Web Versión 2009

XSL-FOModelo de cajas

Un bloque de texto –como por ejemplo un párrafo– forma una “caja”.

marginmargin

borderborder

paddingpadding

Cada elemento puede especificarse por separado: top, bottom, left, rightTambién puede especificarse la altura (height) y la anchura (width)

Curso sobre Tecnología Web Versión 2009

XSL-FOTexto

Atributos (Muchos coinciden con los de CSS)font: font-style (italic, normal, backslant, oblique), font-variant

(normal, small-caps), font-size (tamaño absoluto o relativo), font-family (serif, sans,...), font-stretch (narrow, wide,...), font-weight(bold, normal)

text-indent: Sangrado (número), last-line-end-indent: Sangrado de última línea

text-align: Justificación (start, end, center, justify, etc.), text-align-last: Justificación de la última linea

line-height: Altura de la línea (puede ser porcentaje)hyphenate (Guionado), language, country, hyphenation-character,

etc.space-before, space-after

Page 79: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

79

Curso sobre Tecnología Web Versión 2009

XSL-FOListas

<fo:list-block><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block>&#x2022;</fo:block>

</fo:list-item-label><fo:list-item-body start-indent="body-start()">

<fo:block>Primer elemento</fo:block></fo:list-item-body>

</fo:list-item><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block>&#x2022;</fo:block>

</fo:list-item-label><fo:list-item-body start-indent="body-start()">

<fo:block>Segundo elemento</fo:block></fo:list-item-body>

</fo:list-item></fo:list-block>

Curso sobre Tecnología Web Versión 2009

XSL-FOTablas

<fo:table border="0.5pt solid" text-align="center" table-layout="fixed">

<fo:table-column column-width="5cm"/><fo:table-column column-width="5cm"/><fo:table-body><fo:table-row><fo:table-cell padding="6pt" border="0.5pt solid"><fo:block> Uno . Uno </fo:block>

</fo:table-cell><fo:table-cell padding="6pt" border="0.5pt solid"><fo:block> Uno . Dos </fo:block>

</fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding="6pt" border="0.5pt solid"><fo:block> Dos . Uno </fo:block>

</fo:table-cell><fo:table-cell padding="6pt"

border="0.5pt solid"><fo:block> Dos . Dos </fo:block>

</fo:table-cell></fo:table-row>

</fo:table-body></fo:table>

Page 80: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

80

Curso sobre Tecnología Web Versión 2009

XSL-FOEnlaces e imágenes

Enlaces:<fo:basic-link external-destination="..." /><fo:basic-link internal-destination="valorID" />

Cada bloque puede tener un atributo ID

Referencias a páginas:<fo:page-number-citation ref-id="valorID" />

Gráficos<fo:external-graphic src="url('smile.gif')"

content-height="1em" content-width="1em"/>

Curso sobre Tecnología Web Versión 2009

XSL-FOOtras características

Notas a pie de página: footnoteMarcadores (marker, retrieve-marker)

Ejemplo, incluir nombre del capítulo en la cabeceraLíneas guía: fo:leaderElementos fo:float, sin posición absolutaOrientación de escritura: reference-orientationBidireccionalidad (izqda a dcha y dcha a izqda)

Page 81: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

81

Curso sobre Tecnología Web Versión 2009

Consultas XML: XQuery

Curso sobre Tecnología Web Versión 2009

XQuery

XQuery es el lenguaje de consultas de documentos XMLXQuery 1.0 es todavía un borrador desarrollado por el W3cInspirado: lenguaje de consultas de bases de datos (SQL)Fuertemente tipado mediante XML SchemaEnunciados “FLWOR” :

for {iterador que enlaza variables}let {colecciones}where {condiciones}order by {condiciones de orden}return {generador de la salida}

Page 82: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

82

Curso sobre Tecnología Web Versión 2009

Ejemplo de XQuery

<alumnos><alumno dni=“93940”>

<nombre>Jose</nombre><apells>Bernardo</apells><nota>7</nota>

</alumno>….

</alumnos>

for $a in document("alumnos.xml")//alumnowhere $a/nombre = "Jose"

and $a/apells = "Bernardo"return <alumno>{

$a/@dni,$a/nota

}</alumno>

<alumno dni=“93940”><nota>7</nota>

</alumno>

Entrada (alumnos.xml)Consulta (XQuery)

Resultado

Curso sobre Tecnología Web Versión 2009

Programación XML

Page 83: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

83

Curso sobre Tecnología Web Versión 2009

Programación XML

Principales técnicas:Guiada por eventos: SAX Basada en el recorrido del árbol: DOM

APIs Específicos para Java: JDOMPull-parsing (evaluación perezosa, XPP)Enlaces a esquemas (Bindings): JAXB

Curso sobre Tecnología Web Versión 2009

SAX: Modelos de eventos

SAX (Simple API for XML) es un analizador basado en eventosEl programador se encarga de tratar los eventos que se producen al procesar el documento

Esquema del documento

Validación Aplicación

DocumentoXML

Evento

start documentstart element: pizzasstart element: pizzastart element: ingredienteend element: ingrediente. . .

. . .

Ejemplos de eventos generadosAnalizador

Page 84: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

84

Curso sobre Tecnología Web Versión 2009

SAXSAX: API simple para XML

Creada por desarrolladores XML a partir de los comentarios en la lista xml-dev en 1998

Funcionamiento:Durante el reconocimiento del documento......cada vez que se identifica una estructura (elemento) se mira si hay

un procedimiento que manipula ese elemento- se llama al procedimiento- cuando termina, continua con el reconocimiento

Los procedimientos permiten procesar el documento guiado por eventosLos eventos son las ocurrencias de los elementos a los que hacen

referencia.Los datos son los elementos asociados con el elemento identificado

Curso sobre Tecnología Web Versión 2009

DOM

Esquema del documento

Validación

Árbol deldocumento

AnalizadorSintáctico

Lógica dela aplicación

DocumentoXML

DOM (Document Object Model)Se genera un árbol a partir del documento XMLDOM = Interfaz que define cómo recorrer/modificar dicho árbol

Problemas: Ficheros grandesSolución: Deferred document (evaluación perezosa)

Page 85: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

85

Curso sobre Tecnología Web Versión 2009

DOMDOM: Modelo de Objetos de DocumentoOrigen en el Consorcio World Wide Web (W3C)Es una interfaz independiente de la plataforma y el lenguaje de

programación que permite acceder y manipular dinámicamente el contenido, el estilo y la estructura de un documento.

La norma se define en niveles en lugar de versiones:Nivel 1: describe la funcionalidad y el modo de navegar por un

modelo generalNivel 2: se centra en tipos de documentos específicos (XML, HTML,

CSS)Nivel 3: más facilidades en tipos de documentos específicos

(validación para XML)

Curso sobre Tecnología Web Versión 2009

JDOM

API específica para Java que ofrece un modelo de objetos similar a DOM para manipular ficheros XMLA diferencia de DOM, utiliza clases y colecciones de Java

Puede integrarse con SAX y DOMNo contiene analizador propio

Objetivo: Facilitar procesamiento de XML

Page 86: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

86

Curso sobre Tecnología Web Versión 2009

Pull ParsingAnálisis bajo demanda

En Pull parsing, el control del análisis es realizado por la aplicaciónSe diferencia de SAX, que podría considerarse Push parsing (el

analizador envía los eventos a la aplicación)Ejemplo de API: StAX (Streaming API for XML)

Esquema del documento

Validación Aplicación

DocumentoXML

Solicitud

AnalizadorDatos

Curso sobre Tecnología Web Versión 2009

JAXB: Enlaces

Esquema delDocumento

Clasesenlace Aplicación

DocumentoXML

JAXB: Java API for XML BindingA partir del esquema del documento se generan clases de

enlacePermite trabajar con objetos de la aplicaciónGeneración automática de documentos válidos

xjc

Page 87: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

87

Curso sobre Tecnología Web Versión 2009

Aplicaciones XML

XHTML, MathML, SVG, SMIL, X3D, WML

Curso sobre Tecnología Web Versión 2009

XHTML+CSSEvolución

(1999) XHTML 1.0 consiste en adaptar HTML para que sea un vocabulario XMLPrincipales diferencias:

Todas las etiquetas deben cerrarse (XML bien formado)Los nombres de elementos deben ser minúsculas

Nuevas versiones: (2000 )XHTML Basic = Subconjunto para pequeños dispositivos(2000) Modularización de XHTML: XHTML 1.1(2003) XML Events. Gestión de eventos

En desarrollo: XHTML 2.0, XFrames, XML Print, HLink...

Page 88: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

88

Curso sobre Tecnología Web Versión 2009

XHTML+CSSMódulos

Structure: body, head, html, titleText: abbr, acronym, address, blockquote, br,

cite, code, dfn, div, em, h1, h2, h3, h4, h5, h6, kbd, p, pre, q, samp, span, strong, var

Hypertext: aList: dl, dt, dd, ol, ul, liObject: object, paramPresentation: b, big, hr, i, small, sub, sup, ttEdit: del, insBidirectional Text: bdo

Forms: button, fieldset, form, input, label, legend, select, optgroup, option, textarea

Table: caption, col, colgroup, table, tbody, td, tfoot, th, thead, tr

Image: img

Client-side Image Map: area, map

Server-side Image Map: Atributo ismap de img

Intrinsic Events: Atributos de sucesos

Metainformation: meta

Scripting: noscript, script

Stylesheet : elemento style

Style Attribute : atributo style

Link : link

Base: base

Curso sobre Tecnología Web Versión 2009

XHTML+CSSEvolución de CSS

(1994) Primer borrador de CSSObjetivo: Permitir combinar preferencias visuales del autor y del usuario

(en cascada)(1996) CSS nivel 1: Propiedades de fuentes, márgenes, colores, etc. (1998) CSS nivel 2: Añade posiciones absolutas, páginas,

numeración automática, etc.En desarrollo CSS 3, añadirá selectores, texto vertical, interacción,

etc.Otros perfiles de CSS para móviles, TV e impresión

CSS no tiene sintaxis XML

Page 89: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

89

Curso sobre Tecnología Web Versión 2009

XHTML+CSS: Ejemplo<html><head><title>Pizzeria Al Capone</title><link rel="stylesheet" href="pizzeria.css"></head><body><h1>Pizzería Al Capone</h1><p>Lista de enlaces</p><ul> <li><a href="Pizzas.html">

Tipos de Pizzas</a></li><li><a href="http://www.mafia.it">

Patrocinadores</a></li><li><a href="#Contacto">

Contacto</a></li><ul>

<h2 ><a name="Contacto">Contacto</a></h2><p><span class="item">Dirección:</span>

C/ Génova Nº 3, Oviedo, España</p><p><span class="item">Teléfono:</span>

985203040</p></body></html>

AlCapone.html

Página visualizada

Enlace a hoja

de estilo

Sin aspectosvisuales

Identificaciónelementos

body { color : yellow; background: blue

}a:link { color: red }a:visited { color: white }span.item { color : red }

pizzeria.css

Curso sobre Tecnología Web Versión 2009

XHTML+CSS: Ejemplo<html><head><title>Tipos Pizzas</title><link rel="stylesheet" href="pizzeria.css"></head><body><h1>Pizzas del Restaurante Al Capone</h1><table><caption>Tipos de Pizzas</caption><th><td>Pizza</td><td>Ingredientes</td><td>Precio</td></th><tr><td>Barbacoa</td>

<td>Salsa barbacoa, Mozzarella, Pollo, Bacon, Ternera</td><td>8 &euro;</td></tr>

. . .<tr><td>Margarita</td>

<td>Tomate, Jamón, Queso</td><td>6 &euro;</td>

</tr></table></body></html>

pizzas.html

Misma apariencia

Referencia a la misma hoja de estilos

Page 90: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

90

Curso sobre Tecnología Web Versión 2009

MathMLEvolución

HTML carece de facilidades para incorporar fórmulas matemáticasSe recurría a incluirlas como imágenesMúltiples problemas:

Fórmula como algo indivisibleNo es posible adaptar a diferentes formatos visualesProcesamiento de fórmulas: buscadores, índices, reutilización, etc

(1999) MathML 1.0 (2001) MathML 2.0: nuevos elementos y DOM

Curso sobre Tecnología Web Versión 2009

MathMLObjetivos de Diseño

Material matemático a todos los nivelesCodificar tanto notaciones como significadosFacilitar conversión con otros formatosFacilitar la visualización de expresiones complejasPermitir la extensibilidadLegible por personas...por ser XML pero...NO está pensado para edición manual de fórmulas

Page 91: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

91

Curso sobre Tecnología Web Versión 2009

MathMLEstilos

2 estilosPresentación: Estructura visual en 2 dimensionesContenido: Significado de las fórmulas

<math><apply>

<power/><apply>

<plus/><ci>a</ci><ci>b</ci>

</apply><cn>2</cn>

</apply></math>

<math><mrow>

<msup><mfenced>

<mrow><mi>a</mi><mo>+</mo><mi>b</mi>

</mrow></mfenced><mn>2</mn>

</msup></mrow>

</math>

(a+b)2

Presentación Contenido

Curso sobre Tecnología Web Versión 2009

MathMLEjemplo

<math xmlns="http://www.w3.org/1998/Math/MathML"><mrow>

<mi>x</mi><mo>=</mo><mfrac>

<mrow><mrow><mo>-</mo><mi>b</mi></mrow><mo>±</mo>

<msqrt><mrow><msup><mi>b</mi><mn>2</mn></msup><mo>-</mo>

<mrow><mn>4</mn><mo>&InvisibleTimes;</mo><mi>a</mi><mo>&InvisibleTimes;</mo><mi>c</mi></mrow>

</mrow></msqrt></mrow>

<mrow><mn>2</mn><mo>&InvisibleTimes;</mo><mi>a</mi></mrow></mfrac>

</mrow></math>

aacbbx

242 −±−

=

Page 92: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

92

Curso sobre Tecnología Web Versión 2009

MathMLElementos Presentación

mi: Identificadormn: Númeromo: Operadormtext: Textomspace: Espacioms: String literalmglyph: Carácter no estándar

mrow: Grupo horizontalmfrac:Fracciónmsqrt:Raíz cuadradamroot:Raíz n-ésimamstyle:Cambiar estilomerror:Introducir un errormpadded: Ajustar espaciomphantom: Contenido invisiblemfenced: Rodear contenido de parántesismenclose: Símbolo de división

msub: Subíndicemsup: Superíndicemsubsup: Subíndice y superíndicemunder: Escribir bajo un elementomover: Escribir sobre un elementomunderover: Escribir bajo y sobre un

elementommultiscripts: Múltiples índices

mtable: Tabla o arraymtr: Fila de tablamtd:Datos de tablamaligngroup:Grupo de alineación: Escribir sobre un elementomalignmark: Marca un punto de alineaciónmlabeledtr:Fila en tabla con etiquetamaction: Enlaza una acción

Curso sobre Tecnología Web Versión 2009

MathMLElementos de Contenido

ci: Identificador de contenidocn: Número de contenidocsymbol:Símboloapply: Aplicación de función a argumentoreln: Relaciónfn: Funcióninterval: Intervaloinverse: Inversosep: Separadorcondition: Condicióndeclare: Declaraciónlambda: Definición de funcióncompose: Componer funciones. . .

quotientexp:factorialdividemaxminminuspluspowerremtimesrootimpliesforallexists. . .

int: Integraldiff: DerivadapartialDiff: Der. parcialsum: sumatorioproduct:explnloglogbasesincostansinhcosharcsin. . .

Page 93: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

93

Curso sobre Tecnología Web Versión 2009

MathMLSoftware Existente

Visualizadores:Internet Explorer + MathPlayer (soporte mediante objeto externo)Amaya: Visualizador estándar del W3CMozilla/Netscape 7: Soporte nativo

Editores:AmayaOpenOfficeMathType...otros...

Conversores: LaTeX - MathML

Curso sobre Tecnología Web Versión 2009

SVGEvolución

(2001) SVG 1.0 - Scalable Vector Graphics(2003) SVG 1.1 Modularización...actualmente: SVG 1.2 en desarrolloObjetivos

Gráficos vectoriales: Precisión, escalabilidad, etc.Compatibilidad con XML y vocabularios de la Web: CSS, Espacios de

nombres, XLink, SMIL, ECMAScript, etc.También permite incluir texto, imágenes raster e hiper-enlacesFormato de texto (no binario): Facilita indexación, búsquedas, etc.

Buena acogidaSoportado en principales navegadores: IE, Mozilla, Amaya, etc.Planes para incorporación en pequeños dispositivos

Page 94: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

94

Curso sobre Tecnología Web Versión 2009

SVGFormato Vectorial

Formato rasterArrays de pixels. Al hacer zoom se pierde calidad

SVG = Formato vectorialAl hacer zoom no se pierde calidad

Curso sobre Tecnología Web Versión 2009

SVGEjemplo

<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN""http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">

<svg width="300" height="200" xmlns="http://www.w3.org/2000/svg">

<rect x="25" y="10" width="200" height="100"fill="red" stroke="blue" stroke-width="3" />

<circle cx="100" cy="100" r="50" fill="green" stroke="yellow"/>

</svg>

Page 95: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

95

Curso sobre Tecnología Web Versión 2009

SVGInclusión en HTML

<?xml version="1.0" encoding="iso-8859-1"?><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ejemplo de Página con HTML</title></head><body><p>Esto es un párrafo con una imagen...</p>

<object width="300" height="200"data="simple.svg" type="image/svg+xml">

<img width="300" height="200" src="simple.png" alt="Imagen"/>

</object>

</body></html>

Para los visualizadores que no admiten SVG

Curso sobre Tecnología Web Versión 2009

Espacio de trabajo y coordenadas

width, height = Especifican el ancho y alto de la imagenviewBox = "x y alto ancho" Indica rectángulo de imagen que va a verse

y

x(300,0)

(0,200) (300,200)

(0,0)

Page 96: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

96

Curso sobre Tecnología Web Versión 2009

SVGFormas básicas

<circlecx="70" cy="100" r="50" />

<rectx="150" y="50" rx="20" ry="20" width="135" height="100" />

<line x1="325" y1="150" x2="375" y2="50" />

<polylinepoints="50, 250 75, 350 100, 250

125, 350 150, 250 175, 350" />

<polygonpoints="250,250 297, 284 279,

340 220, 340 202, 284" />

<ellipsecx="400" cy="300" rx="72" ry="50"/>

Curso sobre Tecnología Web Versión 2009

SVGPath

path permite definir formas gráficas abiertas y cerradas a partir de líneas y curvas

Las formas básicas son casos particulares de path

<path d="M 16 9 L 96 9 L 59 46 L 59 94 C 59 94 57 100 84 102 L 84 103 L 31 103 L 31 102 C 56 100 54 94 54 94 L 54 46 L 16 9 z " />

M x y = Mover al punto (x,y)L x y = Pintar una línea hasta el punto (x,y) C x1 y1 x2 y2 x3 y3 = Pintar una curva bezier cúbica con los

puntos de control (x1,y1) (x2,y2) hasta (x3,y3)H n = Pintar horizontalmente hasta nV n = Pintar verticalmente hasta nZ = Cerrar la formaOtros...Q,S, T, A

Page 97: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

97

Curso sobre Tecnología Web Versión 2009

SVGTexto

<text x="220" y="20"><tspan x="220" dy="30">

Texto en varias líneas</tspan><tspan x="220" dy="30">

Siguiente línea</tspan><tspan x="220" dy="30" style="font-weight:bold;

fill:green;stroke:blue">Con diferentes propiedades</tspan>

<tspan x="220" dy="30" rotate="10 -10

10 -10 10 -10 10">

incluso rotaciones</tspan></text>

text define un elemento de textotspan permite asignar propiedades a porciones de textoMuchas propiedades compartidas con CSS

Curso sobre Tecnología Web Versión 2009

Texto siguiendo un camino

Es posible indicar que el texto se escriba sobre un camino

<path id="copa"d="M 16 9 . . . L 16 9 z "/>

<text font-size="10" fill="blue"><textPath xlink:href="#copa">Bar e-baristo, el mejor bar de copas del lugar. Visítalo y volverás </textPath>

</text>

Page 98: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

98

Curso sobre Tecnología Web Versión 2009

SVGAgrupaciones

g define un grupo Los elementos dentro de la agrupación pueden compartir propiedades

<g fill="red" stroke="blue" stroke-width="5"><circle cx="40" cy="30" r="20" /><rect x="80" y="10" height="40" width="40" />

</g>

Curso sobre Tecnología Web Versión 2009

SVGHiper-enlaces

a define un hiper-enlace (similar a HTML)El atributo es: xlink:hrefEstá previsto usar el vocabulario XLink que amplía las posibilidades de enlace

entre documentos XML

<a xlink:href="pagina.html"><rect x="25" y="10" width="200" height="100"

fill="yellow" stroke="blue" /><text x="30" y="50" text-anchor="start">

Pulsa para ir a una página</text></a><circle cx="100" cy="100" r="50"

fill="green" stroke="yellow" />

Page 99: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

99

Curso sobre Tecnología Web Versión 2009

Definiciones y Referencias

defs define una serie de definiciones comunes que pueden utilizarse varias veces.

use incluye un elemento definido en la sección defs

<defs><path id="copa"

d="M 16 9 ... L 16 9 z "/>

</defs>

<use x="10" y="10" xlink:href="#copa" fill="none" stroke="red" />

<use x="20" y="10" xlink:href="#copa" fill="none" stroke="red" />

<use x="30" y="10" xlink:href="#copa" fill="none" stroke="red" />

Curso sobre Tecnología Web Versión 2009

SVGInclusión de imágenes

img permite incluir una imagenFormatos: jpg, gif, png y ... svg!

<image x="20" y="20" height="360" width="232" xlink:href="catedralOviedo.jpg" />

<rect x="10" y="10" height="380" width="252" fill="none" stroke="blue" />

Page 100: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

100

Curso sobre Tecnología Web Versión 2009

SVGTransformaciones

translate(x,y) traslada el origen al punto (x,y)scale(sx,sy) escala sobre sx y syrotate(a) rota un ángulo amatrix(a,b,c,d,e,f) matriz de transformaciónskewX(n) inclinación de n grados horizontalskewY(n) inclinación de n grados vertical

<use transform="translate(10,10)"xlink:href="#copa" />

<use x="300" y="50" transform="scale(0.5,0.5)"xlink:href="#copa" />

<use x="100" y="100" transform="rotate(20)"xlink:href="#copa" />

<use x="200" y="100" transform="skewX(-20)"xlink:href="#copa" />

Curso sobre Tecnología Web Versión 2009

SVGCortes (clipping)

clipPath(x,y) define un camino de corte

<clipPath id="corte"><path

d="M 16 9 ... 16 9 z "/></clipPath>

<g style="stroke:none;clip-path:url(#corte)">

<rect style="fill:red" x="0" y="0" width="500" height="20"/>

<rect style="fill:green" x="0" y="20" width="500" height="20"/>

. . .<rect style="fill:blue"

x="0" y="240" width="500" height="20"/></g>

Page 101: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

101

Curso sobre Tecnología Web Versión 2009

SVGRelleno y gradientes

<defs><linearGradient id="grad1"

gradientUnits="userSpaceOnUse" x1="30" y1="20" x2="200" y2="150">

<stop offset="0" style="stop-color:blue" /><stop offset="0.5" style="stop-color:white" /><stop offset="1" style="stop-color:green" /></linearGradient>

<radialGradient id="grad2" gradientUnits="userSpaceOnUse" cx="130" cy="270" r="100" fx="70" fy="270"><stop offset="0" style="stop-color:blue" /><stop offset="0.5" style="stop-color:white" /><stop offset="1" style="stop-color:green" /></radialGradient></defs><rect ... style="fill:url(#grad1)"/><rect ... style="fill:url(#grad2)"/>

El atributo fill indica cómo rellenar una forma cerradaSe puede especificar un color mediante rgbSe pueden definir gradientes mediante linearGradient y radialGradient

Curso sobre Tecnología Web Versión 2009

SVGTrasparencia y Opacidad

El atributo opacity indica nivel de trasparencia (1=no trasparente, 0=trasparente)

<path id="mesa" fill="green"d="M 20 70 L 95 70 L 115 130

L 0 130 L 20 70 z" />

<path id="copa" fill="url(#grad1)"opacity="0.4" stroke="black"

d="M 16 9 . . . L 16 9 z " />

Page 102: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

102

Curso sobre Tecnología Web Versión 2009

SVGEfectos de Filtros

<filter id="filtro" filterUnits="userSpaceOnUse" x="0" y="0" width="500" height="500">

<feGaussianBlur in="SourceAlpha" stdDeviation="10" result="sombra"/>

<feOffset in="sombra" dx="10" dy="10" result="sombraDesp"/>

<feSpecularLighting in="sombra" surfaceScale="5" specularConstant=".75" specularExponent="40" lighting-color="gray" result="brillo"><fePointLight x="-5000" y="-10000" z="20000"/></feSpecularLighting><feComposite in="brillo"

in2="SourceAlpha" operator="in" result="brillo"/>

<feComposite in="SourceGraphic" in2="brillo" operator="arithmetic" k1="0" k2="1" k3="1" k4="0" result="objeto"/>

<feMerge><feMergeNode in="sombraDesp"/><feMergeNode in="objeto"/>

</feMerge></filter><use xlink:href="#copa" filter="url(#filtro)"/>

Curso sobre Tecnología Web Versión 2009

SVGAnimaciones

Es posible modificar los valores de los atributos de forma dinámica

<rect x="20" y="10" width="120" height="40" fill="blue"><animate attributeName="width"

from="120" to="20" begin="0s" dur="4s" fill="freeze"/><animate attributeName="height"

from="40" to="100" begin="2s" dur="6s" fill="freeze"/></rect>

animate anima atributos generalesset modifica valor de atributos discretos (ejemplo, visibility)animateMotion movimiento de un objeto a lo largo de un caminoanimateColor cambia los coloresanimateTransform anima una transformación

Page 103: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

103

Curso sobre Tecnología Web Versión 2009

SVGAnimaciones

Atributos de animaciónbegin = Comienzo de la animación

Puede ser un tiempo (2s) o valor relativo a otra animaciónend = Fin de la animacióndur = Duración de la animaciónrepeatCount = Nº de repeticiones (indefinite = infinitas)repeatDur = Duración de la repeticiónmin/max = Duración mínima/máximarestart = Indica si es posible volver a activar la animaciónfill = Indica estado al finalizar la animación (freeze|remove)

Curso sobre Tecnología Web Versión 2009

SVGConversiones de formas

<path fill="red"><animate attributeName="d"

from="M 16 9 . . . L 16 9 z "to="M 45 9 . . . L 45 9 z"

fill="freeze" dur="5s" id="a1" begin="a2.end" /><animate attributeName="fill" from="red" to="blue" dur="5s"

fill="freeze" repeatCount="indefinite"/></path>

Page 104: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

104

Curso sobre Tecnología Web Versión 2009

SVGDOM<script type="text/ecmascript"><![CDATA[

function addrect(evt) {var svgobj = evt.target;var svgdoc = svgobj.getOwnerDocument();var newnode = svgobj.cloneNode(false);svgstyle = newnode.getStyle();var x = 10 + 480 * Math.random();var y = 10 + 330 * Math.random();var width=10+100*Math.random();var height=10+50*Math.random();newnode.setAttribute('x',x);newnode.setAttribute('y',y);newnode.setAttribute('width',width);newnode.setAttribute('height',height);svgstyle.setProperty('opacity',0.3+0.7*Math.random());var contents = svgdoc.getElementById('contents');newnode = contents.appendChild(newnode);}]]></script>

<g id="contents"><rect onclick="addrect(evt)" style="fill:red;opacity:1"

x="150" y="100" width="20" height="20"/><rect onclick="addrect(evt)" style="fill:green;opacity:1"

x="250" y="100" width="20" height="20"/><rect onclick="addrect(evt)" style="fill:blue;opacity:1"

x="350" y="100" width="20" height="20"/></g>

Curso sobre Tecnología Web Versión 2009

SMILEvolución

SMIL = Synchronized Multimedia Integration LanguageSMIL es a multimedia lo que HTML es a hipertextoObjetivo: Integrar/sincronizar elementos de diferentes medios: vídeos,

imágenes, sonidos, etc.(1998) SMIL 1.0(2001) SMIL 2.0 Creación de diferentes módulos

Combinación en otras aplicaciones:XHTML+SMILSVG+SMIL: Las animaciones de SVG forman parte de SMILetc...

Page 105: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

105

Curso sobre Tecnología Web Versión 2009

SMILAnimaciones en SVG

SMIL puede combinarse con SVG para realizar animacionesEjemplo, modificar valores de atributos

<rect x="20" y="10" width="120" height="40" fill="blue"><animate attributeName="width"

from="120" to="20" begin="0s" dur="4s" fill="freeze"/><animate attributeName="height"

from="40" to="100" begin="2s" dur="6s" fill="freeze"/></rect>

SMIL también puede combinarse con XHTML o utilizarse en documentos independientes

Curso sobre Tecnología Web Versión 2009

X3DEvolución

Definir escenas de realidad virtual en InternetAdaptación de VRML (Virtual Reality Modeling Language) a XMLEvolución:(1994) Posibilidad de desarrollar un estándar para realidad virtual

en InternetAparecen VRML 1.0 y VRML 2.0

(1997) VRML 97 = Estándar ISO InternacionalObjetivos: Independencia de plataforma, extensibilidad, bajo ancho de

banda(1999) Cambio nombre de Consorcio VRML a consorcio Web3D(2003) Desarrollo de X3D

Conversión a sintaxis XML y ModularizaciónCaracterísticas: Gráficos en 2D y 3D, Animación, Audio/Vídeo,

Interacción con el usuario, scripting, simulaciones físicas: comportamientos humanos, espacios geográficos, etc.

Page 106: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

106

Curso sobre Tecnología Web Versión 2009

X3DEjemplo

<?xml version="1.0" encoding="UTF-8"?><X3D profile="Immersive"><Scene><Group><Viewpoint description="Hola" orientation="0 1 0 1.57"

position="6 -1 0"/><NavigationInfo type="&quot;EXAMINE&quot; &quot;ANY&quot;"/><Shape> <Sphere/>

<Appearance><ImageTexture url="&quot;tierra.png&quot;"/></Appearance>

</Shape><Transform rotation="0 1 0 1.57"

translation="0 -2 1.25"><Shape><Textstring="&quot;Hola&quot;

&quot;en X3D!&quot;"/><Appearance><Material diffuseColor="0.1 0.5 1"/>

</Appearance></Shape></Transform></Group></Scene></X3D>

Curso sobre Tecnología Web Versión 2009

WMLEvolución

Lenguaje de marcas para representar información en dispositivos con pocos recursos (teléfonos móviles)WML forma parte de WAP

(1995) Ericsson inicia ITTP (Intelligent Terminal Transfer Protocol)(1996) Openwave desarrolla HDML (Handhelp Device Markup

Language) subconjunto de HTML(1997) Ericsson, Motorola, Nokia y Openwave fundan WapForum(1998) WAP 1.0. Es un protocolo que permite acceso a Internet

desde dispositivos móviles(2002) Se crea Open Mobile Alliance

Page 107: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

107

Curso sobre Tecnología Web Versión 2009

WMLEjemplo

<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml>

<card id="Tarjeta1" title="Ejemplo "> <p> Hola</p><p>Qué tal?</p><anchor>Siguiente

<go href="#siguiente"></anchor></card>

<card id="siguiente" title="siguiente"> <p>Final</p></card>

</wml>

Curso sobre Tecnología Web Versión 2009

VoiceXMLEvolución

Portales basados en vozEjemplos: Contestadores automáticos de empresas

Artefactos empotrados (coches)

Objetivos:Fácil creación de contenido habladoReconocimiento/generación de vozInteracción con el usuario

(1995) Phone Markup Language de AT&T(1998) Se crea el VoiceXML Forum(2000) VoiceXML 1.0(2004) VoiceXML 2.0

Page 108: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

108

Curso sobre Tecnología Web Versión 2009

VoiceXMLEjemplo<vxml version="2.0">

<form id="start"><field name="answer"><noinput> Hey, don't sleep! </noinput><nomatch> say 'yes' or 'no' </nomatch><prompt> Are you sleepy? </prompt><grammar root="main"><rule id="main" scope="public"><one-of><item><ruleref uri="#yes" tag="yes"/></item><item><ruleref uri="#no" tag="no"/></item>

</one-of></rule><rule id="yes"><one-of><item>yes</item><item>yeah</item></one-of>

</rule><rule id="no"><one-of><item>no</item><item>not</item></one-of>

</rule></grammar><filled><if cond="answer=='yes'">So you are sleepy. Me too.<else/>So you are not sleepy. But I am.</if>

</filled></field>

</form></vxml>

Curso sobre Tecnología Web Versión 2009

Mapa de XML

Page 109: Curso: “Tecnología Web - di002.edv.uniovi.esdi002.edv.uniovi.es/~labra/cursos/masterMTI/PDF/XML.pdf · 2 Curso sobre Tecnología Web Versión 2009 Horario Programación XML: SAX,

109

Curso sobre Tecnología Web Versión 2009

Selección de EnlacesPágina del consorcio: http://www.w3c.orgEn español: http://www.it.uc3m.es/~xml/enlaces.htmlEspecificación anotada: http://www.xml.com/axml/testaxml.htmXML en industria: http://www.xml.orgDiseño de vocabularios XML: http://www.xmlpatterns.comTutoriales: http://www.w3schools.com

http://www.brics.dk/~amoeller/XML/Artículos de XML:

http://www.topxml.comhttp://www.xmlpatterns.com

Software de XMLhttp://www.xmlsoftware.comhttp://www.xmlhack.comhttp://www.garshol.priv.no/download/xmltools/

Curso sobre Tecnología Web Versión 2009

Fin de la Presentación