Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto...

75
Tecnología XML Unidad: 3 Laboratorio de Programación Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Transcript of Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto...

Page 1: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

Tecnología XML

Unidad: 3Laboratorio de Programación

Universidad Nacional de la Patagonia AustralUnidad Académica Río Gallegos

Page 2: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 1

Indice

� XSL� Introducción� Concepto� Tecnicas de presentación

� XPath� Concepto� Expresiones, sintaxis y funciones� Ejemplos

� XSLT� Concepto� Estructura, instrucciones� Ejemplos

� Ejercicio

Page 3: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XSL

Lenguaje extensible de hojas de estilo (extensible stylesheets language).

Page 4: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 3

Introducción� Documentos XML

� Documentos de texto con etiquetas� Contienen esencialmente información (no se entra en detalles de presentación)

� La información se organiza jerárquicamente� Aunque son legibles por un humano, se supone que la información se procesará

� Así se obtendrán formas de (re)presentación más adecuadas� Es posible que esas representaciones impliquen también seleccionar información

� Necesidad de algún medio para expresar la transformación de un documento XML� En otro documento XML (seleccionando, reordenando, calculando...)

� En un documento que una persona pueda utilizar de manera directa (leer, imprimir...)

Page 5: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 4

Técnicas de Presentación

� Muchas formas de presentación a partir de un documento XML:

Page 6: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 5

Diferentes presentaciones:

Page 7: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 6

Diferentes presentaciones:

Page 8: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 7

Necesidad de las transformaciones

� XML se presenta como un estándar para “transmitir”datos a través de Internet.

� Ante la posibilidad de que distintos “centros” o “aplicaciones” utilicen documentos XML, es necesario un sistema que permita “transformar” los datos de un documento XML.

� XSL (eXtensible Stylesheet Language), describe un lenguaje basado en XML para transformar documentos XML a cualquier otro formato.

Page 9: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 8

XSL

� XSL (eXtensible Stylesheet Language) es un lenguaje basado en XML, estandarizado por el W3C, para expresar hojas de estilo aplicables a documentos XML.

Page 10: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 9

XSL

� Está formado por tres partes:

� XSLT (eXtensible Stylesheet Transformations): lenguaje que permite definir cómo se transforma un documento XML en otro documento XML. Además de XML, se puede generar como salida HTML y texto.

� XPath (XML Path): Una sintaxis para aludir a diversas partes de un documento XML.

� XSL-FO (Formating Objects): Conversión del XML en un formato “imprimible” y legible por una persona (ej.: PDF). Inicialmente, este era el propósito del XSL

Page 11: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 10

Beneficios de XSL

� Imprescindible para presentar información: XML no tiene información de formato

� Beneficios hojas de estilo:� Centralizar la forma de presentación� Separar la estructura del contenido� Reutilizar datos� Diferentes formatos de salida� Uniformizar el estilo de presentación � Separar la creación de contenido

Page 12: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 11

Técnicas de Presentación

� Se tienen 2 técnicas de presentación del contenido de un documento XML:

� CSS (Cascading Style Sheets)

� XSL (XML Stylesheet Language)

Page 13: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 12

CSS: hojas de estilo para HTML

� HTML utiliza un conjunto de etiquetas predefinidas, cuyo significado es bien conocido� Ejemplo: El elemento <p> representa un párrafo y el elemento <h1> un encabezado. Un navegador sabe como debe mostrar estos elementos al usuario.

� Las CSSs (Cascading Style Sheets) permiten definir estilos de para ser aplicados a los elementos de HTML

� Ejemplo: Indicar al navegador el color de fuente que debe utilizarse para mostrar un determinado elemento.

Page 14: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XPATH

Page 15: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 14

XPath: conceptos

� XPath es un estándar recomendado por la W3C en 1999� Define cómo acceder a partes de un documento XML� Contiene una biblioteca de funciones estándar� Se basa en relaciones de “parentesco” entre nodos� Su estilo de notación es similar a las rutas de los ficheros, pero

se refiere a nodos en un documento XML� Ejemplo: /fecha/dia

� XPath se usa en XSLT, pero también en XSL-FO, XPointer, XLink, y otros

� En XSLT, XPath se utiliza en los valores de atributos (tales como match o select)

Page 16: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 15

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

