introducci´on a xsltdi002.edv.uniovi.es/~labra/cursos/xml/xslt.pdfplantillas con nombre y...

57
Contenidos Plantillas Programaci´ on Automatizaci´ on ultiples documentos Introducci´ on a XSLT Jose Emilio Labra Gayo Octubre 2006 Jose Emilio Labra Gayo Introducci´ on a XSLT

Upload: others

Post on 26-Apr-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Introduccion a XSLT

Jose Emilio Labra Gayo

Octubre 2006

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Contenidos

PlantillasPlantillas predefinidasCreacion del Arbol de resultado

ProgramacionAlternativas y controlVariables y parametrosPlantillas con nombre y recursividad

AutomatizacionClasificacionNumeracionClaves e identificadores

Multiples documentos

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples 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 ”

xm l n s : x s l=” h t t p : //www. w3 . org /1999/XSL/Transform”></ x s l : s t y l e s h e e t>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Procesadores de hojas de estilos

I Xalanjava org.apache.xalan.Process -in f.xml -xslh.xsl

I XSLT de GNomexsltproc hoja.xsl f.xml

I XMLStarletxml tr hoja.xsl f.xml

I Saxonjava net.sf.saxon.Transform f.xml h.xsl

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples 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 ”

xm l n s : x s l=” h t t p : //www. w3 . org /1999/XSL/Transform”><x s l : o u t p u t method=”html ” />

<x s l : t emp l a t e match=”/”><html><head>< t i t l e>Ejemplo</ t i t l e></head><body><h1>Poema</h1>

</body></html>

</ x s l : t emp l a t e></ x s l : s t y l e s h e e t>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Reglas de Plantillas

Las reglas de plantillas (templates) se identifican mediante:

<x s l : t emp l a t e match=” . . . ”>. . . r e s u l t a d o . . .

</ x s l : t emp l a t e>

El valor del atributo match es una expresion XPathCuando el procesador encaja el nodo actual con la expresiongenera el valor de la plantilla

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Asociaciar hoja de estilos a documento XML

Es posible indicar en el documento XML que hoja de estilos llevaasociadaUn navegador puede reconocer dicha informacion y mostrar elresultado de la transformacion

<?xml v e r s i o n=” 1 .0 ”?><?xml−s t y l e s h e e t type=” t e x t / x s l ” h r e f=” ho ja . x s l ” ?><poema f e cha=” Ab r i l de 1915” l u g a r=”Granada”>< t i t u l o>Alba</ t i t u l o><v e r s o>Mi corazon op r im ido</ v e r s o><v e r s o> l a t e j un t o a l a a l bo r ada</ v e r s o>. . .

</poema>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Obtener valores

<x s l : t emp l a t e match=”poema”>Fecha : <x s l : v a l u e−o f s e l e c t=”@fecha ”/> ,Luga r : <x s l : v a l u e−o f s e l e c t=” @lugar ”/>

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Aplicando plantillas

Por defecto, el procesador lee el documento y recorre el arbolsegun el orden de los nodosapply-templates permite indicar al procesador que continueprocesando ciertas reglas de plantillas

<x s l : t emp l a t e match=”poema”>Ve r s o s : <x s l : app l y− t emp 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 : app l y− t emp l a t e s s e l e c t=” t i t u l o ” />

</ x s l : t emp l a t e>

apply-templates sin argumentos selecciona todos los hijos delnodo actual.

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Modos

Es posible indicar varios modos de recorrido

Crear una tabla de contenidos

<x s l : t emp l a t e match=”/”>Con t en i d o s :<u l><x s l : app l y− t emp l a t e s mode=” cont ” /></ u l>

<x s l : app l y− t emp l a t e s /></ x s l : t emp l a t e>

<x s l : t emp l a t e match=”poema” mode=” cont ”>< 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 emp l a t e>

<x s l : t emp l a t e match=”poema”>. . .

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Plantillas predefinidas

Plantillas predefinidas

Las plantillas predefinidas tienen la menor prioridad posiblePueden re-definirse por la aplicacion

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Plantillas predefinidas

Plantilla para nodos de texto y atributos

<x s l : t emp 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 emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Plantillas predefinidas

Plantilla para elementos y raız

<x s l : t emp l a t e match=” ∗ |/ ”><x s l : v a l u e−o f app l y− t emp la te s />

</ x s l : t emp l a t e>

