5.1 Introducción a XSL



Documentos relacionados
Transformación de documentos XML con

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

1 Introducción a XML

1.1.- Introducción a la Web Vemos una introducción al medio donde se encajan los lenguajes que vamos a tratar: la web.

CAPAS O CONTENEDORES EN HTML. ETIQUETAS DIV Y SPAN. EJEMPLOS. MAQUETAR O DAR ESTRUCTURA A LAS PÁGINAS WEB. (CU00726B)

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 7

CÓMO CREAR NUESTRO CATÁLOGO

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

2 Estructura de un Documento XML

La ventana de Microsoft Excel

Centro de Capacitación en Informática

Instructivo Asesoría Básica Comunidad Virtual SharePoint 2010

3.1 Tipos de DTDs. ! Si queremos validar un documento XML (para comprobar si cumple las normas de un dialecto) tendremos que validarlo contra el DTD.

Transformación de documentos : XSLT

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico

Formularios HTML. Elementos de Programación y Lógica

Centro de Capacitación en Informática

LA WEB 2.0 (III): RSS Y GOOGLE READER

Plantilla de texto plano

El proceso de edición digital en Artelope y CTCE

CÓMO CREAR UN SITIO WEB CON GOOGLE SITES

Manual Usuario Wordpress. Índice

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente.

RESOLUCIÓN DE ERRORES EN MOODLE CAMPUS VIRTUAL-BIRTUALA UPV-EHU

Hojas de Estilos XSLT en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es

EJEMPLO DE APERTURA Y CIERRE DE UNA ETIQUETA.

ZCARTAS: Iniciación a la suma y resta de números enteros Introducción Actividad 1: Escenario con cartas numeradas desde -2 hasta 2...

Un kilobyte (KB) son 1024 bytes, un Megabyte (MB) son 1024 KB, un Gigabyte son 1024 Mb

MATERIAL 2 EXCEL 2007

NORMA (SEPA) 22/11/2013

2. ABRIR UN NUEVO DOCUMENTO DE TRABAJO

Configuración de DNS seguros

PrefDataImporter Manual de Usuario Noviembre de 2013

PRÁCTICAS DE GESTIÓN GANADERA:

CÓMO DESCARGAR E INSERTAR O INSTALAR PLUGINS O BOTONES DE FACEBOOK EN NUESTRA PÁGINA WEB: ME GUSTA. (DV00503A)

Estructuras de Datos y Algoritmos. Árboles de Expresión

CALCULAR NOTAS CON EXCEL

Tienda Virtual Synergy (Parte 2)

MANUAL DE USUARIO DEL SISTEMA PARA EL REDACTOR

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Antes de construir tu base de datos es conveniente saber que tipos de datos vas a almacenar y como distribuirlos.

Manual para configurar nuestra privacidad en Facebook

Caso práctico de Cuadro de Mando con Tablas Dinámicas

Un Navegador es un programa que nos conecta a Internet y nos permite organizar nuestro

Reservas - Rooming List

TUTORIAL SOBRE EL MANEJO DE LA OFICINA VIRTUAL PARA LA REMISIÓN DE INFORMES DE DOCENCIA VIRTUAL VÍA ADMINISTRACIÓN ELECTRÓNICA

RECUPERAR DATOS DE UN FORMULARIO HTML USANDO PHP. USO DE $_GET. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00833B)

InfoPath forma parte del paquete ofimático de Microsoft desde la versión XP (2003).

NemoTPV SAT Manual de usuario 1. NemoTPV SAT APLICACIÓN DE GESTIÓN DE SERVICIO TÉCNICO PARA PUNTOS DE VENTA DE EUSKALTEL

A25. Informática aplicada a la gestión Curso 2005/2006 Excel Tema 7. Funciones avanzadas de Excel II

FeriaOnline.com C/Llamaquique Nº 4 Tfno: Oviedo mail: info@feriaonline.com Url:

Guía de usuario web. [EL RECUERDO DE LA TIERRA Y EL AMOR A NUESTRA VIRGEN DEL MAR]

Impress : Programa de presentaciones de OpenOffice.

5.2.1 La Página Principal