� Tokens válidos en una expresión XPath� Paréntesis y similares: ( ) { } [ ]� Elemento actual . y elemento padre ..� Atributo @, elemento * y separador ::� La coma ,� El nombre de un elemento� Tipo de nodo (comment, text, processing instruction, node)� Operadores: and, or, mod, div, *, /, //, |, +, -, =, !=, <, <=, >, >=� Nombres de función� Nombre 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úmeros� Referencias a variables ($nombreVariable)

Page 17: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 16

Expresiones XPath

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

� Lo que devuelve es procesado por la regla XSL

� Las expresiones XPath se usan sobre todo en los atributos match, select y test

Page 18: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 17

Sintaxis XPath

� XPath utiliza expresiones de trayectorias para seleccionado nodos o conjuntos de nodos en un documento XML. EL nodo es seleccionado mediante una trayectoria o pasos.

� Ejemplo:/universidad/ades/alumnos/alumno

Cualquier nodo “alumno” que sea hijo de un nodo “alumnos” y que sea hijo de un nodo “ades”, y que sea hijo del nodo “universidad”, que seránodo raíz.

Page 19: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 18

Selección de Nodos

� Los nodos se seleccionan con las siguientes trayectorias o pasos, estas son las expresiones más usuales:

Selecciona los atributos@

Selecciona el padre del nodo actual..

Selecciona el nodo actual.

Selecciona nodos en el documento desde el

nodo actual que corresponda a la selección no

importando donde esten

//

Selecciona desde el nodo raíz/

Selecciona todos los nodos hijos del nodo

nombrado

nombrenodo

Page 20: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 19

Selección de Nodos: Ejemplo

� La tabla siguiente muestra algunas expresiones y los resultados de las mismas:

bookstore Selecciona todos los nodos hijos del elemento

nodo bookstore

/bookstore Selecciona el elemento raíz bookstore

bookstore/book Selecciona todos los elementos book que son

hijos de bookstore

//book Selecciona todos los elementos book no

importando donde estén.

bookstore//book Selecciona todos los elementos book

descendientes de bookstore no importando donde

estén debajo de este.

//@lang Selecciona todos los atributos llamados lang

Page 21: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 20

Predicados

� Predicados son utilizados para encontrar nodos específicos o un nodo que contiene un valor especifico. Están embebidos en paréntesis cuadrados [].

bookstore/book[1] Selecciona el primer elemento book

bookstore/book[last()] Selecciona el ultimo elemento book

bookstore/book[position()<3] Selecciona dos elementos

bookstore/book[price>35.00] Selecciona todos los libros con precio mayor a 35.0

//title[@lang=‘eng’] Selecciona todos los elementos que tienen atributo lang con valor ‘eng’

Page 22: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 21

Funciones XPath

� Gran variedad de funciones� Cerca de 100 funciones.� Las mas usadas son:

� boolean(): 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 nodos

� name(): 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). El ultimo nodo se denota con last()

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

� sum()

Page 23: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 22

Ejemplos de consultas XPath:

� Documento XML:

<libro>

<autor>Deepak Chopra</autor>

<titulo>El sendero del Mago</titulo>

<isbn>950-15-1727</isbn>

<editorial>Harmany Book</editorial>

<sumario>... nos muestra cómo debemos ... Por medio de

historias como </sumario>

<precio moneda=“pesos">50.00</precio>

<otro/>

</libro>

Page 24: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 23

Ejemplos de consultas XPath:

� Título del libro: /libro/titulo

� Título del libro: //titulo

� Cuál es la Moneda del precio del libro?:

/libro/precio/@moneda

