Professional Documents
Culture Documents
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Introducci on a XSLT
Jose Emilio Labra Gayo
Octubre 2006
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Contenidos Plantillas Plantillas predenidas Creaci on del Arbol de resultado Programaci on Alternativas y control Variables y par ametros Plantillas con nombre y recursividad Automatizaci on Clasicaci on Numeraci on Claves e identicadores M ultiples documentos
Jose Emilio Labra Gayo Introducci on a XSLT
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Ejemplo
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Generando HTML
<? xml v e r s i o n = 1 . 0 ?> < x s l : s t y l e s h e e t v e r s i o n = 1 . 0 x m l n s : x s l= h t t p : //www . w3 . o r g /1999/ XSL/ T r a n s f o r m > < x s l : o u t p u t method= h t m l /> < x s l : t e m p l a t e match= / > < h t m l> < head> < t i t l e > E j e m p l o</ t i t l e > </ head> <body> <h1>Poema</ h1> </ body> </ h t m l> </ x s l : t e m p l a t e > </ x s l : s t y l e s h e e t >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Reglas de Plantillas
El valor del atributo match es una expresi on XPath Cuando el procesador encaja el nodo actual con la expresi on genera el valor de la plantilla
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Obtener valores
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Aplicando plantillas
Por defecto, el procesador lee el documento y recorre el arbol seg un el orden de los nodos apply-templates permite indicar al procesador que contin ue procesando ciertas reglas de plantillas
< x s l : t e m p l a t e match=poema > V e r s o s : < x s l : a p p l y t e m p l a t e s s e l e c t= v e r s o /> T i t u l o : < x s l : a p p l y t e m p l a t e s s e l e c t= t i t u l o /> </ x s l : t e m p l a t e >
apply-templates sin argumentos selecciona todos los hijos del nodo actual.
Jose Emilio Labra Gayo Introducci on a XSLT
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Modos
Es posible indicar varios modos de recorrido Crear una tabla de contenidos
< x s l : t e m p l a t e match= / > Contenidos: < u l >< x s l : a p p l y t e m p l a t e s mode= c o n t /></ u l > < x s l : a p p l y t e m p l a t e s /> </ x s l : t e m p l a t e > < x s l : t e m p l a t e match=poema mode= c o n t > < l i >< x s l : v a l u e o f s e l e c t= t i t u l o /></ l i > </ x s l : t e m p l a t e > < x s l : t e m p l a t e match=poema > ... </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Plantillas predenidas
Plantillas predenidas
Las plantillas predenidas tienen la menor prioridad posible Pueden re-denirse por la aplicaci on
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Plantillas predenidas
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Plantillas predenidas
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Plantillas predenidas
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Creaci on de elementos
Mediante element puede denirse un elemento nuevo.
< x s l : t e m p l a t e match=poema > < x s l : e l e m e n t name= h1 > < x s l : v a l u e o f s e l e c t= t i t u l o /> </ x s l : e l e m e n t > </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Creaci on de atributos
Mediante attribute puede denirse un atributo nuevo.
<e n l a c e u r l= h t t p : //www . u n i o v i . e s > U n i v e r s i d a d </ e n l a c e >
resultado
< x s l : t e m p l a t e match= e n l a c e > < x s l : e l e m e n t name= a > < x s l : a t t r i b u t e name= h r e f > < x s l : v a l u e o f s e l e c t = @ u r l /> </ x s l : a t t r i b u t e > < x s l : v a l u e o f s e l e c t= . /> </ x s l : e l e m e n t > </ x s l : t e m p l a t e > <a h r e f= h t t p : //www . u n i o v i . e s > U n i v e r s i d a d </ a>
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Plantillas de atributos
Mediante {...} es posible incluir expresiones XPath en un atributo que son evaluadas al generar el resultado.
<e n l a c e u r l= h t t p : //www . u n i o v i . e s > U n i v e r s i d a d </ e n l a c e >
resultado
<a h r e f= h t t p : //www . u n i o v i . e s > U n i v e r s i d a d </ a>
< x s l : t e m p l a t e match= e n l a c e > <a h r e f= { @ u r l } > < x s l : v a l u e o f s e l e c t = . /> </ a> </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Conjuntos de atributos
Mediante attribute-set pueden denirse conjuntos de atributos para su reutilizaci on posterior
< x s l : a t t r i b u t e s e t name= img grande > < x s l : a t t r i b u t e name= w i d t h >250 px</ x s l : a t t r i b u t e > < x s l : a t t r i b u t e name= h e i g h t >250 px</ x s l : a t t r i b u t e > </ x s l : a t t r i b u t e s e t > < x s l : a t t r i b u t e s e t name= img peque > < x s l : a t t r i b u t e name= w i d t h >50 px</ x s l : a t t r i b u t e > < x s l : a t t r i b u t e name= h e i g h t >50 px</ x s l : a t t r i b u t e > </ x s l : a t t r i b u t e s e t > < x s l : t e m p l a t e match= imagen mode= c o n t > <img x s l : u s e a t t r i b u t e s e t s= img peque s r c= { @ s r c } /> </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Texto
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Comentarios
Para a nadir comentarios al resultado se utiliza comment
< x s l : t e m p l a t e match= / > <poema> < x s l : c o m m e n t> G e n e r a d o m e d i a n t e XSLT</ x s l : c o m m e n t> < x s l : a p p l y t e m p l a t e s /> </poema> < x s l : t e m p l a t e>
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Instrucciones de procesamiento
Para a nadir instrucciones de procesamiento se utiliza processing-instruction
< x s l : t e m p l a t e match= / > <x s l : p r o c e s s i n g i n s t r u c t i o n name= x m l s t y l e s h e e t > h r e f= poema . x s l t y p e= t e x t / x s l </ x s l : p r o c e s s i n g i n s t r u c t i o n >
Resultado
<? xml s t y l e s h e e t h r e f=poema . x s l t y p e= t e x t / x s l ?>
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Copiado de contenido
Mediante copy es posible crear una copia del nodo actual No se copian los atributos ni los hijos salvo que se especique mediante apply-templates
< x s l : t e m p l a t e match= t i t u l o | v e r s o > < x s l : c o p y> < x s l : a p p l y t e m p l a t e s /> </ x s l : c o p y > </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Copiado de contenido
copy-of permite indicar los nodos que ser an copiados al resultado mediante el atributo select Copiado de todo el poema
< x s l : t e m p l a t e match=poema > < x s l : c o p y o f s e l e c t= . /> </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Ejemplo
Hoja de estilos identidad La siguiente hoja de estilos toma un documento XML y devuelve como resultado el mismo documento.
<x s l : s t y l e s h e e t x m l n s : x s l= h t t p : //www . w3 . o r g /1999/ XSL/ T r a n s f o r m v e r s i o n = 1 . 0 > <x s l : t e m p l a t e match=@ | | p r o c e s s i n g i n s t r u c t i o n ( ) | comment ( ) > < x s l : c o p y> <x s l : a p p l y t e m p l a t e s s e l e c t= | @ | t e x t ( ) | p r o c e s s i n g i n s t r u c t i o n ( ) | comment ( ) /> </ x s l : c o p y > </ x s l : t e m p l a t e > </ x s l : s t y l e s h e e t >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Ejercicio
Eliminar instrucciones de procesamiento Crear una hoja de estilos que tome un documento XML y devuelva el mismo documento tras eliminar las instrucciones de procesamiento. NOTA: Deben dejarse el resto de nodos: comentarios, elementos, atributos, etc. tal y como estaban.
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Alternativas y control
Condicional
xsl:if establece una condici on para generar el resultado NOTA: No tiene else
< x s l : t e m p l a t e match=poema > < x s l : i f t e s t= @ l u g a r = Granada > < x s l : c o m m e n t> Granada</ x s l : c o m m e n t> </ x s l : i f > < x s l : a p p l y t e m p l a t e s /> </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Alternativas y control
Condicional
xsl:choose selecciona entre varias alternativas
< x s l : t e m p l a t e match=poema > < x s l : c h o o s e> < x s l : w h e n t e s t= @ l u g a r = Granada > < x s l : c o m m e n t> Granada</ x s l : c o m m e n t> </ x s l : w h e n> < x s l : w h e n t e s t= @ l u g a r = Oviedo > < x s l : c o m m e n t> O v i e d o</ x s l : c o m m e n t> </ x s l : w h e n> < x s l : o t h e r w i s e> < x s l : c o m m e n t> Otro l u g a r </ x s l : c o m m e n t> </ x s l : o t h e r w i s e > </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Alternativas y control
Repetici on
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Alternativas y control
Ejercicio
Formatear un libro Crear una hoja de estilos que tome un documento que represente un libro y genere una p agina Web. Como ejemplo, puede utilizarse el documento siguiente Incluir una tabla de contenidos con enlaces a cada cap tulo Incluir enlaces en cada cap tulo al cap tulo siguiente y al anterior
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Alternativas y control
Ejercicio
Formatear una lista de notas Crear una hoja de estilos que tome un documento que represente una lista de alumnos con sus respectivas notas y las formatee en una p agina Web. Como ejemplo, puede utilizarse el documento siguiente Crear una representaci on en forma de tabla A nadir una la con el porcentaje de aprobados Incluir un enlace del tipo mailto: en cada una de las direcciones de los alumnos
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Alternativas y control
Ejercicio
Lista de eventos Crear un vocabulario que represente eventos Cada evento tendr a asociada la siguiente informaci on: T tulo Fecha: hora, d a, mes y a no Descripci on (texto libre con marcas HTML) Lugar Otra informaci on que se considere interesante Crear un documento de ejemplo de eventos Crear una hoja de estilos que transforme documentos con eventos en formato HTML
Jose Emilio Labra Gayo Introducci on a XSLT
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Alternativas y control
Ejercicio
Formato Atom Crear una hoja de estilos que convierta documentos en formato Atom en documentos en el formato de eventos desarrollado en el ejercicio anterior
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Variables
variable permite declarar una variable NOTA: Los valores de las variables no pueden modicarse = Programaci on declarativa!
< x s l : t e m p l a t e match= r e c t a n g u l o > < x s l : v a r i a b l e name= a r e a s e l e c t= @base @ a l t u r a /> El area es < x s l : v a l u e o f s e l e c t= $ a r e a /> y e l doble del area es < x s l : v a l u e o f s e l e c t= $ a r e a 2 /> </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Par ametros
Mediante param pueden denirse par ametros de la hoja de estilos. Son similares a las variables. La principal diferencia es que los par ametros toman valores por defecto que pueden ser alterados cuando la plantilla o la hoja de estilo es invocada
< x s l : p a r a m name= h a z I n d i c e > S I</ x s l : p a r a m> < x s l : t e m p l a t e match= / > < x s l : i f t e s t= $ h a z I n d i c e = SI > < x s l : a p p l y t e m p l a t e s mode= i n d i c e /> </ x s l : i f > < x s l : a p p l y t e m p l a t e s /> </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Recursividad
Factorial
< x s l : t e m p l a t e name= f a c t > < x s l : p a r a m name=n /> < x s l : c h o o s e> < x s l : w h e n t e s t= $n=0>1</ x s l : w h e n> < x s l : o t h e r w i s e> < x s l : v a r i a b l e name= r > < x s l : c a l l t e m p l a t e name= f a c t > < x s l : w i t h p a r a m name=n s e l e c t= $n 1 /> </ x s l : c a l l t e m p l a t e > </ x s l : v a r i a b l e > < x s l : v a l u e o f s e l e c t= $n $ r /> </ x s l : o t h e r w i s e > </ x s l : c h o o s e > </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Ejercicio
Bucle for Crear una hoja de estilos que tome un n umero n y genere una lista de n items con el siguiente formato:
< u l> < l i > I t e m 1</ l i > < l i > I t e m 2</ l i > < l i > I t e m 3</ l i > ... </ u l >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Ejercicio
Tabla Crear una hoja de estilos que tome un n umero n y genere una tabla HTML de n las y n columnas
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Ejercicio
Substituir Crear una hoja de estilos que tome un documento y substituya todas las apariciones de una cadena de texto por otra.
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Ejercicio
Crear un calendario Crear una hoja de estilos que tome como argumento un mes y un a no y genere un calendario. Puede partirse del siguiente documento XML y de la siguiente hoja de estilos
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Ejercicio
Eventos en calendario Crear una hoja de estilos que represente documentos de eventos en un calendario
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Mensajes y terminaci on
XSLT es un lenguaje pensado para transformar documentos XML No tiene mecanismos de interacci on con el usuario Para cambiar el comportamiento se le pueden pasar par ametros El elemento message muestra un mensaje. Puede ser u til para depuraci on. El atributo terminate permite indicar al procesador que aborte la ejecuci on
< x s l : t e m p l a t e name= imagen > < x s l : i f t e s t= n o t ( @ h r e f ) > < x s l : m e s s a g e t e r m i n a t e= y e s > No s e e n c u e n t r a v a l o r de h r e f en imagen </ x s l : m e s s a g e> ... </ x s l : t e m p l a t e >
Jose Emilio Labra Gayo Introducci on a XSLT
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Clasicaci on
Clasicaci on
sort realiza una clasicaci on del conjunto de nodos Puede utilizarse m as de un criterio de clasicaci on
< x s l : t e m p l a t e match= a l u m n o s > < x s l : f o r e a c h s e l e c t= alumno > < x s l : s o r t s e l e c t = a p e l l i d o s /> < x s l : s o r t s e l e c t = nombre /> <p>< x s l : v a l u e o f s e l e c t= a p e l l i d o s /> , < x s l : v a l u e o f s e l e c t= nombre /></p> </ x s l : f o r e a c h> </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Clasicaci on
Clasicaci on
El atributo data-type permite indicar la forma de clasicaci on: number: num erica text: textual (por defecto) El atributo order indica el tipo de clasicaci on: ascending: ascendente (por defecto) descending: descendente
< x s l : t e m p l a t e match= a l u m n o s > < x s l : f o r e a c h s e l e c t= alumno > < x s l : s o r t s e l e c t = n o t a d a t a t y p e= number o r d e r= d e s c e n d i n g /> <p>< x s l : v a l u e o f s e l e c t= a p e l l i d o s /></p> </ x s l : f o r e a c h> </ x s l : t e m p l a t e >
Jose Emilio Labra Gayo Introducci on a XSLT
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Numeraci on
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Numeraci on
Estilo de numeraci on
Los atributos de number permiten modicar el formato de la numeraci on level indica nivel de numeraci on (multiple, single o any) count indica qu e valores en dichos niveles. from indica desde d onde empezar la numeraci on format indica formato. Ejemplos: 1. , a. , I. , 001. , etc.
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Numeraci on
Formato de numeraci on
El elemento number-format especica el formato del n umero Los atributos para controlar el formato de salida son: decimal-separator grouping-separator percent per-mille zero-digit digit pattern-separator infinity NaN minus-sign
Jose Emilio Labra Gayo Introducci on a XSLT
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Claves e identicadores
Identicadores
La funci on id permite seleccionar un elemento con un identicador determinado Puede ser u til para buscar elementos Limitaci on: requiere declarar atributo como ID en la DTD
< d i b u j o s> < c o l o r e s> < c o l o r i d= r o j o > 2 5 5 , 0 , 0</ c o l o r > < c o l o r i d= a z u l > 0 , 0 , 2 5 5</ c o l o r > ... </ c o l o r e s > < c u a d r o c o l o r = r o j o . . . / > < c u a d r o c o l o r = v e r d e . . . / > ... </ d i b u j o s >
Jose Emilio Labra Gayo Introducci on a XSLT
< x s l : t e m p l a t e match= c u a d r o > <s v g : r e c t f i l l= rgb ({ i d ( @color )}) . . . /> </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Claves e identicadores
Identicadores y claves
El ejemplo anterior puede realizarse mediante una b usqueda completa Limitaci on: la b usqueda completa es poco eciente
< d i b u j o s> < c o l o r e s> < c o l o r i d= r o j o > 2 5 5 , 0 , 0</ c o l o r > < c o l o r i d= a z u l > 0 , 0 , 2 5 5</ c o l o r > ... </ c o l o r e s > < c u a d r o c o l o r = r o j o . . . / > < c u a d r o c o l o r = v e r d e . . . / > ... </ d i b u j o s > < x s l : t e m p l a t e match= c u a d r o > <x s l : v a r i a b l e name= c o l o r s e l e c t= @ c o l o r /> <s v g : r e c t f i l l= rgb ({/ d i b u j o s / c o l o r e s / c o l o r [ @ i d=$ c o l o r ] } ) . . . /> </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Claves e identicadores
Identicadores y Claves
xsl:key permite optimizar la b usqueda de informaci on en un documento XML mediante la creaci on de ndices
< d i b u j o s> < c o l o r e s> < c o l o r i d= r o j o > 2 5 5 , 0 , 0</ c o l o r > < c o l o r i d= a z u l > 0 , 0 , 2 5 5</ c o l o r > ... </ c o l o r e s > < c u a d r o c o l o r = r o j o . . . / > < c u a d r o c o l o r = v e r d e . . . / > ... </ d i b u j o s > < x s l : k e y name= c l a v e C o l o r match= c o l o r u s e= @ i d /> < x s l : t e m p l a t e match= c u a d r o > <s v g : r e c t f i l l= rgb ({ key ( c l a v e C o l o r , @color )}) . . . /> </ x s l : t e m p l a t e >
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Claves e identicadores
Generaci on de identicadores
La funci on generate-id() permite generar un identicador u nico. Toma como argumento un nodo y devuelve un identicador asociado a dicho nodo. Puede ser u til para generaci on de tablas de contenidos
< x s l : t e m p l a t e match=poema mode= c o n t > < l i ><a h r e f=#{ g e n e r a t e i d ( . ) > < x s l : v a l u e o f s e l e c t= t i t u l o /> </ a></ l i > </ x s l : t e m p l a t e > < x s l : t e m p l a t e match=poema > <a name= g e n e r a t e i d ( . ) > ... </ a> </ x s l : t e m p l a t e >
Jose Emilio Labra Gayo Introducci on a XSLT
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Inclusi on
xsl:include permite incluir otra hoja de estilos. La inclusi on act ua como si se hubiese tecleado dir ectamente la hoja incluida en dicho lugar.
< x s l : s t y l e s h e e t v e r s i o n = 1 . 0 x m l n s : x s l= h t t p : //www . w3 . o r g /1999/ XSL/ T r a n s f o r m > <x s l : i n c l u d e h r e f= o t r a H o j a . x s l />
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Importaci on
xsl:import importa el contenido de otra hoja de estilos en el documento actual. Las plantillas de la hoja importada tienen menor prioridad que las plantillas de la hoja principal. La instrucci on import debe aparecer al comienzo de la hoja de estilos. No se permite recursividad
< x s l : s t y l e s h e e t v e r s i o n = 1 . 0 x m l n s : x s l= h t t p : //www . w3 . o r g /1999/ XSL/ T r a n s f o r m > <x s l : i n c l u d e h r e f= o t r a H o j a . x s l />
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Controlando la salida
El elemento output permite controlar el formato del resultado. Puede tener los siguientes atributos: method: indica el tipo de documento a generar. Puede ser xml, text o html encoding: especica la codicaci on del resultado omit-xml-declaration: permite eliminar la declaraci on XML doctype-public y doctype-system especican la DTD del resultado standalone indica si el resultado es standalone o no. cdata-section-elements indica los elementos cuyo resultado se generar a mediante secciones CDATA
Jose Emilio Labra Gayo Introducci on a XSLT
Contenidos
Plantillas
Programaci on
Automatizaci on
M ultiples documentos
Fin de la presentaci on