Manual para la utilización de PrestaShop

Comercial Cartas de Fidelización

DESCARGA E INSTALACIÓN DE LA DOCUMENTACIÓN PARA LAS CLASES DEL API DE JAVA. CONSULTAR EN LOCAL O EN INTERNET? (CU00910C)

CÓMO CREAR UNA PÁGINA WEB v.1

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

- Dirigido a Centros Docentes- Versión 01-23/03/2010

Manual de usuario de Solmicro BI. Página 1

Manual de OpenOffice Impress

Ejercicio Nº 3: Realizar aumentos en una Tabla de Sueldos

Manual de adminitración web

Luis Eduardo Barón Bienvenidos al Módulo N. 3 de Internet Para Emprendedores. Yo soy Luis Eduardo Barón. Álvaro Mendoza Y yo soy Álvaro Mendoza.

Útil cuando tenemos que reinstalar en varios equipos iguales lo mismo.

DIPLOMADO: LA DOCENCIA EN INTERNET

Fuentes de información y plataformas de almacenamiento de información P08/93150/01582

Configuración Global de Joomla

MANUAL PLATAFORMA SMSWORLD

Módulo III. Aprendizaje permanente Tema 4: Aprendizaje de actividades laborales Entrevista. El papel de las familias como impulsoras del empleo

Servicio de estadísticas de Alojamiento Fecha de revisión: 19/09/2005

PASOS PARA CREAR UNA PÁGINA WEB

Otros tipos de Consultas

Manual de usuario. Tramitación de inspecciones periódicas de ascensores: La visión de las empresas conservadoras

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

XML. Introducción. Cómo se usa? XML Tree. Sintaxis XML

Módulo 8: Ofimática básica. Unidad didáctica 4: Introducción y modificación de datos. Access

IVOOX. 1º.-Subir y gestionar archivos.

Proyectos de Innovación Docente

Reconocimiento de Créditos Automatizado. Módulo de Gestión

SECRETARÍA VIRTUAL Perfil Ciudadano

ESTRUCTURAS CONDICIONALES EN PHP: SWITCH, CASE, BREAK. EJEMPLOS DE USO Y EJERCICIOS RESUELTOS. (CU00820B)

DreamWeaver. CS5 y CS6. Cursosindustriales. Curso de DreamWeaver CS6 1

Creación de una página web accesible sencilla

Desarrollo Web en Entorno Servidor

Exportación e Importación horarios XML

Cuestionario sobre marketing 2.0

PRÁCTICA 1: Optimización con Excel 2010

Páginas web ::: Hojas de estilo CSS Diseño de materiales multimedia. Web Hojas de estilo CSS

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

Combinar comentarios y cambios de varios documentos en un documento

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7

Transcripción:

5.1 Introducción a XSL Añadir Forma al Contenido (I)! Un documento XML que cumple las normas del dialecto ListaML: <listas> <lista nombre= ESIDE-TIM desc= Lista de TiM > <subs mail= 1jolopez@rigel.deusto.es /> <subs mail= 3jugonza@rigel.deusto.es /> </lista> <lista nombre= AMIGOS desc= Lista de amigos > <subs mail= colegui@mixmail.com /> <subs mail= compi@hotmail.com /> <subs mail= amiguete@wanadoo.es /> </lista> </listas> 2002 Borja Sotomayor 1

Añadir Forma al Contenido (II)! Es un documento XML bien formado y válido... Genial!! Sin embargo, si intentamos visualizar este documento en Internet Explorer, en Mozilla, etc. lo único que veremos será... el documento XML!! Según el navegador, a veces veremos el contenido de las etiquetas del documento.! Por qué? Añadir Forma al Contenido (III)! El navegador web reconoce HTML y XHTML.! P.ej.: Sabe que cuando se encuentra con una etiqueta <table> tiene que empezar a dibujar una tabla.! El navegador web no reconoce las etiquetas de nuestro lenguaje (<lista> <subs> le suenan a Chino y las ignora)! Cómo podemos conseguir que el navegador web reconozca nuestro dialecto y lo visualice de una cierta manera? (p.ej. en una tabla) 2002 Borja Sotomayor 2