Nota: Esta plantilla funciona para cualquier modo

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Plantillas predefinidas

Plantillas para el resto de nodos

Las instrucciones de procesamiento, comentarios y espacios denombre se ignoran

<x s l : t emp 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

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Creacion del Arbol de resultado

Arbol de resultado literal

Todos los elementos que no pertenezcan al espacio de nombres deXSLT son generados en el arbol de resultado.Se anaden todas las declaraciones de espacios de nombresutilizadasExcepciones:

I El atributo extension-element-prefixes permite indicarque ciertos prefijos de espacios de nombres son instrucciones yque no forman parte del arbol de resultado

I El atributo exclude-result-prefixes permite omitirespacios de nombres

I Es posible definir un alias para un espacio de nombresmediante namespace-alias. Util para generar hojas de estilos

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Creacion del Arbol de resultado

Creacion de elementos

Mediante element puede definirse un elemento nuevo.

<x s l : t emp l a t e match=”poema”><x s l : e l emen 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 emen t></ x s l : t emp l a t e>

Puede especificarse el espacio de nombres del elemento mediante elatributo namespace

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Creacion del Arbol de resultado

Creacion de atributos

Mediante attribute puede definirse un atributo nuevo.

<e n l a c eu r l=” h t t p : //www. u n i o v i . e s ”>Un i v e r s i d a d</ en l a c e>

<x s l : t emp l a t e match=” en l a c e ”><x s l : e l emen 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=” @ur 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 emen t></ x s l : t emp l a t e>

resultado

<ah r e f=” h t t p : //www. u n i o v i . e s ”>Un i v e r s i d a d</a>

Puede especificarse el espacio de nombres mediante el atributonamespaceJose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Creacion del Arbol de resultado

Plantillas de atributos

Mediante {...} es posible incluir expresiones XPath en unatributo que son evaluadas al generar el resultado.

<e n l a c eu r l=” h t t p : //www. u n i o v i . e s ”>Un i v e r s i d a d</ en l a c e>

<x s l : t emp l a t e match=” en l a c e ”><a h r e f=”{@ur l }”><x s l : v a l u e−o f s e l e c t=” . ” />

</a></ x s l : t emp l a t e>

resultado

<ah r e f=” h t t p : //www. u n i o v i . e s ”>Un i v e r s i d a d</a>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Creacion del Arbol de resultado

Conjuntos de atributos

Mediante attribute-set pueden definirse conjuntos de atributospara su reutilizacion 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=”width ”>250px</ 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=” he i g h t ”>250px</ 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=”width ”>50px</ 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=” he i g h t ”>50px</ 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 emp l a t e match=” imagen” mode=” cont ”><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=”{@src }” />

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Creacion del Arbol de resultado

Texto

Mediante text se puede incluir texto

<x s l : t emp 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=”@fecha ” /><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=” @lugar ” />

</h2></ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Creacion del Arbol de resultado

Comentarios

Para anadir comentarios al resultado se utiliza comment

<x s l : t emp l a t e match=”/”><poema><xsl :comment>Generado mediante XSLT</ xsl :comment><x s l : app l y− t emp l a t e s /></poema>

<x s l : t emp l a t e>

<poema><!−− Generado mediante XSLT −−>

. . .</poema>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Creacion del Arbol de resultado

Instrucciones de procesamiento

Para anadir instrucciones de procesamiento se utilizaprocessing-instruction

<x s l : t emp 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=” xm l− s t y l e s h e e t ”>h r e f=”poema . x s l ”type=” 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 ” type=” t e x t / x s l ”?>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Creacion del Arbol de resultado

Copiado de contenido

Mediante copy es posible crear una copia del nodo actualNo se copian los atributos ni los hijos salvo que se especifiquemediante apply-templates

<x s l : t emp 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 : app l y− t emp l a t e s />

</ x s l : c o p y></ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Creacion del Arbol de resultado

Copiado de contenido

copy-of permite indicar los nodos que seran copiados al resultadomediante el atributo selectCopiado de todo el poema

<x s l : t emp l a t e match=”poema”><x s l : copy−o f s e l e c t=” . ” />

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Creacion del Arbol de resultado

Ejemplo

Hoja de estilos identidad

La siguiente hoja de estilos toma un documento XML y devuelvecomo resultado el mismo documento.<x s l : s t y l e s h e e t

xm l n s : x s l= ’ h t t p : //www. w3 . org /1999/XSL/Transform ’v e r s i o n=” 1 .0 ” >

