You are on page 1of 57

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Introducci on a XSLT
Jose Emilio Labra Gayo

Octubre 2006

Jose Emilio Labra Gayo Introducci on a XSLT

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

Formato de una hoja de estilos


<? 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 : s t y l e s h e e t >

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Procesadores de hojas de estilos


Xalan java org.apache.xalan.Process -in f.xml -xsl h.xsl XSLT de GNome xsltproc hoja.xsl f.xml XMLStarlet xml tr hoja.xsl f.xml Saxon java net.sf.saxon.Transform f.xml h.xsl

Jose Emilio Labra Gayo Introducci on a XSLT

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Reglas de Plantillas

Las reglas de plantillas (templates) se identican mediante:


< x s l : t e m p l a t e match= . . . > . . . resultado . . . </ x s l : t e m p l a t e >

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

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Asociaciar hoja de estilos a documento XML


Es posible indicar en el documento XML qu e hoja de estilos lleva asociada Un navegador puede reconocer dicha informaci on y mostrar el resultado de la transformaci on
<? xml v e r s i o n = 1 . 0 ?> <? xml s t y l e s h e e t t y p e= t e x t / x s l h r e f= h o j a . x s l ?> <poema f e c h a= A b r i l de 1915 l u g a r= Granada > < t i t u l o > A l b a</ t i t u l o > < v e r s o>Mi c o r a z o n o p r i m i d o</ v e r s o> < v e r s o> l a t e j u n t o a l a a l b o r a d a</ v e r s o> . . . </poema>

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Obtener valores

< x s l : t e m p l a t e match=poema > F e c h a : < x s l : v a l u e o f s e l e c t= @ f e c h a /> , L u g a r : < x s l : v a l u e o f s e l e c t= @ l u g a r /> </ 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

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

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

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Plantillas predenidas

Plantilla para nodos de texto y atributos

< x s l : t e m p l a t e match= t e x t ( ) | @ > < x s l : v a l u e o f s e l e c t= . /> </ 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

Plantillas predenidas

Plantilla para elementos y ra z

< x s l : t e m p l a t e match= | / > < x s l : v a l u e o f 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 >

Nota: Esta plantilla funciona para cualquier modo

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Plantillas predenidas

Plantillas para el resto de nodos

Las instrucciones de procesamiento, comentarios y espacios de nombre se ignoran


< 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 ( ) />

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Creaci on del Arbol de resultado

Arbol de resultado literal


Todos los elementos que no pertenezcan al espacio de nombres de XSLT son generados en el arbol de resultado. Se a naden todas las declaraciones de espacios de nombres utilizadas Excepciones: El atributo extension-element-prefixes permite indicar que ciertos prejos de espacios de nombres son instrucciones y que no forman parte del arbol de resultado El atributo exclude-result-prefixes permite omitir espacios de nombres Es posible denir un alias para un espacio de nombres para generar hojas de estilos mediante namespace-alias. Util
Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Creaci on del Arbol de resultado

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 >

Puede especicarse el espacio de nombres del elemento mediante el atributo namespace

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Creaci on del Arbol de resultado

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>

Jose Emilio Labra Gayo Introducci on a XSLT

Puede especicarse el espacio de nombres mediante el atributo namespace

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Creaci on del Arbol de resultado

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Creaci on del Arbol de resultado

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Creaci on del Arbol de resultado

Texto

Mediante text se puede incluir texto


< x s l : t e m p l a t e match=poema > <h1> T i t u l o : < x s l : v a l u e o f s e l e c t= t i t u l o /></ h1> <h2> Fecha y l u g a r : < x s l : v a l u e o f s e l e c t= @ f e c h a /> < x s l : t e x t > </ x s l : t e x t > < x s l : v a l u e o f s e l e c t= @ l u g a r /> </ h2> </ 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

Creaci on del Arbol de resultado

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>

<poema> < ! G e n e r a d o m e d i a n t e XSLT > ... </poema>

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Creaci on del Arbol de resultado

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

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Creaci on del Arbol de resultado

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Creaci on del Arbol de resultado

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Creaci on del Arbol de resultado

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Creaci on del Arbol de resultado

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.

Jose Emilio Labra Gayo Introducci on a XSLT

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Alternativas y control

Repetici on

for-each repite un procesamiento para un conjunto de nodos


< x s l : t e m p l a t e match=poema > < u l> < x s l : f o r e a c h s e l e c t= v e r s o > < l i >< x s l : v a l u e o f s e l e c t= . /></ l i > </ x s l : f o r e a c h> </ u l > </ x s l : t e m p l a t e >

NOTA: No es un bucle for convencional

Jose Emilio Labra Gayo Introducci on a XSLT

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

Jose Emilio Labra Gayo Introducci on a XSLT

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

Jose Emilio Labra Gayo Introducci on a XSLT

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

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Variables y par ametros

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 >

Lo que no se puede hacer es:


< x s l : v a r i a b l e name= a r e a s e l e c t= $ a r e a = $ a r e a 2 />
Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Variables y par ametros

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Plantillas con nombre y recursividad

Plantillas con nombre


Mediante el atributo name es posible asociar un nombre a una plantilla Para invocar la plantilla se utiliza call-template Se pueden pasar par ametros mediante with-param
< x s l : t e m p l a t e name= suma > < x s l : p a r a m name= a /> < x s l : p a r a m name=b /> < x s l : v a l u e o f s e l e c t= $ a + $b /> </ x s l : t e m p l a t e > < x s l : t e m p l a t e match= / > < x s l : c a l l t e m p l a t e name= suma > < x s l : w i t h p a r a m name= a s e l e c t= 2 /> < x s l : w i t h p a r a m name=b s e l e c t= 3 /> </ x s l : c a l l t e m p l a t 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

Plantillas con nombre y recursividad

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Plantillas con nombre y recursividad

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Plantillas con nombre y recursividad

Ejercicio

Tabla Crear una hoja de estilos que tome un n umero n y genere una tabla HTML de n las y n columnas

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Plantillas con nombre y recursividad

Ejercicio

Substituir Crear una hoja de estilos que tome un documento y substituya todas las apariciones de una cadena de texto por otra.

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Plantillas con nombre y recursividad

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

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Plantillas con nombre y recursividad

Ejercicio

Eventos en calendario Crear una hoja de estilos que represente documentos de eventos en un calendario

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Plantillas con nombre y recursividad

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

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

Numeraci on autom atica


El elemento number permite insertar un n umero formateado en el resultado
< 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 /> <p> < x s l : n u m b e r v a l u e= p o s i t i o n ( ) f o r m a t= 1 . /> < 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 >

Jose Emilio Labra Gayo Introducci on a XSLT

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.

Jose Emilio Labra Gayo Introducci on a XSLT

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

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 >

Jose Emilio Labra Gayo Introducci on a XSLT

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

... </ x s l : s t y l e s h e e t >

Jose Emilio Labra Gayo Introducci on a XSLT

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

... </ x s l : s t y l e s h e e t >

Jose Emilio Labra Gayo Introducci on a XSLT

Contenidos

Plantillas

Programaci on

Automatizaci on

M ultiples documentos

Acceso a otros documentos


La funci on document() permite acceder al contenido de otros documentos XML. El argumento es la URI del documento a acceder. Si no tiene argumentos, se accede al documento de la hoja de estilos
< x s l : t e m p l a t e match= v e r A l u m n o s > <x s l : f o r e a c h s e l e c t= document ( a l u m n o s . xml ) / a l u m n o s / alumno > <p>< x s l : v a l u e o f s e l e c t= n o t a /></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

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

Jose Emilio Labra Gayo Introducci on a XSLT

You might also like