0% encontró este documento útil (0 votos)
55 vistas57 páginas

XSLT

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 57

Contenidos Plantillas Programación Automatización Múltiples documentos

Introducción a XSLT

Jose Emilio Labra Gayo

Octubre 2006

Jose Emilio Labra Gayo


Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Contenidos
Plantillas
Plantillas predefinidas
Creación del Árbol de resultado
Programación
Alternativas y control
Variables y parámetros
Plantillas con nombre y recursividad
Automatización
Clasificación
Numeración
Claves e identificadores
Múltiples documentos

Jose Emilio Labra Gayo


Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Procesadores de hojas de estilos

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

Jose Emilio Labra Gayo


Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Reglas de Plantillas

Las reglas de plantillas (templates) se identifican 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ón XPath


Cuando el procesador encaja el nodo actual con la expresión
genera el valor de la plantilla

Jose Emilio Labra Gayo


Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Asociaciar hoja de estilos a documento XML

Es posible indicar en el documento XML qué hoja de estilos lleva


asociada
Un navegador puede reconocer dicha información y mostrar el
resultado de la transformación
<? 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Aplicando plantillas

Por defecto, el procesador lee el documento y recorre el árbol


según el orden de los nodos
apply-templates permite indicar al procesador que continúe
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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Plantillas predefinidas

Plantillas predefinidas

Las plantillas predefinidas tienen la menor prioridad posible


Pueden re-definirse por la aplicación

Jose Emilio Labra Gayo


Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Plantillas predefinidas

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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Plantillas predefinidas

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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Plantillas predefinidas

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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Creación del Árbol de resultado

Árbol de resultado literal


Todos los elementos que no pertenezcan al espacio de nombres de
XSLT son generados en el árbol de resultado.
Se añaden todas las declaraciones de espacios de nombres
utilizadas
Excepciones:
I El atributo extension-element-prefixes permite indicar
que ciertos prefijos de espacios de nombres son instrucciones y
que no forman parte del árbol de resultado
I El atributo exclude-result-prefixes permite omitir
espacios de nombres
I Es posible definir un alias para un espacio de nombres
mediante namespace-alias. Útil para generar hojas de estilos
Jose Emilio Labra Gayo
Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Creación del Árbol de resultado

Creación de elementos

Mediante element puede definirse 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 especificarse el espacio de nombres del elemento mediante el


atributo namespace

Jose Emilio Labra Gayo


Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Creación del Árbol de resultado

Creación de atributos
Mediante attribute puede definirse 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 ”> <a
<x s l : e l e m e n t name=” a ”> h r e f=” h t t p : //www . u n i o v i . e s ”>
< x s l : a t t r i b u t e name=” h r e f ”> U n i v e r s i d a d</ a>
<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>

Puede especificarse el espacio de nombres mediante el atributo


namespace
Jose Emilio Labra Gayo
Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Creación del Árbol 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
< x s l : t e m p l a t e match=” e n l a c e ”> h r e f=” h t t p : //www . u n i o v i . e s ”>
<a h r e f=” { @ u r l } ”> U n i v e r s i d a d</ a>
<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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Creación del Árbol de resultado

Conjuntos de atributos
Mediante attribute-set pueden definirse conjuntos de atributos
para su reutilización 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Creación del Árbol 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Creación del Árbol de resultado

Comentarios

Para añadir 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Creación del Árbol de resultado

Instrucciones de procesamiento

Para añadir 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Creación del Árbol 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 especifique
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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Creación del Árbol de resultado

Copiado de contenido

copy-of permite indicar los nodos que serán 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Creación del Árbol 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Creación del Árbol 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Alternativas y control

Condicional

xsl:if establece una condición 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Alternativas y control

Repetición

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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples 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ágina Web.
Como ejemplo, puede utilizarse el documento siguiente
I Incluir una tabla de contenidos con enlaces a cada capı́tulo
I Incluir enlaces en cada capı́tulo al capı́tulo siguiente y al
anterior

Jose Emilio Labra Gayo


Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples 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ágina Web.
Como ejemplo, puede utilizarse el documento siguiente
I Crear una representación en forma de tabla
I Añadir una fila con el porcentaje de aprobados
I Incluir un enlace del tipo mailto: en cada una de las
direcciones de los alumnos

Jose Emilio Labra Gayo


Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Alternativas y control

Ejercicio
Lista de eventos
Crear un vocabulario que represente eventos
Cada evento tendrá asociada la siguiente información:
I Tı́tulo
I Fecha: hora, dı́a, mes y año
I Descripción (texto libre con marcas HTML)
I Lugar
I Otra información 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Variables y parámetros

Variables
variable permite declarar una variable
NOTA: Los valores de las variables no pueden modificarse =
Programación 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Variables y parámetros

Parámetros

Mediante param pueden definirse parámetros de la hoja de estilos.


Son similares a las variables.
La principal diferencia es que los parámetros 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples 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ámetros 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Plantillas con nombre y recursividad

Ejercicio

Bucle for
Crear una hoja de estilos que tome un número 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Plantillas con nombre y recursividad

Ejercicio

Tabla
Crear una hoja de estilos que tome un número n y genere una tabla
HTML de n filas y n columnas

Jose Emilio Labra Gayo


Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Plantillas con nombre y recursividad