<x s l : t emp l a t ematch=”@∗ | ∗ | 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 : app l y− t emp l a t e ss 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 emp l a t e></ x s l : s t y l e s h e e t>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Creacion del Arbol de resultado

Ejercicio

Eliminar instrucciones de procesamiento

Crear una hoja de estilos que tome un documento XML y devuelva elmismo 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

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Alternativas y control

Condicional

xsl:if establece una condicion para generar el resultadoNOTA: No tiene else

<x s l : t emp l a t e match=”poema”>< x s l : i f t e s t=” @lugar=’Granada ’ ”><xsl :comment>Granada</ xsl :comment>

</ x s l : i f><x s l : app l y− t emp l a t e s />

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Alternativas y control

Condicional

xsl:choose selecciona entre varias alternativas

<x s l : t emp l a t e match=”poema”><x s l : c h o o s e><xs l :when t e s t=” @lugar=’Granada ’ ”><xsl :comment>Granada</ xsl :comment></ xs l :when>

<xs l :when t e s t=” @lugar=’Oviedo ’ ”><xsl :comment>Oviedo</ xsl :comment>

</ xs l :when><x s l : o t h e rw i s e><xsl :comment>Otro l u g a r</ xsl :comment>

</ x s l : o t h e rw i s e></ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Alternativas y control

Repeticion

for-each repite un procesamiento para un conjunto de nodos

<x s l : t emp l a t e match=”poema”><u l><x s l : f o r− ea ch 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− ea ch></ u l></ x s l : t emp l a t e>

NOTA: No es un bucle for convencional

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Alternativas y control

Ejercicio

Formatear un libro

Crear una hoja de estilos que tome un documento que represente unlibro y genere una pagina 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 alanterior

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Alternativas y control

Ejercicio

Formatear una lista de notas

Crear una hoja de estilos que tome un documento que representeuna lista de alumnos con sus respectivas notas y las formatee en unapagina Web.Como ejemplo, puede utilizarse el documento siguiente

I Crear una representacion en forma de tabla

I Anadir una fila con el porcentaje de aprobados

I Incluir un enlace del tipo mailto: en cada una de lasdirecciones de los alumnos

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Alternativas y control

Ejercicio

Lista de eventos

Crear un vocabulario que represente eventosCada evento tendra asociada la siguiente informacion:

I Tıtulo

I Fecha: hora, dıa, mes y ano

I Descripcion (texto libre con marcas HTML)

I Lugar

I Otra informacion que se considere interesante

Crear un documento de ejemplo de eventosCrear una hoja de estilos que transforme documentos con eventosen formato HTML

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Alternativas y control

Ejercicio

Formato Atom

Crear una hoja de estilos que convierta documentos en formato Atomen documentos en el formato de eventos desarrollado en el ejercicioanterior

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Variables y parametros

Variables

variable permite declarar una variableNOTA: Los valores de las variables no pueden modificarse =Programacion declarativa!

<x s l : t emp l a t e match=” r e c t a n gu l o ”><x s l : v a r i a b l e name=” a rea ” s e l e c t=”@base ∗ @a l t u r a ” />

El a r ea es<x s l : v a l u e−o f s e l e c t=”$ a r ea ” /> ye l dob l e d e l a r ea e s<x s l : v a l u e−o f s e l e c t=”$ a r ea ∗ 2” />

</ x s l : t emp l a t e>

Lo que no se puede hacer es:

< x s l : v a r i a b l e name=” a rea ” s e l e c t=”$ a r ea = $ a rea ∗ 2”/>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Variables y parametros

Parametros

Mediante param pueden definirse parametros de la hoja de estilos.Son similares a las variables.La principal diferencia es que los parametros toman valores pordefecto que pueden ser alterados cuando la plantilla o la hoja deestilo es invocada

<x s l : pa ram name=” ha z I n d i c e ”>SI</ x s l : pa ram>

<x s l : t emp 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 : app l y− t emp l a t e s mode=” i n d i c e ” />

</ x s l : i f><x s l : app l y− t emp l a t e s />

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Plantillas con nombre y recursividad

Plantillas con nombre

Mediante el atributo name es posible asociar un nombre a unaplantillaPara invocar la plantilla se utiliza call-templateSe pueden pasar parametros mediante with-param

<x s l : t emp l a t e name=”suma”><x s l : pa ram name=”a” /><x s l : pa ram name=”b” /><x s l : v a l u e−o f s e l e c t=”$a + $b” />

