Está en la página 1de 34

Tecnologas Web

Jose Emilio Labra Gayo Departamento de Informtica Universidad de Oviedo

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

Lenguajes para Internet: Esquema


Aspectos lingsticos Principios de diseo Tcnicas de especificacin Caractersticas Familias de lenguajes Lenguajes de dominio especfico Mquinas abstractas Lenguajes para Internet Lenguajes de propsito general Lenguajes de scripting Lenguajes de marcas: HTML, SGML, XML XML Definicin Diseo de vocabularios

Tecnologas Web

Aspectos lingsticos
Lenguaje = Instrumento de comunicacin Naturaleza diferente: Programador = Persona, Ordenador = mquina

El ordenador debe ejecutar las instrucciones del programa

El programador debe ser capaz de leer y comprender el programa

Int Suma(int x,int y) { read (x); read(y); write(x+y); }

Solucin de compromiso Legibilidad vs. Reconocimiento automatizado


Tecnologas Web

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

let x = 1 y=x z = let x = 2 in y + x in z

3 mbito esttico (Pascal, C, Java, etc.)

mbito dinmico (Lisp, TeX, etc.)

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

Lenguajes de Dominio especfico


Lenguajes cuyo objetivo es un dominio de problema concreto Algunas caractersticas: Lenguajes pequeos (conjunto limitado de abstracciones) Declarativos (lenguajes de especificacin) Objetivo = programacin por el usuario final Tcnicas: Lenguaje independiente (requieren un intrprete o compilador) Empotrados en lenguajes de propsito general Preprocesamiento (macros) Intrpretes extensibles (es posible modificar el intrprete para aceptar nuevos lenguajes) Mltiples ejemplos: AutoCAD, Word, Excell, Emacs , etc., etc.
Batch No interaccin Mens Interaccin Dirigida por programador Ventanas Interaccin dirigida por usuario
Tecnologas Web

Evolucin

Lenguaje especfico Aplicacin dirigida por usuario 16

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

Lenguajes para Internet: Propsito general

18

Lenguajes para Internet: Propsito general


C# Lenguaje OO basado en clases Chequeo esttico con lagunas Gestin de memoria automtica Compilacin basada en mquina abstracta (eficiencia?) En la actualidad: Dependiente de plataforma .Net (Microsoft) Python Lenguaje OO interpretado Chequeo dinmico de tipos Desarrollo de Prototipos Perl Lenguaje imperativo interpretado sin chequeo de tipos Desarrollo de prototipos (sintaxis crptica) Facilidad para tratamiento de strings, expresiones regulares, etc. Otros: Pascal (Delphi), Haskell, Prolog, etc.

Tecnologas Web

19

Lenguajes para Internet Computacin en cliente


Etiqueta <script> de HTML JavaScript, Jscript, ECMAScript Lenguaje basado en objetos Interpretado por el visualizador (entorno = objetos del visualizador) No tiene chequeo de tipos Otros: VBScript (Basic), HaskellScript (Haskell), ... Acceso a los elementos del visualizador (HTML dinmico) Problema: Dependencia de posibilidades de mquina cliente COM y ActiveX (Windows) permiten desarrollar otros lenguajes de Script ActiveX Script permite crear escritos - independiente del lenguaje Encapsular intrprete como objeto COM Soportar los interfaces IActiveScript e IActiveScriptParse

Tecnologas Web

20

Lenguajes para Internet Computacin en servidor


Computacin en servidor CGI (es un protocolo independiente del lenguaje) Permite realizar computaciones dinmicas en mltiples lenguajes Lenguajes interpretados (Perl, Python) vs. compilados (C,C++) PHP Incorporado por el servidor Fcil acceso a bases de datos Sin chequeo de tipos Lenguajes de propsito general empotrados en HTML JSP (Java) ASP (Basic)

Tecnologas Web

21

Lenguajes para Internet: Computacin global

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

Lenguajes de Marcas: SGML y XML


XML Desarrollado por el consorcio Web (1995) Versin simplificada de SGML Objetivos: Standard de intercambio de informacin a travs de la Web Formato abierto, independiente de la plataforma Permite utilizar vocabularios especficos de una aplicacin Permite la auto-descripcin de dichos vocabularios (documentos auto-descritos) Las aplicaciones pueden descubrir el formato de la informacin y actuar en consecuencia Vocabularios basados en XML http://www.oasis -open.org/cover

Tecnologas Web

25

HTML como formato de representacin?


<html > <head> <title>Pizzeria Al Capone</title> </head> <body bgcolor="blue" text="yellow ">
En HTML, las marcas tienen un significado predefinido

<h1>Pizzera Al Capone</h1> <table> <caption>Lista de Pizzas</caption> <tr> <td>Barbacoa</td> <td>Mozzarella, Queso, Bacon</td> <td>7&euro;</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, . . .

Posteriormente, podra representarse en una tabla...

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

<pizza nombre=Barbacoa precio=8> <ingrediente nombre=Jamn /> . . . </pizza>

En caso de un elemento vaco puede usarse la sintaxis:<etiqueta />


<ingrediente nombre=Jamn caloras=8></ingrediente>

<ingrediente nombre=Jamn caloras=8 />

Tecnologas Web

28

Definicin de XML bien formado


Documento bien formado
Sigue las reglas sintcticas Importante: Contiene un nico elemento raz Todas las etiquetas estn 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>

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

Definicin de XML vlido


Se puede incluir una declaracin del tipo de documento

<?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

Otras caractersticas de XML