Añadir Forma al Contenido (IV)! Una posible solución " Cada vez que se crea un nuevo dialecto XML, se notifica a los fabricantes de navegadores web para que incluyan en su producto un motor de visualización.! Esto, obviamente, es una locura. El numero de dialectos XML existentes es demasiado grande y no se puede estar al tanto de todos ellos. Añadir Forma al Contenido (V)! Solución: encargarnos nosotros mismos de aplicar una forma al contenido. Es decir, indicar de alguna manera al navegador web cómo debe presentarse visualmente la información contenida en el documento XML (por pantalla, la impresora, etc.). 2002 Borja Sotomayor 3

Añadir Forma al Contenido (VI)! Sin embargo, hay que tener en cuenta una cosa: la mayoría de los dialectos XML son dialectos orientados al contenido. Es decir, almacenan únicamente datos y ninguna información sobre la presentación de los datos. Añadir Forma al Contenido (VII)! Entonces... cómo añadimos esta información sobre presentación (la forma) sin contaminar el documento XML?! El documento XML sólo debe almacenar el contenido!!! Solución " XSL (extensible Stylesheet Language) 2002 Borja Sotomayor 4

XSL (I)! XSL es una tecnología XML que se compone de dos dialectos XML:! XSLT! XSL-FO! Cómo nos ayuda cada una a añadir forma a nuestro contenido? XSL (II)! XSLT " Es un lenguaje que nos permite transformar un documento XML de un dialecto a otro.! Podemos transformar un dialecto XML orientado al contenido (ListaML) a un dialecto orientado a la presentación (XHTML, por ejemplo, para presentación en la web) 2002 Borja Sotomayor 5

XML (ListaML) XML (XSLT) Hoja de Transformación XML (XHTML) El navegador web no sabe visualizarlo El navegador web sabe visualizarlo! La Hoja de Transformación es un documento XML en el que se especifican unas transformaciones utilizando el lenguaje XSLT.! Podemos especificar unas transformaciones que convierten un documento ListaML en un documento XHTML.! Para llevar a cabo dicha conversión aplicamos la hoja de transformación al documento ListaML. XSL (III)! Ojo! Se ha hablado mucho de que el navegador web sabe o no sabe visualizar un documento. Los navegadores web no son los únicos programas capaces de visualizar dialectos XML (de hecho, los últimos navegadores web sólo visualizan dialectos XML orientados a web, como XHTML).! El termino correcto es agente de usuario (User Agent) o agente de visualización. 2002 Borja Sotomayor 6

XSL (IV)! Por ejemplo, hay agentes que visualizan CML (Chemical Markup Language) o MathML (formulas matemáticas). Igual que el navegador web, estos agentes no entenderían nuestro lenguaje ListaML ( pero tampoco entenderían XHTML!) XSL (V)! XSL-FO " Es un lenguaje que nos permite especificar directamente el formato de un documento:! Páginas, tablas, cabeceras, etc.! Obviamente, es un dialecto XML orientado a la presentación. 2002 Borja Sotomayor 7

5.2 XSLT: Introducción Introducción (I)! Ejemplo. Partimos del siguiente documento ListaML: <listas> <lista nombre= ESIDE-TIM > <subs mail= 1jolopez@rigel.deusto.es /> <subs mail= 3jugonza@rigel.deusto.es /> </lista> <lista nombre= AMIGOS > <subs mail= colegui@mixmail.com /> <subs mail= compi@hotmail.com /> <subs mail= amiguete@wanadoo.es /> </lista> </listas> 2002 Borja Sotomayor 1

Introducción (II)! Ya hemos dicho antes que este documento no puede ser visualizado en un navegador web (en general: en cualquier User Agent que no entienda el dialecto ListaML )! Si lo transformamos a XHTML, sí podríamos visualizarlo en un navegador web. Introducción (III)! Cómo hacemos esta transformación? Especificando reglas de transformación.! Regla de transformación: Especifica los cambios que han de realizarse a una entidad A para que se convierta en una entidad B.! Para transformar nuestro documento ListaML a XHTML podríamos especificar 3 reglas de transformación. 2002 Borja Sotomayor 2