Ejercicio

Crear un calendario
Crear una hoja de estilos que tome como argumento un mes y un
año y genere un calendario. Puede partirse del siguiente documento
XML y de la siguiente hoja de estilos

Jose Emilio Labra Gayo


Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Plantillas con nombre y recursividad

Mensajes y terminación
XSLT es un lenguaje pensado para transformar documentos XML
I No tiene mecanismos de interacción con el usuario
I Para cambiar el comportamiento se le pueden pasar
parámetros
I El elemento message muestra un mensaje. Puede ser útil para
depuración. El atributo terminate permite indicar al
procesador que aborte la ejecución

< 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Clasificación

Clasificación

sort realiza una clasificación del conjunto de nodos


Puede utilizarse más de un criterio de clasificación
< 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Clasificación

Clasificación
El atributo data-type permite indicar la forma de clasificación:
I number: numérica
I text: textual (por defecto)
El atributo order indica el tipo de clasificación:
I ascending: ascendente (por defecto)
I 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Numeración

Numeración automática

El elemento number permite insertar un número 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Numeración

Estilo de numeración

Los atributos de number permiten modificar el formato de la


numeración
I level indica nivel de numeración (multiple, single ó any)
I count indica qué valores en dichos niveles.
I from indica desde dónde empezar la numeración
I format indica formato. Ejemplos: 1. , a. , I. , 001. , etc.

Jose Emilio Labra Gayo


Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Numeración

Formato de numeración
El elemento number-format especifica el formato del número
Los atributos para controlar el formato de salida son:
I decimal-separator
I grouping-separator
I percent
I per-mille
I zero-digit
I digit
I pattern-separator
I infinity
I NaN
I minus-sign

Jose Emilio Labra Gayo


Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Claves e identificadores

Identificadores
La función id permite seleccionar un elemento con un identificador
determinado
Puede ser útil para buscar elementos
Limitación: 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>
< x s l : t e m p l a t e match=” c u a d r o ”>
<c o l o r i d=” a z u l ”>0 , 0 , 2 5 5</ c o l o r>
<s v g : r e c t
...
f i l l=
</ c o l o r e s>
” rgb ({ i d ( @color )}) ”
. . . />
<c u a d r o c o l o r=” r o j o ” . . . / >
</ x s l : t e m p l a t e>
<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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Claves e identificadores

Identificadores y claves
El ejemplo anterior puede realizarse mediante una búsqueda
completa
Limitación: la búsqueda completa es poco eficiente

<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 ”>
< c o l o r e s>
<x s l : v a r i a b l e
<c o l o r i d=” r o j o ”>2 5 5 , 0 , 0</ c o l o r>
name=” 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>
s e l e c t=” @ c o l o r ” />
...
<s v g : r e c t
</ c o l o r e s>
f i l l=
” rgb ({/ d i b u j o s / c o l o r e s / c o l o r
<c u a d r o c o l o r=” r o j o ” . . . / >
[ @ i d=$ c o l o r ] } ) ”
<c u a d r o c o l o r=” v e r d e ” . . . / >
. . . />
...
</ x s l : t e m p l a t e>
</ d i b u j o s>

Jose Emilio Labra Gayo


Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Claves e identificadores

Identificadores y Claves

xsl:key permite optimizar la búsqueda de información en un


documento XML mediante la creación de ı́ndices
<d i b u j o s> < x s l : k e y name=” c l a v e C o l o r ”
< c o l o r e s> match=” c o l o r ”
<c o l o r i d=” r o j o ”>2 5 5 , 0 , 0</ c o l o r> u s e=” @ i d ” />
<c o l o r i d=” a z u l ”>0 , 0 , 2 5 5</ c o l o r>
... < x s l : t e m p l a t e match=” c u a d r o ”>
</ c o l o r e s> <s v g : r e c t
f i l l=
<c u a d r o c o l o r=” r o j o ” . . . / > ” rgb ({ key ( ’ c l a v e C o l o r ’ ,
<c u a d r o c o l o r=” v e r d e ” . . . / > @color )}) ”
... . . . />
</ d i b u j o s> </ x s l : t e m p l a t e>

Jose Emilio Labra Gayo


Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Claves e identificadores

Generación de identificadores
La función generate-id() permite generar un identificador único.
Toma como argumento un nodo y devuelve un identificador
asociado a dicho nodo.
Puede ser útil para generación 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Inclusión

xsl:include permite incluir otra hoja de estilos.


La inclusión actúa como si se hubiese tecleado diréctamente 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Importación
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ón 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Acceso a otros documentos

La función 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ón a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Controlando la salida
El elemento output permite controlar el formato del resultado.
Puede tener los siguientes atributos:
I method: indica el tipo de documento a generar. Puede ser
xml, text ó html
I encoding: especifica la codificación del resultado

I omit-xml-declaration: permite eliminar la declaración


XML
I doctype-public y doctype-system especifican la DTD del
resultado
I standalone indica si el resultado es standalone o no.

I cdata-section-elements indica los elementos cuyo


resultado se generará mediante secciones CDATA
Jose Emilio Labra Gayo
Introducción a XSLT
Contenidos Plantillas Programación Automatización Múltiples documentos

Fin de la presentación

Jose Emilio Labra Gayo


Introducción a XSLT

También podría gustarte