Comentarios <!-- el texto de un comentario no es analizado --> Secciones CDATA Si se desea introducir cdigo sin analizar
<codigo_HTML> <html> <body >Hola</ body > </html> </codigo_HTML> <codigo_HTML> <![CDATA[ <html> <body >Hola</ body > </html> ]]> </codigo_HTML>

Tecnologas Web

31

Declaracin de tipo de documento (DTD)


DTD interno <?xml version=1.0?> <!DOCTYPE pizzas [ <!ELEMENT pizzas (pizza*)> ... ]> <pizzas>. . . </pizzas>

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

DTD: Tipos de declaraciones

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>

<pizza nombre=4 Quesos" precio=7"> <ingrediente nombre=&mezcla;" /> </pizza>

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

Tecnologas Web

36

DTD: Entidades externas


Permiten usar archivos externos (Incluir otros documentos XML)
pizzas.xml personal.xml

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

<establecimiento nombre=Pizzera Al Capone> &personal; &pizzas; </establecimiento>

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

XML: Diseo de vocabularios


Separacin tradicional de dos mundos Sistemas orientados a Datos Informacin uniforme y fuertemente estructurada (ej. Tablas) Mucha cantidad de informacin repetida Objetivo: Procesamiento eficiente (Almacenes de datos) Sistemas orientados a Documentacin Informacin poco uniforme y entrelazada (ej. Libros) No existe un patrn uniforme Objetivo: Comunicacin, Presentacin (Mensajes) XML: Informacin semi-estructurada (Lugar intermedio) Estructuras jerrquicas entrelazadas Modularizar el diseo Descomponer en diferentes modelos Utilizar vocabularios existentes

Tecnologas Web

39

XML: Diseo de vocabularios


Representacin de propiedades
<pizza nombre="Margarita" precio=6 /> <pizza> <nombre>Margarita </nombre> <precio>6</precio> </pizza>

Atributos o Elementos?

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

Orgenes (SGML): Atributos: meta-informacin (informacin sobre el contenido) Subelementos : Contenido

Tecnologas Web

40

XML: Diseo de vocabularios


Representacin de propiedades
<pizza nombre="Margarita" precio=6 /> <pizza> <nombre>Margarita </nombre> <precio>6</precio> </pizza>

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>

...y si queremos aadir informacin del dueo?


<establecimiento> <nombre> Pizzera Al Capone </nombre> <direccion>C/ Gnova N 3,Oviedo, Espaa</direccion> <telfono>985203040 </telfono> <dueo> <persona> <nombre> Vito Corleone</nombre> <telfono>985223344 </telfono> <dni> 98765432 </dni> </persona> </dueo> </establecimiento> <nombre> se refiere a persona o a establecimiento?

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

Permite diferenciar nombres de persona y establecimiento

<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

Enlaces y referencias en XML


Enlaces de HTML
<a href =http://www.uniovi.es>Universidad de Oviedo</a>

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

Permite especificar tipos


Asociacin del fichero XML con el esquema

<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

Transformacin de documentos XML


XSL (eXtensible Stylesheet Language) XSL Transformations (XSLT) Lenguaje de transformacin de documentos Utiliza XPath para hacer referencias a partes de un documento
Procesador XSLT Resultado XML Fichero XSL XSLT XSLT HTML WML HTML XSLT FO PDF

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

<xsl:template match=valor a encajar> cdigo de salida </xsl:template>

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

Valores que se incluyen en resultado

Referencia a valor de atributo

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 >

<persona id=id1 nombre=pepe />

<a href =#id1>pepe</a>

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 >

<xsl:sort> <xsl:include> <xsl:import> <xsl:call-template> <xsl:param> <xsl:with-param>

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,

Enumerar las pizzas

Incluir un ndice al principio

Ordenar por precio

Calcular 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

XSLT: Otro ejemplo


<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> fact x = if x = 0 then 1 else x * fact (x 1) <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>

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

Vocabularios especficos de XML


MathML Visualizacin de ecuaciones matemticas) SVG Grficos vectoriales SMIL Presentaciones multimedia P3P Descripcin de caractersticas de privacidad WML Similar a HTML para telfonos mviles VoiceML Portales basados en voz XML Signature Firma de recursos Web XKMS Firmas y criptografa XQuery
Consultas de documentos (Bases de datos)

XBRL Contabilidad ebXML Negocios electrnicos (ebusiness) SyncXML Sincronizacin de dispositivos UPnP Plug and Play universal

Tecnologas Web

62

Discusin sobre XML: Ventajas


Es un formato estructurado Contiene informacin y meta-informacin Ha sido diseado especficamente para Internet Soportado por visualizadores y servidores Numerosas herramientas de procesamiento Legible por personas humanas Admite la definicin de vocabularios especficos Separa contenido del procesamiento y visualizacin Aumenta la seguridad mediante la validacin de documentos Formato abierto, respaldado por numerosas organizaciones Una vez definido un DTD comn, facilita intercambio de informacin

Tecnologas Web

63

Discusin sobre XML: Inconvenientes


Puede requerir demasiado espacio, ancho de banda y tiempo de procesamiento Documentos largos con mucha informacin redundante Es una sintaxis de documentos, no un lenguaje de programacin
int main(void) { printf (Hola); return 0; } <function name=main type=int> <arg type=void /> <call function=printf > <param>Hola</param> </call> <return value=0/> </function>

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>

Poco eficiente como lenguaje de almacenamiento de bases de datos


Tecnologas Web

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

También podría gustarte