Queremos que el resultado de toda la transformación sea un documento XHTML. Por lo tanto, habrá que transformar el elemento raíz <listas> en algo que se parezca a un documento XHTML: <listas>... </listas> <html> <head> <title>listas de Distribucion</title> </head> <body>... </body> </html> 1ª Regla de Transformación: El elemento <listas> pasa a convertirse en el esqueleto de un documento XHTML. Ojo! Si sólo aplicamos la 1ª regla obtenemos esto: <html> <head> <title>listas de Distribucion</title> </head> <body> <lista nombre= ESIDE-TIM > <subs mail= 1jolopez@rigel.deusto.es /> <subs mail= 3jugonza@rigel.deusto.es /> </lista> <lista nombre= AMIGOS > <subs mail= colegui@mixmail.com /> <subs mail= compi@hotmail.com /> <subs mail= amiguete@wanadoo.es /> </lista> </body> </html> Sólo hemos transformado el elemento <listas>! El resto del documento no ha sido modificado (se ha introducido tal cual en el esqueleto HTML ). Obviamente, esto todavía no es un documento XHTML. Hay que aplicar más reglas de transformación. 2002 Borja Sotomayor 3

Si queremos que las listas se presenten en una tabla XHTML, podemos transformar el elemento <lista> en una tabla cuya primera fila contiene el nombre de la lista. <lista nombre= nombre_lista >... </lista> <table border="1"> <tr><th>lista nombre_lista</th></tr>... </table> 2ª Regla de Transformación: El elemento <lista> pasa a convertirse en el esqueleto de una tabla XHTML. Si aplicamos la 1ª y 2ª regla tenemos lo siguiente: <html> <head> <title>listas de Distribucion</title> </head> <body> <table border="1"> <tr><td>lista ESIDE-TIM</td></tr> <subs mail= 1jolopez@rigel.deusto.es /> <subs mail= 3jugonza@rigel.deusto.es /> </table> <table border="1"> <tr><td>lista AMIGOS</td></tr> <subs mail= colegui@mixmail.com /> <subs mail= compi@hotmail.com /> <subs mail= amiguete@wanadoo.es /> </table> </body> </html> 2002 Borja Sotomayor 4

Si hemos transformado el elemento <lista> en el esqueleto de una tabla XHTML, entonces tiene sentido que el elemento <subs> sea transformado en filas para esa tabla. <subs mail= dir_mail /> <tr> <td>dir_mail</td> </tr> 3ª Regla de Transformación: El elemento <subs> pasa a convertirse en una fila de una tabla XHTML. Finalmente, si aplicamos todas las reglas: <html> <head> <title>listas de Distribucion</title> </head> <body> <table border="1"> <tr><td>lista ESIDE-TIM</td></tr> <tr><td>1jolopez@rigel.deusto.es</td></tr> <tr><td>3jugonza@rigel.deusto.es</td></tr> </table> <table border="1"> <tr><td>lista AMIGOS</td></tr> <tr><td>colegui@mixmail.com</td></tr> <tr><td>compi@hotmail.com</td></tr> <tr><td>amiguete@wanadoo.es</td></tr> </table> </body> </html> Un documento XHTML válido y bien formado! 2002 Borja Sotomayor 5

Introducción (III)! La transformación que hemos hecho paso a paso en este ejemplo la podemos hacer con XSLT.! XSLT nos permite especificar formalmente las reglas de transformación.! Las reglas de transformación estarán en un documento llamado hoja de transformación. Introducción (IV) XML (ListaML) Regla 1 Regla 2 Regla 3 Hoja de Transformación XML (XHTML) El navegador web no sabe visualizarlo El navegador web sabe visualizarlo! La hoja de transformación es un documento XML ( no olvidemos que XSLT también es un dialecto XML!) 2002 Borja Sotomayor 6

Introducción (V)! Para vincular una hoja de transformación a un documento XML tenemos que añadir la siguiente instrucción de procesamiento en el documento XML: <?xml-stylesheet type= text/xml href= URL?> Introducción (VI)! En la Web, la transformación la puede realizar:! El servidor web! El cliente (el navegador web)! Es preferible que se encargue el servidor web, ya que no todos los navegadores web están totalmente preparados para realizar transformaciones XSLT. 2002 Borja Sotomayor 7

