Nota: Este smbolo indica posibles lugares a investigar Se indica una posible referencia entre corchetes
Tecnologas Web
Esquema de la exposicin
Lenguajes para Internet Diseo de lenguajes XML Tecnologas XML Arquitecturas para Internet Esquema Cliente/servidor Sistemas distribuidos Servicios Web Sistemas de Agentes Arquitecturas peer-to-peer Web Semntica Representacin del conocimiento Ontologas
Tecnologas Web
Tecnologas Web
Aspectos lingsticos
Lenguaje = Instrumento de comunicacin Naturaleza diferente: Programador = Persona, Ordenador = mquina
Aspectos lingsticos
Semitica = Estudio de los signos Estudio de lenguajes: Sintaxis: Relacin de los signos entre s Estructura de las frases Semntica Relacin de los signos con los objetos a los que se aplican Significado de las frases Pragmtica Relacin de los signos con sus intrpretes
Tecnologas Web
Principios de diseo
Existe un lenguaje perfecto? Qu caractersticas debera tener? Algunos principios: Concisin notacional Ayudar al programador proporcionando un marco conceptual con el nivel de detalle adecuado. Compromiso entre lenguajes crpticos y lenguajes prolijos Ejemplos: C vs. Cobol Ortogonalidad 2 caractersticas son ortogonales si pueden ser combinadas de forma independiente. Si las caractersticas son ortogonales, Hay menos situaciones excepcionales que recordar El lenguaje es ms fcil de manejar Falta de ortogonalidad supone enumeracin de situaciones excepcionales o la aparicin de incoherencias
Tecnologas Web
Principios de diseo
Abstraccin El lenguaje debe evitar forzar a los programadores tener que enunciar algo ms de una vez Debe permitir identificar patrones repetitivos y automatizar tareas mecnicas y tediosas Ejemplos: procedimientos, plantillas, etc. Seguridad Situacin ideal = programas incorrectos no pertenecen al lenguaje Ejemplo: Sistemas potentes de tipos que rechazan programas incorrectos Expresividad El programador debe poder expresar sus intenciones Compromiso: Expresividad vs. Seguridad Algunos lenguajes limitan la expresividad para aumentar la seguridad (ej. Aritmtica de punteros)
Tecnologas Web
Principios de diseo
Extensibilidad Incluir mecanismos para que programadores puedan aumentar capacidad expresiva Ejemplo: Definir nuevas estructuras de control Portabilidad Facilitar la creacin de programas que funcionen en el mayor nmero de entornos computacionales Eficiencia Permitir expresar algoritmos suficientemente eficientes o incluir tcnicas de optimizacin de los programas escritos en el lenguaje Compromiso: Eficiencia vs. Portabilidad Entorno La eleccin del lenguaje tambin depende del contexto: Entornos de programacin, documentacin, depuradores, etc. Base de programadores y adopcin industrial
Tecnologas Web
Definicin de lenguajes
Cuando se extiende la utilizacin por un grupo numeroso, es necesario definir el lenguaje mediante un Estndar El estndar debe ser completo y no ambigo Posible inclusin de caractersticas dependientes de la implementacin Entidades internacionales: ISO, ANSI, ECMA, W3C, etc. Evolucin de lenguajes Nacimiento, Popularizacin, Estandarizacin, ....Desaparicin? Desviacin del estndar por parte de las implementaciones: Omisiones: Caractersticas no implementadas Extensiones: Nuevas caractersticas que no rompen compatibilidad Modificaciones: Diferencias con el estndar (peligro!) Errores: Conocidos (lista de bugs) o no Evaluar: Caractersticas del lenguaje (son estndar?, estn implementadas ?) Estado de implementaciones vs. estndares (hacia dnde va?)
Tecnologas Web
Tcnicas de Especificacin
Sintaxis: Notacin BNF Semntica? Lenguaje Natural: La mayora de los lenguajes Implementaciones prototipo: Se define un intrprete En qu lenguaje? Semntica denotacional Se relacionan las construcciones con entidades matemticas Semntica operacional Se definen las operaciones mediante reglas de inferencia Semntica axiomtica Se describen las propiedades de las construcciones Otras tcnicas... Reutilizacin de especificaciones ... intrpretes
[Labra]
Tecnologas Web
10
Caractersticas de lenguajes
Tipos bsicos (primitivos): Enteros, caracteres, cadenas, booleanos Tipos compuestos (definidos por el usuario?) Chequeo de tipos Comprobar que un programa no produce errores de tipo Esttico (antes de la ejecucin) vs. Dinmico Ventajas del chequeo esttico: Se capturan errores antes de ejecucin mayor fiabilidad No es necesario chequear en ejecucin mayor eficiencia Inferencia de tipos El programador no tiene que declarar el tipo El sistema lo infiere y puede comprobar si coincide Limitaciones/Problemas: Expresividad Orientacin a Objetos vs. Chequeo esttico de tipos Otras Propiedades: terminacin, recursos consumidos, etc....
[Type]
Tecnologas Web
11
Caractersticas de Lenguajes
Expresiones = ncleo del lenguaje Sobrecarga de operadores Declaraciones y mbitos Declaraciones de variables (245+3)*(245+3)-7*(245+3) let x = 245 + 3 in x * x 7 * x Declaraciones anidadas, recursividad mbito esttico vs. Dinmico
Tecnologas Web
12
Caractersticas de lenguajes
Variables, referencias y asignaciones x := x + 1 Control de ejecucin Sentencias de control: goto, condicional, switch, bucles, excepciones Mecanismos de abstraccin Definicin de funciones Funcin = un valor (como un nmero?) Pasar funciones como parmetros, crear nuevas funciones, etc. Evaluacin (ansiosa vs. perezosa )
let fxy=x+3 in f 4 (1/0) Ev . Ansiosa = Error aritmtico (Pascal, C, Java,etc.) Ev . Perezosa = 7 (Haskell)
Tecnologas Web
13
Caractersticas de lenguajes
Entrada/Salida Inspirados en sistema Unix...nuevos modelos? Concurrencia Incorporacin de hilos generalizada Lenguajes especficos Objetos, clases, herencia Lenguajes basados en clases (Java, C++) vs. basados en prototipos (Self, Cecil) Genericidad (templates) Modularidad Gestin del espacio de nombres Compilacin separada
Tecnologas Web
14
Familias de lenguajes
Lenguajes imperativos Fortran, Cobol, Algol, Basic, Pascal, Ada, C, ... Lenguajes funcionales Lisp, Scheme, ML, Haskell Lenguajes Orientados a Objetos Simula, Smalltalk, C++, Java, Python, C# Lenguajes de programacin lgica Prolog, Oz Otros Programacin concurrente y no determinista Programacin dirigida por eventos Programacin visual Programacin mediante restricciones (constraint programming ) Programacin orientada al aspecto ...
Tecnologas Web
15
Evolucin
Mquinas Abstractas
Procedimiento que permite ejecutar un conjunto de instrucciones en un lenguaje formal No se requiere una mquina concreta Sintaxis muy bsica (cdigos de bytes) Ejemplos: SECD (66) para lenguajes funcionales P-CODE para Pascal JVM para Java Incluye pila de ejecucin Compilacin JIT Verificacin esttica de tipos Gestin memoria dinmica Cdigo multi-hilo CLR para .NET: Similar a la JVM, aunque intenta una mayor independencia del lenguaje de programacin Tendencias para Internet: Seguridad: Proof carrying code (Cdigo que incluye una comprobacin de su correccin)
[PCC]
Tecnologas Web
17
C Lenguaje imperativo Aceptacin en mltiples plataformas (compatibilidad) Chequeo esttico de tipos con lagunas (void) Gestin de memoria manual (programador) Compilacin a cdigo nativo (eficiencia) C++ Leng. Orientado a Objetos basado en clases Aceptacin en mltiples plataformas (compatibilidad) Chequeo esttico de tipos con lagunas (void) Gestin de memoria manual (programador) Compilacin a cdigo nativo (eficiencia) Java: Leng. OO basado en clases Chequeo esttico de tipos parcial (chequeo dinmico en ocasiones ) Gestin de memoria automtica Compilacin basada en mquina abstracta (eficiencia?) Gran aceptacin acadmica (e industrial?)
Tecnologas Web
18
Tecnologas Web
19
Tecnologas Web
20
Tecnologas Web
21
WWW = ordenador global formado por unidades computacionales repartidas por todo el mundo y conectadas entre s Nuevas cuestiones: Qu modelo de computacin utiliza ese ordenador? Qu tipo de lenguaje utilizaramos en dicho computador? Observables: Distribucin global Servicios poco fiables Falta de integridad referencial Diferente de otros modelos Ms importante latencia y ancho de banda que velocidad de CPU o tamao de memoria
Tecnologas Web
22
Modelo propuesto = Combinadores de servicios Un servicio es una computacin accesible por internet Los combinadores de servicios tienen en cuenta los diversos aspectos de la red (ancho de banda, cadas, etc.) Ejemplos: Secuencia(s1,s2) = Ejecuta s2 en caso de que falle s1 Concurrent(s1,s2) = Comienza a la vez la ejecucin de s1 y s2 y devuelve el resultado del primero que finaliza Timeout(s): Fija un lmite de tiempo en la ejecucin de un servicio ... Lenguaje WebL (Compaq): Facilita la programacin de servicios Web Otros JWig: Lenguaje para aplicaciones Web REBOL: Lenguaje de mensajes para aplicaciones distribuidas en Internet Ruby: Lenguaje interpretado OO sin declaracin de tipos Erlang: Programacin Orientada a Concurrencia Lenguajes de Coordinacin: WCL, Linda, SpaceTub,etc.
[Cardelli]
Tecnologas Web
23
Lenguajes de Marcas
SGML (Standard Generalized Markup Language, IBM, aos 60) Utilizado para el procesamiento de documentos Principio = Separar contenido de la forma de representarlo Permite definir un conjunto de marcas especfico para cada aplicacin HTML (Tim Berners -Lee, 1990) Desarrollado en el CERN Intercambio de informacin cientfica Vocabulario de SGML HTML 2.0 (IETF, Internet Engineering Task Force, 1994) En 1995 se crea el consorcio Web Formado por compaas y universidades internacionales Desarrolla recomendaciones ( estndares de facto ) HTML 4.01 (1998) ltima versin basada en SGML
Tecnologas Web
24
Tecnologas Web
25
<h1>Pizzera Al Capone</h1> <table> <caption>Lista de Pizzas</caption> <tr> <td>Barbacoa</td> <td>Mozzarella, Queso, Bacon</td> <td>7€</td> </tr> ... Mezcla informacin de la pizza </body> con presentacin en tabla </html >
Informacin de la Pizza
<pizza nombre=Barbacoa> <ingredientes nombres=Mozzarella Queso Bacon /> <precio moneda=euro valor= 7 /> </pizza>
O en otros formatos no previstos inicialmente: Estadsticas, WAP, TV, . . .
Tecnologas Web
26
Ejemplo de XML
pizzas.xml Las marcas tienen un significado propio de la aplicacin <?xml version=1.0?> <!DOCTYPE pizzas SYSTEM "pizzas.dtd"> <pizzas> <pizza nombre="Barbacoa" precio="8 "> <ingrediente nombre="Salsa Barbacoa" /> <ingrediente nombre= Mozzarella " /> <ingrediente nombre= Pollo" /> <ingrediente nombre="Bacon" /> <ingrediente nombre="Ternera" /> </pizza> . .. <pizza nombre=" Margarita" precio=" 6"> <ingrediente nombre="Tomate" /> <ingrediente nombre="Jamn" /> <ingrediente nombre="Queso" /> </pizza> </pizzas>
DTD = Declaracin de Tipo de Documento pizzas.dtd <!ELEMENT pizzas (pizza*)> <!ELEMENT pizza (ingrediente*)> <!ELEMENT ingrediente (#PCDATA)> <!ATTLIST pizza nombre CDATA #REQUIRED> <!ATTLIST pizza precio CDATA #REQUIRED> <!ATTLIST ingrediente nombre CDATA #REQUIRED> Estructura de rbol pizzas pizza ... pizza
ingrediente . . . ingrediente
ingrediente . . . ingrediente
Tecnologas Web
27
Definicin de XML
XML se basa en la utilizacin de elementos Un elemento est formado por: Una etiqueta inicial (nombre entre signos < y > ): <etiqueta> La etiqueta inicial puede contener atributos : <etiqueta atributo=valor> El elemento debe acabar con una etiqueta final con el mismo nombre El contenido del elemento es todo lo que hay entre la etiqueta inicial y la f inal El contenido pueden ser otros elementos
Elemento Etiqueta de inicio Contenido Etiqueta final
Tecnologas Web
28
<pizzas> <pizza nombre="Margarita" precio="6" > <ingrediente nombre=" Tomate" /> <ingrediente nombre=" Queso" /> </pizza> </pizzas>
<pizzas> <pizza nombre="Margarita" precio="6" > <ingrediente nombre=" Tomate" > </pizzas>
El documento puede contener varias instrucciones de procesamiento Indican cmo debe procesarse el documento <?xml version=1.0 encoding=ISO-8859-1 standalone=yes ?>
Tecnologas Web
29
<?xml version=1.0?> <!DOCTYPE pizzas SYSTEM "pizzas.dtd"> <pizzas> <pizza nombre=" Margarita" precio="6 "> <ingrediente nombre=" Tomate" /> </pizza> </pizzas>
pizzas.dtd <!ELEMENT pizzas (pizza*)> <!ELEMENT pizza (ingrediente*)> <!ELEMENT ingrediente (#PCDATA)> <!ATTLIST pizza nombre CDATA #REQUIRED> <!ATTLIST pizza precio CDATA #REQUIRED> <!ATTLIST ingrediente nombre CDATA #REQUIRED>
Documento vlido Est bien formado y La estructura encaja con la declaracin del tipo de documento
Tecnologas Web
30
Tecnologas Web
31
SYSTEM (DTDs de mbito local) <?xml version=1.0?> <!DOCTYPE pizzas SYSTEM "pizzas.dtd"> <pizzas> ... </pizzas>
DTD externo
PUBLIC (DTDs compartidos por diversas organizaciones) <?xml version=1.0?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN http://www.w3c.org/TR/REC -html/strict .dtd>
Tecnologas Web
32
ELEMENT Elementos del documento XML ATTLIST Lista de atributos de un elemento ENTITY Entidad ( variable) NOTATION Definen tipos de contenidos Facilitan la inclusin de formatos binarios (imgenes, vdeos, s onidos, ...)
Tecnologas Web
33
DTD: Elementos
(?) = 0, 1 elemento (*) = 0 ms elementos (+) = 1 ms elementos (|) = alternativa (,) = secuencia EMPTY = vaco ANY = cualquier estructura de subelementos #PCDATA = cadena de caracteres analizados <!ELEMENT pizza (ingrediente*, inventor?)> <!ELEMENT servicio (domicilio | restaurante) > <!ELEMENT ingrediente EMPTY> <!ELEMENT inventor (#PCDATA)>
Tecnologas Web
34
DTD: Atributos
Atributos #REQUIRED Obligatorio #IMPLIED Opcional #FIXED Constante Tipos de datos CDATA = Cadena de caracteres NMTOKEN = Palabra (sin espacios) NMTOKENS = Lista de palabras Enumeracin separada por | ID = Nombre nico (sin duplicados) IDREF = Su valor debe apuntar a un ID
<pizza nombre=4 estaciones > <ingrediente nombre=Jamn /> <precio moneda=euros valor=7 /> </pizza> <persona cdigo=23 nombre =Juan /> <persona cdigo=35 nombre =Pepe /> <persona cdigo=37 nombre =Luis /> <dueo cdigo=35 /> <!ATTLIST dueo cdigo IDREF #REQUIRED> <impuesto tipo=IVA /> <!ATTLIST impuesto tipo CDATA #FIXED IVA>
<!ATTLIST pizza nombre CDATA #REQUIRED> <!ATTLIST ingrediente nombre CDATA #REQUIRED caloras CDATA #IMPLIED> <!ATTLIST precio moneda (euros|dlares) #REQUIRED valor CDATA #REQUIRED> <!ATTLIST persona cdigo ID #REQUIRED>
Tecnologas Web
35
DTD: Entidades
Entidades: Asignan nombres a ciertos elementos (similar a variables) Se denotan por &entidad; <!ENTITY mezcla Mezcla de 4 quesos>
Entidades predefinidas: Permiten incluir etiquetas sin analizar < < > > " & & '
Tecnologas Web
36
<pizzas> <pizza nombre=4 Quesos" precio=7"> <ingrediente nombre=Jamn /> <ingrediente nombre=Queso /> </pizza> ... </pizzas>
establecimiento. dtd
<personal> <trabajador nombre= Benito Alcaparra" > ... </trabajador> ... </personal>
establecimiento. xml
<!ELEMENT establecimiento ANY> <!ENTITY personal SYSTEM personal.xml> <!ENTITY pizzas SYSTEM pizzas.xml>
Tambin se pueden incluir archivos externos de formatos binarios <!NOTATION gif SYSTEM gifEditor.exe> <!ENTITY dibujo SYSTEM logotipo.gif NDATA gif>
Tecnologas Web
37
DTD: Entidades
Entidades parmetro: Permiten dar nombres a partes de un DTD Se denotan por %entidad;
<!ENTITY establecimiento (nombre,dueo?,calle,nmero?,ciudad,pas,cdigoPostal) > <!ENTITY persona (dni, nombre, calle,nmero?,ciudad,pas,cdigoPostal) >
<!ENTITY %localizacin calle,nmero?,ciudad,pas,cdigoPostal > <!ENTITY establecimiento (nombre,dueo?,%localizacin;)> <!ENTITY persona (dni, nombre, %localizacin;> Entidades externas: Permiten incluir elementos externos en una DTD Aplicacin: Dividir la definicin de una DTD en varios documentos
<!ENTITY %persona SYSTEM persona. dtd> <!ENTITY %establecimiento SYSTEM establecimiento. dtd> %persona; %establecimiento;
Tecnologas Web
38
Tecnologas Web
39
Atributos o Elementos?
Razones filosficas: Atributos: valores asociados con objetos sin identidad propia (edad) Subelementos : valores con identidad propia (fecha-nacimiento)
Tecnologas Web
40
Atributos o Elementos?
Pueden incluirse restricciones sobre su valor Ej. valor si o no Pueden definirse valores por defecto Pueden validarse los valores ID e IDREF Ocupan menos espacio Pueden definirse restricciones sobre espacios en blanco (NMTOKENS) Ms fciles de procesar (SAX y DOM) Acceso a entidades externas (datos binarios)
Soportan valores arbitrariamente complejos y repetidos Establecen un orden Soportan atributos de atributos Mayor flexibilidad ante modificaciones
Tecnologas Web
41
Espacios de Nombres
XML NameSpaces permite especificar espacios de nombres para evitar colisiones de identificadores
<establecimiento> <nombre> Pizzera Al Capone </nombre> <direccion>C/ Gnova N 3,Oviedo, Espaa</direccion> <telfono>985203040 </telfono> </establecimiento> <persona> <nombre> Vito Corleone</nombre> <telfono>985223344 </telfono> <dni> 98765432 </dni> </persona>
Tecnologas Web
42
Espacios de Nombres
Un alias se crea asignando un nombre a una URL El mbito del alias abarca al nodo y a sus hijos <alias:etiqueta xmlns:alias=direccion URL> <alias:subetiquetas /> </alias:etiqueta>
Espacio por defecto (no se pone alias) <etiqueta xmlns=direccion URL> <subetiquetas /> </etiqueta>
Tecnologas Web
43
Espacios de Nombres
<e:establecimiento xmlns:e=establecimiento.dtd xmlns:p=persona.dtd> <e:nombre>Pizzera Al Capone</e:nombre> <e:direccion>C/ Gnova N 3,Oviedo, Espaa</e:direccion> <e:telfono>985203040</e:telfono> <e:dueo> <p:persona> <p:nombre>Vito Corleone</p:nombre> <p:telfono>985223344</p:telfono> <p:dni> 98765432</p:dni> </p:persona> </e:dueo> </e:establecimiento>
Tecnologas Web
44
Espacios de Nombres
<e:establecimiento xmlns:e=establecimiento.dtd> <e:nombre>Pizzera Al Capone</e:nombre> <e:direccion>C/ Gnova N 3,Oviedo, Espaa</e:direccion> <e:telfono>985203040</e:telfono> <e:dueo> <p:persona xmlns:p=persona.dtd> <p:nombre>Vito Corleone</p:nombre> <p:telfono>985223344</p:telfono> <p:dni> 98765432</p:dni> </p:persona> </e:dueo> </e:establecimiento>
Tecnologas Web
45
Espacios de Nombres
<e:establecimiento xmlns:e=establecimiento.dtd> <e:nombre>Pizzera Al Capone</e:nombre> <e:direccion>C/ Gnova N 3,Oviedo, Espaa</e:direccion> <e:telfono>985203040</e:telfono> <e:dueo> <persona xmlns =persona.dtd> <nombre>Vito Corleone</nombre> <telfono>985223344</telfono> <dni> 98765432</dni> </persona> </e:dueo> </e:establecimiento>
Tecnologas Web
46
Limitaciones Empotrados en cdigo fuente Slo permiten navegacin en una direccin Slo conectan 2 recursos No especifican el comportamiento del navegador XLink + XPointer = Solucin aportada por XML
<patrocinadores xlink :href =patrocinadores.html xlink :role=mostrar lista de patrocinadores xlink :title=Lista de patrocinadores xlink :show=new xlink :actuate=onRequest/>
Tecnologas Web
47
Esquemas XML
Problemas de los DTDs Difciles de manipular (no son XML) No son extensibles (una vez definido, no es posible aadir nuevos vocabularios a un DTD) No soportan tipos de datos (ej. enteros, flotantes, etc.) XML Schema = Permite definir esquemas de documentos La sintaxis utilizada es XML (La sintaxis de los DTD no era XML!) Soporta la especificacin de tipos de datos y tipos definidos por el usuario Soporta chequeo de restricciones numricas
Tecnologas Web
48
pizzas.xsd
Esquemas XML
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs='http:// www.w3. org/2001/ XMLSchema'> <xs:element name="pizzas "> <xs:complexType> <xs:sequence> <xs:element ref ="pizza" minOccurs='1' maxOccurs ='unbounded'/> </xs:sequence> </xs:complexType> Permite especificar </xs:element > <xs:element name="pizza"> <xs:complexType> <xs:sequence> <xs:element ref ="ingrediente" minOccurs='1' maxOccurs='4' /> </xs:sequence> <xs:attribute name="nombre" type="xs:ID" use='required'/> <xs:attribute name="precio" type="xs:integer" use='required'/> </xs:complexType> </xs:element >
rangos de inclusin
<xs:element name="ingrediente"> <xs:complexType> <xs:attribute name="nombre" type="xs:string" use='required' /> pizzas.xml </xs:complexType> <pizzas xmlns :xsi="http://www.w3. org/2001/ XMLSchema-instance" </xs:element > xsi:noNamespaceSchemaLocation='pizzas.xsd'> </xs:schema> ... </pizzas>
Tecnologas Web
49
Documento XML
XSL-Formatting Objects (XSL-FO) Lenguaje que incluye instrucciones de formateo independientes del dispositivo HTML Documento FO PDF ...
Tecnologas Web
50
XSLT
El documento XML se puede asociar a una transformacin XSLT Algunos visualizadores, al recibir un documento XML, transforman el documento y visualizan el resultado
<?xml version=1.0?> <!DOCTYPE pizzas SYSTEM "pizzas.dtd"> <?xml-stylesheet type=text/xsl href =pizzas.xsl ?> <pizzas> ... </pizzas>
XSLT es un lenguaje declarativo (transforma un rbol en otro rbol) El programador incluye una serie de reglas de transformacin El procesador es el que se encarga de obtener el rbol y de escribir el resultado Las reglas se basan en la definicin de plantillas (templates ) Las plantillas utilizan sintaxis de XPath
Tecnologas Web
51
XSLT
<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> Patrn de encaje <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 >
Tecnologas Web
52
XSLT
El procesador XSLT recorre el rbol desde la raz Recorre los elementos padre antes que los hijos Para cada elemento, si existe una plantilla aplicable, se aplicay ya no se examinan ms elementos descendientes (salvo que se solicite) Principales Instrucciones <xsl:apply-templates select= Patrn de XPath> Solicita que contine aplicando plantillas <xsl:value-of select=Expresin de XPath /> Generar un valor a partir de la expresin <xsl:for-each select=Expresin de XPath /> Para iterar sobre la serie de valores de la expresin <xsl:copy-of select=Expresin de XPath /> Copiar nodos del rbol
Tecnologas Web
53
XPath
Expresiones de XPath a/b todos los <b> hijos directos de <a> a//b todos los <b> descendientes de <a> / nodo raz . nodo actual .. nodo padre del nodo actual * cualquier nodo a|b elementos <a> o <b> a/b[1] primer <b> hijo directo de <a> //b todos los <b> en cualquier parte del documento .//b todos los <b> descendientes del nodo actual a[@b] todos los <a> con el atributo b a[@b=hola] todos los <a> cuyo atributo b valga hola $a valor de la variable a XPath incluye funciones para manipular datos de tipo booleano, numrico y cadenas de caracteres
Tecnologas Web
54
XSLT
Instrucciones condicionales <xsl:if> <xsl:choose> <xsl:when> <xsl:otherwise> Condicional simple Condicional mltiple (case) Elementos del condicional mltiple Valor por defecto
<xsl:choose> <xsl:when test=$contador = 2>... <xsl:when test=$contador = 2>... <xsl:otherwise>... </xsl:choose>
Generacin de nodos XML <xsl:number> Aade un nmero <xsl:attribute> Aade un atributo <xsl:element> Aade un elemento <xsl:comment> Aade un comentario <xsl:processing-instruction> Genera una instruccin de procesamiento <xsl:text> Genera un nodo de texto
<xsl:element name=a> <xsl:attribute name=href > #<xsl:value-of select=@id> <xsl:value-of select =@nombre> </xsl:attribute> </xsl:element >
Tecnologas Web
55
XSLT
Otras instrucciones <xsl:variable> Declara una variable XSLT es un lenguaje declarativo No hay asignacin destructiva! J
<xsl:variable name=tamao>5 </xsl:variable> <xsl:if test= $tamao = 5 >. . . </xsl:if >
Clasificar nodos Incluir otra hoja de estilos Importar otra hoja Llamar a otra plantilla Declara el valor por defecto de un parmetro Asignar un valor a un parmetro
Tecnologas Web
56
XSLT: Ejemplo
Enumerar las pizzas con un ndice hipertextual, ordenarlas por precio y mostrar la media de los precios,
Tecnologas Web
57
XSLT: Ejemplo
<xsl:template match="/"> ... <body ><h1>Pizzas del Restaurante Al Capone</h1> <xsl:apply -templates mode="cabecera" /> Dos modos <xsl:apply -templates /> de recorrido </body ></html> </xsl:template> Numera las pizzas <xsl:template match="pizzas" mode="cabecera"> <div class="header">Tipos de pizza: Genera una lista de <xsl:for-each select="pizza"> enlaces de la forma <xsl:number value="position()" format ="1. "/> <a href =#P3>Margarita</a> <xsl:element name="a"> <xsl:attribute name="href ">#P<xsl:number level="single"/></xsl:attribute> <xsl:value-of select="@nombre"/></ xsl:element > | </xsl:for-each> </div><hr/> </xsl:template> ...
Tecnologas Web
58
XSLT: Ejemplo
<xsl:template match="pizzas "> <table border="1"><caption >Tipos de Pizzas</ caption> <tr><th>Pizza</ th><th>Ingredientes</ th><th>Precio</ th></ tr> Ordena las pizzas por precio <xsl:for-each select ="//pizza"> <xsl:sort data-type="number" select="@precio" /> <xsl:apply -templates select=". "/> </xsl:for-each> Calcula la media de los precios </table> <p>Media de precios = <xsl:value-of select="sum(//@precio) div count (//@precio)" /></p> </xsl:template> Genera referencias de la forma <xsl:template match="pizza"> <a name=P3>. . . <tr><td><xsl:element name="a"> <xsl:attribute name="name">P<xsl:number level="single"/></xsl:attribute> </xsl:element > <xsl:value-of select ="@nombre "/> </xsl:template>
Tecnologas Web
59
Tecnologas Web
60
Valoracin de XSLT
Es un lenguaje de programacin Turing-completo Lenguaje declarativo (sin asignacin destructiva) Admite recursividad, funciones de orden superior, evaluacin perezosa
The functional programming XSLT a proof through examples (D. Novatchev ) http:// www.xml.top/xsl/articles/fp
4 tipos de datos (enteros, booleanos, strings y conjuntos de nodos Sin chequeo esttico de tipos Seguridad? Eficiencia? (no son objetivos de diseo) Flexible: La sintaxis de XPath se adapta a posibles cambios en la estructura. No se valida el documento Bueno para hacer tareas sencillas rpidamente Empotrado en navegadores Los programas XSLT son documentos XML La sintaxis es poco amigable para el programador Necesidad de buenas herramientas de autor
Tecnologas Web
61
XBRL Contabilidad ebXML Negocios electrnicos (ebusiness) SyncXML Sincronizacin de dispositivos UPnP Plug and Play universal
Tecnologas Web
62
Tecnologas Web
63
Es posible crear formatos y vocabularios propietarios Puede fomentar la proliferacin de vocabularios especficos Bueno para texto, malo para datos binarios
<?xml version=1.0> <imagen formato=base64> DS34JSCDF029876D76523981DFNDF3F2134F5FD019A FGF23DAND345CD2135911943DCBKAPFGDAJJK32A10 .... </imagen>
64
Referencias
[Cardelli] Service Combinators for Web Computing http://www.luca.demon.co.uk/Bibliography.htm [Jwig] Jwig Java extensions for High Level Web Service Development http://www.brics.dk/JWIG/ [Labra] Tesis doctoral. Desarrollo modular de procesadores de lenguajes a partir de especificaciones semnticas reutilizables http://lsi.uniovi.es/~labra/Thesis.html [PlanX] Workshop on Programming Languages for XML http://www.research.avayalabs.com/user/wadler/planx/ [PCC] Proof carrying Code http://raw .cs.berkeley.edu/pcc.html [Rebol] Rebol Technologies http://www.rebol.com [Type] Type systems for resource bounded programming and compilation http://www.dcs.ed.ac.uk/home/resbnd/
Tecnologas Web
65
Seleccin de Enlaces
1. 2. 3. 4. 5. 6. Pgina del consorcio: http://www.w3c.org En espaol: http://www.it.uc3m.es/~xml/enlaces.html Especificacin anotada: http://www.xml.com/axml/testaxml.htm XML en industria: http://www.xml.org Artculos de XML: http://www.topxml.com Software de XML 1. http://www.xmlsoftware.com 2. http://www.xmlhack.com 3. http://www.garshol.priv.no/download/xmltools /
Tecnologas Web
66
Fin de la Presentacin
Tecnologas Web
67