Introducci´on a XSLTdi002.edv.uniovi.es/~labra/cursos/XMLAvanzado/XSLT.pdf · Contenidos...
Transcript of Introducci´on a XSLTdi002.edv.uniovi.es/~labra/cursos/XMLAvanzado/XSLT.pdf · Contenidos...
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 hacer generar hojas deestilos
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
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