</ x s l : t emp l a t e>

<x s l : t emp l a t e match=”/”><x s l : c a l l− t emp l a t e name=”suma”><xs l :w ith−param name=”a” s e l e c t=”2” /><xs l :w ith−param name=”b” s e l e c t=”3” />

</ x s l : c a l l− t emp l a t e></ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Plantillas con nombre y recursividad

Recursividad

Factorial

<x s l : t emp l a t e name=” f a c t ”><x s l : pa ram name=”n” /><x s l : c h o o s e><xs l :when t e s t=”$n=0”>1</ xs l :when><x s l : o t h e rw i s e><x s l : v a r i a b l e name=” r ”><x s l : c a l l− t emp l a t e name=” f a c t ”><xs l :w ith−param name=”n” s e l e c t=”$n − 1”/>

</ x s l : c a l l− t emp 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 rw i s e></ x s l : c h o o s e>

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Plantillas con nombre y recursividad

Ejercicio

Bucle for

Crear una hoja de estilos que tome un numero n y genere una listade n items con el siguiente formato:

<u l>< l i>I tem 1</ l i>< l i>I tem 2</ l i>< l i>I tem 3</ l i>. . .

</ u l>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Plantillas con nombre y recursividad

Ejercicio

Tabla

Crear una hoja de estilos que tome un numero n y genere una tablaHTML de n filas y n columnas

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Plantillas con nombre y recursividad

Ejercicio

Substituir

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

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Plantillas con nombre y recursividad

Ejercicio

Crear un calendario

Crear una hoja de estilos que tome como argumento un mes y unano y genere un calendario. Puede partirse del siguiente documentoXML y de la siguiente hoja de estilos

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Plantillas con nombre y recursividad

Ejercicio

Eventos en calendario

Crear una hoja de estilos que represente documentos de eventos enun calendario

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Plantillas con nombre y recursividad

Mensajes y terminacion

XSLT es un lenguaje pensado para transformar documentos XMLI No tiene mecanismos de interaccion con el usuarioI Para cambiar el comportamiento se le pueden pasar

parametrosI El elemento message muestra un mensaje. Puede ser util para

depuracion. El atributo terminate permite indicar alprocesador que aborte la ejecucion

<x s l : t emp l a t e name=” imagen”>< x s l : i f t e s t=”not ( @hre f ) ”><x s l :mes sage t e rm i n a t e=” yes ”>

No se encuen t r a v a l o r de h r e f en imagen</ x s l :mes sage>. . .

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Clasificacion

Clasificacion

sort realiza una clasificacion del conjunto de nodosPuede utilizarse mas de un criterio de clasificacion

<x s l : t emp l a t e match=”alumnos ”><x s l : f o r− ea ch 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− ea ch>

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Clasificacion

Clasificacion

El atributo data-type permite indicar la forma de clasificacion:I number: numericaI text: textual (por defecto)

El atributo order indica el tipo de clasificacion:I ascending: ascendente (por defecto)I descending: descendente

<x s l : t emp l a t e match=”alumnos ”><x s l : f o r− ea ch s e l e c t=”alumno”>

< x s l : s o r t s e l e c t=”nota ”data−type=”number”o r d e r=” de s c end i ng ”/>

<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− ea ch>

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Numeracion

Numeracion automatica

El elemento number permite insertar un numero formateado en elresultado

<x s l : t emp l a t e match=”alumnos ”><x s l : f o r− ea ch 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>

<xs l :number v a l u e=” p o s i t i o n ( ) ” fo rmat=” 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− ea ch>

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Numeracion

Estilo de numeracion

Los atributos de number permiten modificar el formato de lanumeracion

I level indica nivel de numeracion (multiple, single o any)

I count indica que valores en dichos niveles.

I from indica desde donde empezar la numeracion

I format indica formato. Ejemplos: 1. , a. , I. , 001. , etc.

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Numeracion

Formato de numeracion

El elemento number-format especifica el formato del numeroLos atributos para controlar el formato de salida son:

I decimal-separatorI grouping-separatorI percentI per-milleI zero-digitI digitI pattern-separatorI infinityI NaNI minus-sign

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Claves e identificadores

Identificadores

La funcion id permite seleccionar un elemento con un identificadordeterminadoPuede ser util para buscar elementosLimitacion: 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 ”>255 ,0 ,0</ c o l o r><c o l o r i d=” a zu l ”>0 ,0 ,255</ c o l o r>. . .