Aplicaciones de XSLT (I)! XSLT es un lenguaje muy potente.! Curiosidad: Se ha demostrado que XSLT es un lenguaje Turing-Completo.! Pueden especificarse transformaciones muy complejas.! Las transformaciones que hemos hecho en el ejemplo no son más que la punta del iceberg. Aplicaciones de XSLT (II)! XSLT tiene principalmente tres aplicaciones:! XML contenido " XML presentación Convertir de un dialecto XML orientado al contenido a otro orientado a la presentación. Lo que conseguimos es añadir forma al contenido. Es lo que hemos hecho en el ejemplo. De cara a la Web, es la principal aplicación de XSLT. 2002 Borja Sotomayor 8

Aplicaciones de XSLT (III)! XML contenido " XML contenido XML se utiliza mucho como soporte para almacenar datos (sin que necesariamente luego tengan que ser presentados visualmente). Es una aplicación inesperada de XML, pero que está cobrando mucha importancia y protagonismo. Por eso mismo, resulta interesante poder convertir un dialecto orientado al contenido a otro dialecto también orientado al contenido. Aplicaciones de XSLT (IV) Ejemplo: Supongamos que una compañía con la que trabajamos almacena la información sobre sus listas de distribución utilizando un dialecto XML llamado DistroListML. Con XSLT podemos crear una hoja de transformación que convierta nuestros documentos ListaML a DistroListML. De esta manera, las dos compañías consiguen compartir datos fácilmente. 2002 Borja Sotomayor 9

Aplicaciones de XSLT (V)! XML " No XML Podemos utilizar XSLT para convertir un documento XML (orientado al contenido o a la presentación) en un documento no-xml. Por ejemplo, utilizando XSLT podemos convertir XML a:! Imágenes 2D y 3D! Documentos PDF! Código fuente de un programa! Formatos ad hoc Estas hojas de transformación (sobre todo las que convierten un documento XML en una imagen) son bastante complicadas y difíciles de programar. 2002 Borja Sotomayor 10

5.3 XSLT: Estructura Básica Elemento Raíz (I)! XSLT es un dialecto XML.! Hoja de Transformación " Un documento XML que cumple las normas del dialecto XSLT.! El elemento raíz de este documento XML es: <xsl:stylesheet>... </xsl:stylesheet> 2002 Borja Sotomayor 1

Elemento Raíz (II)! El elemento raíz tiene dos atributos obligatorios:! version= numero_version! Actualmente sólo hay tres posibles números de versión: 1.0, 1.1, y 2.0! xmlns:xsl= http://www.w3.org/1999/xsl/transform! El valor de este atributo debe escribirse exactamente así. De lo contrario, la hoja de transformación no funcionará. Reglas de Transformación (I)! El elemento raíz puede contener varios `elementos de primer nivel.! El más importante es <xsl:template>... </xsl:template>! Cada elemento xsl:template es una regla de transformación. 2002 Borja Sotomayor 2

Reglas de Transformación (II)! El elemento xsl:template tiene un atributo match con el que especificamos qué debe transformar la regla.! Por ejemplo: <xsl:template match= lista >... </xsl:template> es una regla de transformación para el elemento lista Reglas de Transformación (III)! Cuando el procesador XSLT se encuentra en el documento XML un elemento que cumpla la condición especificada en el match, lo substituye por lo que sea que haya dentro del <xsl:template>.! El atributo match toma el valor de una dirección XPath. 2002 Borja Sotomayor 3

<tienda> <articulo precio= 35000 >Impresora</articulo> <articulo precio= 20000 >Disco Duro</articulo> <articulo precio= 47000 >Monitor</articulo> </tienda> + <xsl:stylesheet... > <xsl:template match= articulo > Esto es un articulo </xsl:template> </xsl:stylesheet> = Esto es un articulo Esto es un articulo Esto es un articulo Todos los elementos <articulo> son substituidos por el texto Esto es un articulo El Procesador XSLT (I)! Pero si yo tengo el siguiente documento XML: <cineasta nombre= Woody Allen > <peliculas>... </peliculas> <influencias> <cineasta nombre= Ingmar Bergman /> <cineasta nombre= Groucho Marx /> </influencias> </cineasta> y defino una regla de transformación con match= cineasta... qué elementos serán transformados? 2002 Borja Sotomayor 4