� Todos los datos del libro: /libro/*

� El libro cuyo precio se paga en pesos: /libro[precio/@moneda =‘pesos’]

Page 25: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XSLT

eXtensible Stylesheet Transformations

Page 26: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 25

XSLT ( XSL Transformations)

� Objetivo: transformar un documento XML origen (sourcetree) en un nuevo documento XML ( resulttree).

� Permite:� añadir elementos� eliminar elementos� ordenar elementos� reorganizar la estructura del documento� filtrar elementos o definir su formato dependiendo de su contenido

� ...

Page 27: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 26

Funcionamiento de las XSLT

� En los documentos XSLT se especifican una serie de plantillas (templates) en las que se definen un conjunto de reglas de transformación.

� Cada plantilla se tiene asociada un Xpath que permite seleccionar las partes del documento original sobre la que debe aplicarse dicha plantilla.

� Cuando un subárbol del documento original satisface el Xpathde una plantilla, se aplican las reglas de allí especificadas, transformando esta parte del árbol del documento origen en el correspondiente del árbol del documento resultado.

� Las secciones del documento origen que no satisfacen ninguna plantilla aparecerán en el documento final sin modificar.

Page 28: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 27

Herramientas

� Actualmente contamos con varias herramientas para realizar transformaciones XSLT:

� Saxon, desarrollado en Java por Michael Kay (un gurú de XSLT)

� Xt, diseñado por James Clark

� XMLSpy

� En las prácticas usaremos XML Copy Editor

Page 29: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 28

Ejemplo XSLT

� Documento XML: hola.xml

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="hola.xsl"?><saludo>Hola, mundo!</saludo>

Page 30: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 29

Ejemplo…

� Hoja de estilo: hola.xsl

<?xml version="1.0" encoding="UTF-8"?>

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

<xsl:output method="html"/>

<xsl:template match="/">

<html>

<head><title>Un Saludo</title></head>

<body>

<p>

<font color="red" face="arial">

<strong><xsl:value-of select="saludo"/></strong>

</font>

</p>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

Page 31: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 30

Ejemplo…

� Salida: hola.html<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<html>

<head>

<title>Un Saludo</title>

</head>

<body>

<p>

<font color="red" face="arial">

<strong>Hola, mundo!</strong>

</font>

</p>

</body>

</html>

Page 32: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 31

Estructura de una hoja de estilo XSLT

� Una hoja de estilo XSLT es un documento XML. Debe estar bien formado.

� Las hojas de estilo se guardarán siempre en archivos independientes con extensión .xsl

� Deben comenzar con una declaración XML:

<?xml version="1.0“?>

� El elemento raíz de la hoja de estilo XSLT es stylsheet.

� Este elemento contendrá a todos los demás, y debe ir precedido por el alias xsl correspondiente al espacio de nombres para hojas de estilo XSLT.

Page 33: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 32

Estructura de una hoja de estilo XSLT

� En las hojas de estilo XSLT, los nombres de los elementos “reservados”, proceden de un mismo espacio de nombres, y por lo tanto deben escribirse precedidos por el correspondiente alias.

� El alias debe “apuntar” a la URL: http://www.w3.org/1999/XSL/Transform

� De esta forma, el elemento raíz quedará así:<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">...</xsl:stylesheet>

Page 34: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 33

Estructura de una hoja de estilo XSLT

� Entras las marcas de inicio y de fin del elemento raíz xsl:stylesheet, se escribirán las reglas de transformación propiamente dichas.

� Cada regla se definirá mediante un elemento xsl:template

� La regla indica qué instancias de los elementos del documento XML se van a transformar.

� La regla también indicará cómo se deben transformar cada una de ellas

Page 35: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 34

Instrucciones XSLT

� Formato y elementos de un documento XSL:� Formado por instrucciones XSLT y tags HTML.� Instrucciones XSLT:

� xsl:stylesheet� xsl:output� xsl:template� xsl:value-of� xsl:for-each� xsl:sort� xsl:if� xsl:choose� xsl:apply-templates� xsl:import y xsl:include� xsl:variable� xsl:copy-of� …

Page 36: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 35

xsl:stylesheet

� Es el elemento raíz de una hoja XSL.

� Se puede utilizar también xsl:transform (son prácticamente equivalentes).

� Atributos principales:� version: Suele ser 1.0

� xmlns:xsl: Asigna el namespace xsl (las etiquetas de XSL empiezan por el prefijo xsl:). El valor para XSL suele ser http://www.w3.org/1999/XSL/Transform

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

...

</xsl:stylesheet>

Page 37: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 36

xsl:output

� Define qué tipo de salida se va a generar como resultado

� Atributos:� method: puede tomar los valores xml, html y text (y también un valor de

extensión, con el prefijo correspondiente)� encoding: define la forma de representar caracteres que se adoptará en la

salida. Ejemplos:� iso-8859-1, UTF-8, UTF-16...� windows-1252 (genera los caracteres acentuados con la codificación de Windows)

� omit-xml-declaration: valores yes o no. Indica si se genera o no la declaración <?xml...?>

� indent: valores yes o no. Si es yes, el procesador (para salidas xml o html) indentará el resultado.

Page 38: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 37

xsl:output

� Ejemplo:

<xsl:stylesheet version="1.0

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html" />

...

</xsl:stylesheet>

Page 39: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 38

xsl:template (I)

� El bloque fundamental de una hoja XSLT

� Un template tiene dos elementos principales:� Una expresión de emparejamiento

� Las instrucciones de procesamiento que contiene

� Si la expresión de emparejamiento coincide con un elemento del fichero XML, el template entra en acción y se ejecutan las instrucciones de procesamiento

� Las instrucciones de procesamiento pueden ser instrucciones de XSLT propiamente dichas o bien LREs (valor de la etiqueta)

� Se utiliza para relacionar el template con el documento XML.

Page 40: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 39

xsl:template (II)

� Atributos:

� match: Su valor es una expresión que se usa para seleccionar nodos del árbol de entrada (cuando encaja, el template entra en acción)

� name: Además de cuando encaja, un template puede invocarse explícitamente (en ese caso se necesita que tenga un nombre)

� Ejemplo:

<?xml version="1.0"?>

<fecha>

<dia>20</dia>

<mes>5</mes>

<anio>2009</anio>

</fecha>

<xsl:stylesheet version="1.0“

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" encoding="UTF-8“ indent=“yes”/>

<xsl:template match=“/”>

<raiz>He encontrado un nodo raiz</raiz>

</xsl:template>

</xsl:stylesheet>

<?xml version="1.0" encoding="UTF-8"?>

<raiz>He encontrado un nodo raiz</raiz>

fecha.xml fecha.xsl

Archivo XML generado

Page 41: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 40

xsl:value-of

� Permite evaluar una expresión XPath: procesa el contenido de un nodo.

� Extraemos un valor del documento XML.

� Ejemplo:

<xsl:value-of select="catalog/cd/title"/>

� El contenido del nodo actual viene dado por la expresión “.”

� Esos match y select requieren de Xpath.

Page 42: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 41

xsl:value-of

<?xml version="1.0" encoding="UTF-8"?>

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

<xsl:template match="/">

<html>

<body>

<h2>My CD Collection</h2>

<table border="1">

<tr bgcolor="#9acd32">

<th align="left">Title</th>

<th align="left">Artist</th>

</tr>

<tr>

<td><xsl:value-of select="catalog/cd/title"/></td>

<td><xsl:value-of select="catalog/cd/artist"/></td>

</tr>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

El elemento xsl:value-ofpermite seleccionar el valor de un

elemento del documento origen e

introducirlo en el documento

resultado.

Page 43: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 42

Iteración: xsl:for-each

� Instrucción <xsl:for-each>� Se utiliza para seleccionar todos los elementos de un nodoconcreto del documento XML.

� Ejemplo:

<xsl:for-each select="catalog/cd">

nodo

</xsl:for-each>

Page 44: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 43

Iteración: xsl:for-each

<?xml version="1.0" encoding="UTF-8"?>

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

<xsl:template match="/">

<html>

<body>

<h2>My CD Collection</h2>

<table border="1">

<tr bgcolor="#9acd32">

<th align="left">Title</th>

<th align="left">Artist</th>

</tr>

<xsl:for-each select="catalog/cd">

<tr>

<td><xsl:value-of select="title"/></td>

<td><xsl:value-of select="artist"/></td>

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

El elemento xsl:for-eachpermite iterar sobre el conjunto

de nodos indicado mediante elatributo select.

Page 45: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 44

Ordenar: xsl:sort

� Instrucción <xsl:sort>� Ordenar los elementos dentro de un <xsl:for-each>.

� Ejemplo:

<xsl:for-each select="catalog/cd">

<xsl:sort select="artist"/>

nodo

</xsl:for-each>

Page 46: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 45

Ordenar: xsl:sort

<?xml version="1.0" encoding="UTF-8"?>

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

<xsl:template match="/">

<html>

<body>

<h2>My CD Collection</h2>

<table border="1">

<tr bgcolor="#9acd32">

<th align="left">Title</th>

<th align="left">Artist</th>

</tr>

<xsl:for-each select="catalog/cd">

<xsl:sort select="artist"/>

<tr>

<td><xsl:value-of select="title"/></td>

<td><xsl:value-of select="artist"/></td>

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

El elemento xsl:sort permite

ordenar los elementos sobre los

que se itera al aplicar el elemento

xsl:for-each.

Page 47: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 46

Filtrado c/xsl:for-each

<?xml version="1.0" encoding="UTF-8"?>

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

<xsl:template match="/">

<html>

<body>

<h2>My CD Collection</h2>

<table border="1">

<tr bgcolor="#9acd32">

<th align="left">Title</th>

<th align="left">Artist</th>

</tr>

<xsl:for-each select="catalog/cd[artist='Bob Dylan']">

<tr>

<td><xsl:value-of select="title"/></td>

<td><xsl:value-of select="artist"/></td>

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

El XPath introducido como valor

en el atributo select permite

filtrar los elementos deldocumento original.

Page 48: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 47

Condicional: xsl:if

� Instrucción <xsl:if>� Se utiliza para condicionar.

� Ejemplo:

<xsl:for-each select="catalog/cd">

<xsl:if test="price &gt; 10">

nodo

</xsl:if>

</xsl:for-each>

Page 49: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 48

Condicional: xsl:if

<?xml version="1.0" encoding="UTF-8"?>

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

<xsl:template match="/">

<html>

<body>

<h2>My CD Collection</h2>

<table border="1">

<tr bgcolor="#9acd32">

<th align="left">Title</th>

<th align="left">Artist</th>

</tr>

<xsl:for-each select="catalog/cd">

<xsl:if test="price &gt; 10">

<tr>

<td><xsl:value-of select="title"/></td>

<td><xsl:value-of select="artist"/></td>

</tr>

</xsl:if>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

El elemento xsl:if contiene

una plantilla que únicamente será

aplicada si la condición delatributo test se evalúa como

cierta.

Page 50: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 49

Condicional: xsl:choose

� Instrucción <xsl:choose>

� Se utiliza para realizar múltiples preguntas condicionales.

� Se debe utilizar junto a <xsl:when> y <xsl:otherwise>.

� Ejemplo:

<xsl:choose>

<xsl:when test="expression">

... alguna salida ...

</xsl:when>

<xsl:otherwise>

... alguna salida ....

</xsl:otherwise>

</xsl:choose>

Page 51: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 50

Condicional: xsl:choose<?xml version="1.0" encoding="UTF-8"?>

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

<xsl:template match="/">

<html>

<body>

<h2>My CD Collection</h2>

<table border="1">

<tr bgcolor="#9acd32">

<th align="left">Title</th>

<th align="left">Artist</th>

</tr>

<xsl:for-each select="catalog/cd">

<tr>

<td><xsl:value-of select="title"/></td>

<xsl:choose>

<xsl:when test="price &gt; 10">

<td bgcolor="#ff00ff">

<xsl:value-of select="artist"/></td>

</xsl:when>

<xsl:when test="price &gt; 9 and price &lt;= 10">

<td bgcolor="#cccccc">

<xsl:value-of select="artist"/></td>

</xsl:when>

<xsl:otherwise>

<td><xsl:value-of select="artist"/></td>

</xsl:otherwise>

</xsl:choose>

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

El elemento xsl:choose junto a

los elementos xsl:when y

xsl:otherwise permiten

establecer condiciones múltiples.

Page 52: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 51

xsl:apply-templates

� El procesador empareja con sus reglas por defecto (recorre todo)

� Si encuentra una regla concreta, aplica esa (no sigue procesando los hijos de ese nodo, salvo que se lo indiquemos)

� xsl:apply-templates se utiliza para indicar al procesador que intente emparejar templates con cierto nodo o conjunto de nodos (nodeset)

� Atributos:� select: Su valor es una expresión XPath de conjunto de nodos. El procesador intentará emparejar ese conjunto de nodos con sus templates respectivos.

Page 53: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 52

xsl:apply-templates

� Ejemplo:<xsl:template match="artist">

Artist: <span style="color:#00ff00">

<xsl:value-of select="."/></span>

<br />

</xsl:template>

Page 54: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 53

xsl:apply-templates

� Instrucción <xsl:apply-templates>� Aplicación del template:� Ejemplo:

<xsl:template match="/">

<html>

<body>

<h2>My CD Collection</h2>

<xsl:apply-templates/>

</body>

</html>

</xsl:template>

Page 55: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 54

xsl:apply-templates<?xml version="1.0" encoding="UTF-8"?>

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

<xsl:template match="/">

<html>

<body> <h2>My CD Collection</h2>

<xsl:apply-templates/>

</body>

</html>

</xsl:template>

<xsl:template match="cd">

<p>

<xsl:apply-templates select="title"/>

<xsl:apply-templates select="artist"/>

</p>

</xsl:template>

<xsl:template match="title">

Title: <span style="color:#ff0000">

<xsl:value-of select="."/></span> <br/>

</xsl:template>

<xsl:template match="artist">

Artist: <span style="color:#00ff00">

<xsl:value-of select="."/></span> <br/>

</xsl:template>

</xsl:stylesheet>

El elemento xsl:apply-templatespermite continuar aplicando

plantillas al elemento actual o

sus elementos hijo.

Page 56: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 55

Asociar una hoja de estilo a un documento XML

� Incluir en la cabecera del documento XML, siguiente instrucción de procesamiento:<?xml-stylesheet type=”text/xsl” href=”cdcatalog.xsl”?>

� Ejemplo:

<?xml version="1.0" encoding="ISO-8859-1"?>

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

<catalog>

<cd>

<title>Empire Burlesque</title>

<artist>Bob Dylan</artist>

<country>USA</country>

<company>Columbia</company>

<price>10.90</price>

<year>1985</year>

</cd>

...

</catalog>

Se enlaza el documentocon la hoja de estilo

Page 57: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 56

Otros elementos:

atributos con xsl:value-of

� En XSLT podemos “filtrar” o indicar qué instancias de un elemento queremos procesar, tomando como criterio de selección el valor de los atributos que acompañan a los elementos.

� Para hacer esto, en un elemento xsl:value-of, podemos recuperar el valor de un atributo mediante la expresión @nombreAtributo , por ejemplo:

<xsl:template match=“vuelo">

<tr>

<td><xsl:value-of select="@numero" /></td>

<td><xsl:value-of select="@origen" /></td>

<td><xsl:value-of select="@destino" /></td>

<td><xsl:value-of select="@hora" /></td>

</tr>

</xsl:template> El documento XML es:

<vuelo numero=“747” origen=“RG” destino=“BA”

hora=“12:00”>

<asientos>

<categoria>

</vuelo>

Page 58: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 57

Otros elementos: xsl:import y xsl:include

� Es posible crear hojas de estilo XSLT modulares, es decir, divididas en distintos archivos físicos

� En la hoja de estilo se incluirán referencias a otras hojas de estilo XSLT en las que se incluyen el resto de reglas.

� Para incluir las referencias, se pueden utilizar los elementos xsl:importy xsl:include

� Estos dos elementos deben ir acompañados por un elemento href que tomará como valor el URL absoluto o relativo de la hoja de estilo que se quiere utilizar.

� Los elementos xsl:import se debe incluir justo a continuación de la etiqueta de inicio del elemento xsl:stylesheet, y antes de cualquier otro elemento.

Page 59: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 58

Otros elementos: xsl:import y xsl:include

� Hoja de estilo: hoja1.xls<?xml version="1.0" encoding="UTF-8"?>

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

<xsl:template match="/">

<html>

<head><title>Ejemplo</title></head>

<body>

<h1>Lista de libros</h1>

<xsl:apply-templates select="//libro">

<xsl:sort select="autor" />

</xsl:apply-templates>

</body>

</html>

</xsl:template>

<xsl:template match="libro">

<p><xsl:value-of select="autor" />.

<xsl:value-of select="titulo" />,

<xsl:value-of select="anno-pub" />, ISBN:

<xsl:value-of select="isbn" /></p>

</xsl:template>

</xsl:stylesheet>

HojaEstiloLibro.xsl

Page 60: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 59

Otros elementos: xsl:import y xsl:include

� Entonces, incluyendo la referencia a la nueva hoja creada, la hoja de estilo anterior va a quedar como sigue:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0“

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:import href=”HojaEstiloLibro.xsl” />

<xsl:template match="/">

<html>

<head><title>Ejemplo</title></head>

<body>

<h1>Lista de libros</h1>

<xsl:apply-templates select="//libro">

<xsl:sort select="autor" />

</xsl:apply-templates>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

Page 61: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 60

Otros elementos: xsl:variable

� El elemento xsl:variable se utiliza para declarar una variable

� Las variables nos permiten realizar operaciones con los datosdel documento XML para luego mostrar el resultado en el documento “resultado”.

� Es importante señalar que cuando se le asigna un valor, éste yano se puede cambiar.

� Para declarar una variable, se utilizará la sintáxis:

<xsl:variable name="var" select="15" />

Page 62: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 61

Otros elementos: xsl:variable<?xml version="1.0" encoding="UTF-8"?>

<pedido>

<cliente>

<nombre>Hipertehuelch</nombre>

<domicilio>Santiago del Estero 600</domicilio>

<localidad>Rio Gallegos</localidad>

</cliente>

<detalle>

<item>

<material>Tornillos-5</material>

<unidades>10000</unidades>

<precio>3</precio>

<total>30000</total>

</item>

<item>

<material>Paletas</material>

<unidades>100</unidades>

<precio>500</precio>

<total>50000</total>

</item>

<item>

<material>Ladrillos</material>

<unidades>600</unidades>

<precio>23</precio>

<total>13800</total>

</item>

</detalle>

</pedido>

pedido.xml

Page 63: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 62

Otros elementos: xsl:variable<?xml version="1.0" encoding="UTF-8"?>

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

<xsl:template match="/">

<html>

<head><title>Pedido</title></head>

<body>

<xsl:apply-templates />

</body></html>

</xsl:template>

<xsl:template match="detalle">

<table width="85%">

<tr>

<th>Material</th>

<th>Unidades</th>

<th>Precio</th>

<th>Total Pesos</th>

</tr>

<xsl:for-each select="item">

<tr>

<td><xsl:value-of select="material" /></td>

<td><xsl:value-of select="unidades" /></td>

<td><xsl:value-of select="precio" /></td>

<td><xsl:value-of select="total" /></td>

</tr>

</xsl:for-each>

</table>

</xsl:template>

</xsl:stylesheet>

pedido.xsl<xsl:variable name="totalPrecio" select="sum(//total)" />

<h4>Total a pagar: <xsl:copy-of select="$totalPrecio" /></h4>

Page 64: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 63

Otros elementos: xsl:variable

pedido.xsl pedido1.xsl

Page 65: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 64

Otros elementos: xsl:copy-of

� Se utiliza para copiar un conjunto de nodos del documento origen, al documento resultado de la transformación.

� Se copiarán todos los nodos hijos y los atributos (en el caso de los elementos que los tengan).

� Este elemento es especialmente útil cuando se quiere convertir un documento XML a otro documento XML con una estructura diferente.

� El elemento xsl:copy-of irá acompañado por un atributo selectque toma como valor una expresión que determinará los nodos que se van a copiar.

Page 66: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 65

Otros elementos: xsl:copy-of

<?xml version="1.0" encoding="UTF-8"?>

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

<repertorio>

<libro>

<titulo>Don Quijote de la Mancha</titulo>

<autor>Miguel de Cervantes</autor>

<anno-pub>1987</anno-pub>

<isbn>84-568-94-3</isbn>

</libro>

<libro>

<titulo>La Galatea</titulo>

<autor>Miguel de Cervantes</autor>

<anno-pub>1989</anno-pub>

<isbn>84-568-9424</isbn>

</libro>

<libro>

<titulo>La Celestina</titulo>

<autor>Fernando de Rojas</autor>

<anno-pub>1998</anno-pub>

<isbn>84-568-95-12</isbn>

</libro>

</repertorio>

repertorio.xml

Page 67: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 66

Otros elementos: xsl:copy-of

<?xml version="1.0" encoding="UTF-8"?>

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

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="/">

<repertorio>

<xsl:copy-of select="//libro[starts-with(autor, 'Miguel de Cervantes')]" />

</repertorio>

</xsl:template>

</xsl:stylesheet>

repertorio.xsl

Page 68: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 67

Otros elementos: xsl:copy-of

� Documento XML generado:

<?xml version="1.0" encoding="UTF-8"?>

<repertorio>

<libro>

<titulo>Don Quijote de la Mancha</titulo>

<autor>Miguel de Cervantes</autor>

<anno-pub>1987</anno-pub>

<isbn>84-568-94-3</isbn>

</libro>

<libro>

<titulo>La Galatea</titulo>

<autor>Miguel de Cervantes</autor>

<anno-pub>1989</anno-pub>

<isbn>84-568-9424</isbn>

</libro>

</repertorio>

Page 69: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 68

Elementos de XSLT (1)� xsl:apply-imports : Aplica una plantilla de una hoja de estilo importada� xsl:apply-templates : Aplica una plantilla al nodo actual o sus elementos hijo� xsl:attribute : Añade un atributo� xsl:attribute-set : Define un conjunto de atributos� xsl:call-template : Aplica una determinada plantilla� xsl:choose : Utilizado junto a <xsl:when> y <xsl:otherwise> para expresar

condiciones múltiples� xsl:comment : Crea un nodo comentario en el documento resultado� xsl:copy : Realiza una copia del nodo actual (sin atributos y nodos hijo)� xsl:copy-of : Realiza una copia del nodo actual (con atributos y nodos hijo)� xsl:decimal-format : Define los caracteres y símbolos utilizados a la hora de

convertir valores numéricos reales a cadenas de caracteres mediante la función format-number()

� xsl:element : Crea un nuevo elemento en el documento resultado� xsl:fallback : Especifica un código alternativo a ejecutar en caso de que el

procesador no soporte un determinado elemento XSLT� xsl:for-each : Permite iterar sobre un conjunto de nodos

Page 70: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 69

Elementos de XSLT (2)� xsl:if : Contiene una plantilla que únicamente será aplicada si la condición

especificada es cierta� xsl:import : Importa el contenido de una hoja de estilo (las plantillas

especificadas en ésta tendrán menor precedencia que las de la hoja de estilo actual)

� xsl:include : Importa el contenido de una hoja de estilo (las plantillas especificadas en ésta tendrán la misma precedencia que especificadas en la hoja de estilo actual)

� xsl:key : Declara una clave que más tarde puede ser utilizada en la función key()

� xsl:message : Escribe un mensaje en la salida (utilizado para proporcionar mensajes de error)

� xsl:namespace-alias : Remplaza un determinado prefijo de espacio de nombres utilizado en la hoja de estilo, por un prefijo distinto en el documento resultado

� xsl:number : Permite especificar un formato para transformar números enteros a cadenas de caracteres

� xsl:otherwise : Utilizado junto a <xsl:when> y <xsl:choose> para expresar condiciones múltiples

� xsl:output : Permite especificar el formato del documento resultado� xsl:param : Declara un parámetro global o local a una plantilla

Page 71: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 70

Elementos de XSLT (3)� xsl:preserve-space : Define los elementos en los que debe preservarse los

espacios en blanco (acción por defecto)� xsl:processing-instruction : Escribe una instrucción de procesado en la salida� xsl:sort : permite ordenar un conjunto de nodos� xsl:strip-space : Define los elementos en los que deben eliminarse los espacios

en blanco� xsl:stylesheet : Elemento raíz de la hoja de estilo� xsl:template : Define una plantilla� xsl:text : Escribe texto en el documento de salida� xsl:transform : Elemento raíz de la hoja de estilo� xsl:value-of : Extrae el valor de un determinado elemento� xsl:variable : Declara una variable global o local� xsl:when : Utilizado junto a <xsl:otherwise> y <xsl:choose> para expresar

condiciones múltiples� xsl:with-param : Define el valor de un parámetro al invocar a una plantilla

Page 72: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 71

Consultas…

Page 73: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 72

Ejercicio:

� Crear una hoja de estilo de acuerdo a un documento XML. Realizar los siguientes pasos:

� Crear el documento XML (ver XML adjunto)

� Crear una hoja de estilo de acuerdo al documento XML

� Verificar que tanto el documento XML como XSL estén bien formados.

� Generar como salida un archivo HTML.

� Ejemplo:

Page 74: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 73

Ejercicio propuesto

� Documento catalogo.xml:<?xml version="1.0" encoding="UTF-8"?>

<catalogo>

<cd>

<titulo>Parte de la religión</titulo>

<artista>Charly García</artista>

<pais>Argentina</pais>

<compania>Sony BMG</compania>

<precio>24.99</precio>

<anio>1987</anio>

</cd>

<cd>

<titulo>Civilización</titulo>

<artista>Los Piojos</artista>

<pais>Argentina</pais>

<compania>Sony</compania>

<precio>35.00</precio>

<anio>2007</anio>

</cd>

<cd>

<titulo>Me veras volver</titulo>

<artista>Soda Stereo</artista>

<pais>Argentina</pais>

<compania>Sony BMG</compania>

<precio>38.00</precio>

<anio>2008</anio>

</cd>

</catalogo>

Page 75: Tecnología XML - OoCitiesXML Laboratorio de Programacion 1 Indice XSL Introducción Concepto Tecnicasde presentación XPath Concepto Expresiones, sintaxisy funciones Ejemplos XSLT

XML Laboratorio de Programacion 74

Próxima clase

� Ultima clase

� DOM

� Ejemplos y ejercitación