</ c o l o r e s>

<cuadro c o l o r=” r o j o ” . . . /><cuadro c o l o r=” ve rde ” . . . />. . .

</ d i b u j o s>

<x s l : t emp l a t e match=” cuadro ”>< s v g : r e c t

f i l l =” rgb ({ i d ( @co l o r )} ) ”. . . />

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Claves e identificadores

Identificadores y claves

El ejemplo anterior puede realizarse mediante una busquedacompletaLimitacion: la busqueda completa es poco eficiente

<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 ”>255 ,0 ,0</ c o l o r><c o l o r i d=” a zu l ”>0 ,0 ,255</ c o l o r>. . .

</ c o l o r e s>

<cuadro c o l o r=” r o j o ” . . . /><cuadro c o l o r=” ve rde ” . . . />. . .

</ d i b u j o s>

<x s l : t emp l a t e match=” cuadro ”><x s l : v a r i a b l e

name=” c o l o r ”s e l e c t=” @co lo r ” />

< s v g : r e c tf i l l =” rgb ({/ d i b u j o s / c o l o r e s / c o l o r

[ @id=$c o l o r ] } ) ”. . . />

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Claves e identificadores

Identificadores y Claves

xsl:key permite optimizar la busqueda de informacion en undocumento XML mediante la creacion 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 ”>255 ,0 ,0</ c o l o r><c o l o r i d=” a zu l ”>0 ,0 ,255</ c o l o r>. . .

</ c o l o r e s>

<cuadro c o l o r=” r o j o ” . . . /><cuadro c o l o r=” ve rde ” . . . />. . .

</ d i b u j o s>

<x s l : k e y name=” c l a v eCo l o r ”match=” c o l o r ”use=”@id” />

<x s l : t emp l a t e match=” cuadro ”>< s v g : r e c t

f i l l =” rgb ({ key ( ’ c l a v eCo l o r ’ ,@co l o r )} ) ”. . . />

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Claves e identificadores

Generacion de identificadores

La funcion generate-id() permite generar un identificador unico.Toma como argumento un nodo y devuelve un identificadorasociado a dicho nodo.Puede ser util para generacion de tablas de contenidos

<x s l : t emp l a t e match=”poema” mode=” cont ”>< l i><a h r e f=”#{gene ra 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 emp l a t e>

<x s l : t emp l a t e match=”poema”><a name=” gene ra t e− i d ( . ) ”>

. . .</a>

</ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Inclusion

xsl:include permite incluir otra hoja de estilos.La inclusion actua como si se hubiese tecleado directamente lahoja 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 ”xm l n s : x s l=” h t t p : //www. w3 . org /1999/XSL/Transform”>

<x s l : i n c l u d e h r e f=” ot raHo ja . x s l ” />

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

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Importacion

xsl:import importa el contenido de otra hoja de estilos en eldocumento actual.Las plantillas de la hoja importada tienen menor prioridad que lasplantillas de la hoja principal.La instruccion import debe aparecer al comienzo de la hoja deestilos. 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 ”xm l n s : x s l=” h t t p : //www. w3 . org /1999/XSL/Transform”>

<x s l : i n c l u d e h r e f=” ot raHo ja . x s l ” />

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

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Acceso a otros documentos

La funcion document() permite acceder al contenido de otrosdocumentos XML.El argumento es la URI del documento a acceder. Si no tieneargumentos, se accede al documento de la hoja de estilos

<x s l : t emp l a t e match=”verAlumnos ”><x s l : f o r− ea ch

s e l e c t=”document ( ’ alumnos . xml ’ ) / alumnos /alumno”><p><x s l : v a l u e−o f s e l e c t=”nota ”/></p>

</ x s l : f o r− ea ch></ x s l : t emp l a t e>

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples 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 serxml, text o html

I encoding: especifica la codificacion del resultado

I omit-xml-declaration: permite eliminar la declaracionXML

I doctype-public y doctype-system especifican la DTD delresultado

I standalone indica si el resultado es standalone o no.

I cdata-section-elements indica los elementos cuyoresultado se generara mediante secciones CDATA

Jose Emilio Labra Gayo

Introduccion a XSLT

Contenidos Plantillas Programacion Automatizacion Multiples documentos

Fin de la presentacion

Jose Emilio Labra Gayo

Introduccion a XSLT