El Procesador XSLT (II)! Todos?! El primer elemento (Woody Allen)?! Los últimos (Bergman + Marx)?! match= cineasta? Si cineasta es una dirección XPath, Cual es el contexto?! Para resolver este tipo de problemas, conviene saber como aplica exactamente las reglas de transformación el procesador XSLT. El Procesador XSLT (III)! La transformación del documento es un proceso recursivo.! Primero intenta transformar el elemento raíz. Si existe una regla de transformación definida para el elemento raíz, la aplica. Si no aplica una regla por defecto, e intenta transformar a los hijos del elemento raíz. 2002 Borja Sotomayor 5

El Procesador XSLT (IV)! Por cada hijo, si se ha definido una regla de transformación, se aplica. Si no, aplica una regla por defecto, e intenta transformar a los hijos del elemento. Este proceso se repite hasta que se agotan los hijos.! Ojo! Si un elemento efectivamente tiene definida una regla de transformación, ésta se aplica y los hijos no son transformados a no ser que lo solicitemos explícitamente. Informalmente, el algoritmo que sigue es: función Transformar(nodo) { Si existe regla de transformación para nodo en contexto entonces contexto # nodo Aplicar regla de transformación Si no contexto # nodo Aplicar regla por defecto Por cada hijo de nodo hacer Transformar(hijo) fin Por cada fin Si } main() { contexto # Nodo raíz Transformar(contexto) } Ojo! La expresión contexto # nodo no es estrictamente correcta. En XSLT, el contexto no depende exclusivamente del nodo actual sino de más parámetros, especialmente cuando se tiene que determinar si existe regla de transformación para nodo en contexto. Sin embargo, en la mayoría de los casos este algoritmo es válido. 2002 Borja Sotomayor 6

<cineasta nombre= Woody Allen > <peliculas>... </peliculas> <influencias> <cineasta nombre= Ingmar Bergman /> <cineasta nombre= Groucho Marx /> </influencias> </cineasta> Si definimos una regla de transformación para cineasta entonces sólo será transformado el elemento raíz cineasta. Sus hijos serán ignorados. 2002 Borja Sotomayor 7

5.4 XSLT: Instrucciones Básicas Instrucciones XSLT (I)! Antes hemos visto una regla de transformación muy sencilla: <xsl:stylesheet... > <xsl:template match= articulo > Esto es un articulo </xsl:template> </xsl:stylesheet>! Obviamente, en una transformación no vamos a limitarnos a sustituir elementos por texto. Querremos hacer cosas como:! Acceder al contenido del elemento.! Acceder a los atributos del elemento.! Decidir si queremos transformar también los hijos. 2002 Borja Sotomayor 1

Instrucciones XSLT (II)! Esto se consigue con las instrucciones XSLT, que están contenidas dentro de las reglas de transformación (<xsl:template>) xsl:value-of (I)! Para mostrar el texto de un elemento, el valor de un atributo, etc. utilizamos <xsl:value-of select= exp_xpath />! exp_xpath es una expresión XPath (no necesariamente tiene que devolver un nodo)! Ojo! Si exp_xpath devuelve un nodo, entonces el texto que aparecerá en el documento resultante será el valor del nodo.! Si devuelve varios nodos, solo se tiene en consideración el primer nodo. 2002 Borja Sotomayor 2

xsl:value-of (II)! Valores! Elemento: Concatenación de el valor de sus nodos texto y de los nodos texto de sus descendientes. La concatenación se realiza tal cual aparece en el documento XML original.! Nodo Raíz: Valor del elemento raíz.! Atributo: El propio valor del atributo. xsl:value-of (III)! Comentarios: El texto contenido entre <! y -->! Instrucciones de proceso: El texto contenido entre <? y?> pero sin el nombre de la instrucción de proceso. 2002 Borja Sotomayor 3

<tienda> <articulo precio= 35000 >Impresora</articulo> <articulo precio= 20000 >Disco Duro</articulo> <articulo precio= 47000 >Monitor</articulo> </tienda> + <xsl:stylesheet... > <xsl:template match= articulo > <xsl:value-of select=. /> </xsl:template> </xsl:stylesheet> = Impresora Disco Duro Monitor Todos los elementos <articulo> son substituidos por su valor ( ojo con el contexto!!) <tienda> <articulo precio= 35000 >Impresora</articulo> <articulo precio= 20000 >Disco Duro</articulo> <articulo precio= 47000 >Monitor</articulo> </tienda> + <xsl:stylesheet... > <xsl:template match= articulo > <xsl:value-of select= @precio /> </xsl:template> </xsl:stylesheet> = 35000 20000 47000 Todos los elementos <articulo> son substituidos por el valor de su atributo precio 2002 Borja Sotomayor 4

xsl:value-of (IV)! Y si queremos insertar un valor dentro de un atributo? Por ejemplo: <tienda> <articulo>impresora</articulo> <articulo>disco Duro</articulo> <articulo>monitor</articulo> </tienda> <tienda> <articulo nombre= Impresora /> <articulo nombre= Disco Duro /> <articulo nombre= Monitor /> </tienda> Cómo? xsl:value-of (V)! En principio, se nos podría ocurrir hacerlo así: <xsl:stylesheet... > <xsl:template match= articulo > <articulo nombre= <xsl:value-of select=. /> > </xsl:template> </xsl:stylesheet> 2002 Borja Sotomayor 5

xsl:value-of (VI)! No! Hay que poner la expresión XPath entre corchetes y dentro del valor del atributo: <xsl:stylesheet... > <xsl:template match= articulo > <articulo nombre= {.} /> </xsl:template> </xsl:stylesheet> xsl:apply-templates (I)! Para alterar el flujo de la transformación, en una regla podemos pausar la transformación actual y aplicar reglas a otro/s nodo/s.! Especificamos estos otros nodos con una dirección XPath.! Si nos fijamos en el algoritmo, es como si pudiésemos invocar nosotros mismos a la función Transformar(nodo) 2002 Borja Sotomayor 6

xsl:apply-templates (II)! Para hacer esto, utilizamos: <xsl:apply-templates select= dir_xpath /> <tienda> <articulo precio= 35000 >Impresora</articulo> <articulo precio= 20000 >Disco Duro</articulo> </tienda> + <xsl:stylesheet... > <xsl:template match= tienda > Los articulos de mi tienda son: <ol> <xsl:apply-templates select= articulo /> </ol> </xsl:template> <xsl:template match= articulo > <li><xsl:value-of select=. /></li> </xsl:template> </xsl:stylesheet> 2002 Borja Sotomayor 7

xsl:apply-templates (III)! El resultado es: Los articulos de mi tienda son: <ol> <li>impresora</li> <li>disco Duro</li> </ol> xsl:apply-templates (IV)! Si omitimos el atributo select, sencillamente se transforman todos los nodos hijos del contexto. <xsl:apply-templates /> 2002 Borja Sotomayor 8

xsl:apply-templates (V)! xsl:apply-templates y xsl:template tienen un atributo llamado mode, que me permite definir distintos modos de transformación.! Es decir, yo puedo especificar más de una regla de transformación para una misma dirección XPath, distinguiendo las reglas con el atributo mode. xsl:apply-templates (VI)! Por ejemplo: <xsl:template match= articulo mode= negrita > <b><xsl:value-of select=. /></b> </xsl:template> <xsl:template match= articulo mode= cursiva > <i><xsl:value-of select=. /></i> </xsl:template> 2002 Borja Sotomayor 9

xsl:apply-templates (VII)! Cual se aplica? Lo indico con el atributo mode de xsl:apply-templates. <xsl:apply-templates select= articulo mode= negrita /> Otras Instrucciones! Lo que hemos visto es lo básico de XSLT. Tiene muchas otras instrucciones que le dan mucha potencia y versatilidad:! Iteración! Estructuras condicionales! Ordenación de nodos según un criterio 2002 Borja Sotomayor 10