Tendencias en XSLT

Transcripción

Tendencias en XSLT
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
Tendencias en XSLT
Jose Emilio Labra Gayo
Noviembre 2006
Jose Emilio Labra Gayo
Tendencias en XSLT
Extensiones
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
Contenidos
Aplicaciones XSLT
Ejecuci[Pleaseinsertintopreamble]n en servidor
Ejecución en cliente
Algunas Aplicaciones de XSLT
Extensiones
EXSLT
XSLT 2.0
Jose Emilio Labra Gayo
Tendencias en XSLT
Extensiones
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
Extensiones
Ejecución en servidor
Programación XSLT en Java
I
I
JAXP (Java API for XML Processing) incluye ofrece
funcionalidad para trabajar con XSLT
La parte de JAXP dedicada a las transformaciones es TrAX
(Transformation API for XML) y contiene los siguientes
paquetes:
I
I
I
I
javax.xml.transform: núcleo de interfaces para
transformación
javax.xml.transform.sax: interfaces de transformación
basados en SAX
javax.xml.transform.dom: interfaces relacionados con
DOM
javax.xml.transform.stream: interfaces relacionados con
flujos
Jose Emilio Labra Gayo
Tendencias en XSLT
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
Ejecución en servidor
Programación XSLT en Java: Ejemplo
S t r i n g xml=” f i l e . xml ” ;
S t r i n g x s l=” t r . x s l ” ;
TransformerFactory f =
TransformerFactory . newInstance ( ) ;
Transformer
t =
f . n e w T r a n s f o r m e r ( new S t r e a m S o u r c e ( new F i l e ( x s l ) ) ) ;
t . t r a n s f o r m ( new S t r e a m S o u r c e ( new F i l e ( xml ) ) ,
new S t r e a m R e s u l t ( System . o u t ) ) ;
Jose Emilio Labra Gayo
Tendencias en XSLT
Extensiones
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
Extensiones
Ejecución en servidor
Marcos de publicación XML
I
Cocoon. Es un servlet Java que usa Xalan (por defecto) para
transformar documentos que pueden generarse de forma
dinámica.
Todas las páginas se generan a través de un pipeline en 3
fases: generación, transformación y serialización
I
AxKit es un módulo de Apache, implementado en Perl que
permite realizar conversiones XML dinámicas
I
Maki es un servidor XML desarrollado en Python
Jose Emilio Labra Gayo
Tendencias en XSLT
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
Ejecución en cliente
Asociación directa de hoja de estilos
Los navegadores incluyen una implementación de XSLT
I
Internet Explorer: MSXML
I
Mozilla: Transformiix
Jose Emilio Labra Gayo
Tendencias en XSLT
Extensiones
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
Extensiones
Ejecución en cliente
Transformación mediante Javascript
Varias librerı́as:
I
Sarissa invoca a los sistemas de transformación del navegador.
Actúa como un interfaz.
I
Google AJAXSLT es una implementación de XSLT en
Javascript. No está completa pero permite mayor portabilidad.
Jose Emilio Labra Gayo
Tendencias en XSLT
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
Extensiones
Docbook
Docbook es un completo sistema de documentación.
Especialmente útil para documentación de proyectos, aunque
puede utilizarse en otros contextos.
Está formado por una especificación del vocabulario en SGML
DTDs y en Relax NG
Contiene numerosas hojas de estilo para transformar a diferentes
formatos: FO, HTML, PDF, etc.
Jose Emilio Labra Gayo
Tendencias en XSLT
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
Ejemplo de Docbook
< a r t i c l e>
< a r t i c l e i n f o>
< t i t l e >E j e m p l o</ t i t l e >
<a u t h o r>
< f i r s t n a m e>F a n j u l</ f i r s t n a m e>
<surname>H e r r e r a</ surname>
</ a u t h o r>
< a b s t r a c t>
<p a r a>E s t e l i b r o r e s u m e a l g u n a s e x p e r i e n c i a s</ p a r a>
</ a b s t r a c t>
</ a r t i c l e i n f o>
<s e c t 1 i d=” S1 ”>
< t i t l e >La P r i m a v e r a</ t i t l e >
<p a r a>H a b l a r de l a p r i m a v e r a e s i n t e r e s a n t e</ p a r a>
</ s e c t 1>
</ a r t i c l e>
Jose Emilio Labra Gayo
Tendencias en XSLT
Extensiones
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
Extensiones
Schematron
Schematron define un sistema de validación de documentos XML
basado en reglas. Reciéntemente aprobado como estándar ISO
Las reglas se definen mediante sentencias XPath
La implementación de referencia fue realizada en XSLT en 2 fases.
Una hoja toma las reglas y genera una hoja XSLT que toma el
documento y lo valida.
<s c h : s c h e m a x m l n s : s c h=” h t t p : //www . a s c c . n e t / xml / s c h e m a t r o n ”>
< s c h : t i t l e >Comprobar e m a i l s</ s c h : t i t l e >
< s c h : p a t t e r n name=” Chequea e m a i l ”>
< s c h : r u l e c o n t e x t=” e m a i l ”>
< s c h : a s s e r t t e s t=” c o n t a i n s ( . , ’ @ ’ ) ”>
F a l t a l a a r r o b a en e l e m a i l</ s c h : a s s e r t>
</ s c h : r u l e>
</ s c h : p a t t e r n>
</ s c h : s c h e m a>
Jose Emilio Labra Gayo
Tendencias en XSLT
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
EXSLT
EXSLT
Iniciativa para crear un conjunto de extensiones relativamente
estándar.
Soportadas por diversos procesadores: libxml2
< 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 m l n s : m a t h=” h t t p : // e x s l t . o r g / math ”
e x t e n s i o n − e l e m e n t − p r e f i x e s=” math ” >
< x s l : t e m p l a t e match=” / ”>
N = <x s l : v a l u e − o f s e l e c t=” math:random ( ) ” />
</ 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
Tendencias en XSLT
Extensiones
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
XSLT 2.0
XSLT 2.0
Recomendación aprobada en Junio 2006
I
Se basa en XPath 2.0
I
Soporte para chequeo de tipos basados en XML Schema
I
Facilidades para agrupación
I
Permite la creación de funciones
I
Creación de múltiples documentos de salida
Jose Emilio Labra Gayo
Tendencias en XSLT
Extensiones
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
XSLT 2.0
Funciones y recursividad
< x s l : s t y l e s h e e t v e r s i o n=” 2 . 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 m l n s : x s=” h t t p : //www . w3 . o r g /2001/XMLSchema”
xmlns:m=” h t t p : // m i s F u n c i o n e s . o r g ”>
< x s l : t e m p l a t e match=” / ”>
1 0 ! = <x s l : v a l u e − o f s e l e c t=” m : f a c t ( 1 0 ) ” />
</ x s l : t e m p l a t e>
< x s l : f u n c t i o n name=” m : f a c t ” a s=” x s : i n t e g e r ”>
<x s l : p a r a m name=”n” a s=” x s : i n t e g e r ” />
<x s l : v a l u e − o f
s e l e c t=” i f ( $ n = 0 ) t h e n 1
e l s e $n ∗ m : f a c t ( $ n − 1 ) ” />
</ x s l : f u n c t i o n>
< x s l : s t y l e s h e e t>
Jose Emilio Labra Gayo
Tendencias en XSLT
Extensiones
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
Extensiones
XSLT 2.0
Agrupaciones
<c i u d a d e s>
<c i u d a d nombre=” L o n d r e s ”
p a i s=” I n g l a t e r r a ” />
<c i u d a d nombre=”Roma”
p a i s=” I t a l i a ” />
<c i u d a d nombre=” P a r i s ”
p a i s=” F r a n c i a ” />
<c i u d a d nombre=” V e n e c i a ”
p a i s=” I t a l i a ” />
</ c i u d a d e s>
Jose Emilio Labra Gayo
Tendencias en XSLT
< x s l : t e m p l a t e match=” / ”>
<x s l : f o r − e a c h − g r o u p
s e l e c t=” c i u d a d e s / c i u d a d ”
group−by=” @ p a i s ”>
<x s l : v a l u e − o f s e l e c t =” @ p a i s ” /> :
<x s l : v a l u e − o f
s e l e c t=” c u r r e n t − g r o u p ( ) / @nombre
</ x s l : t e x t>
</ x s l : f o r − e a c h − g r o u p>
</ body>
</ h t m l>
</ x s l : t e m p l a t e>
Contenidos
Aplicaciones XSLT
Algunas Aplicaciones de XSLT
XSLT 2.0
Múltiples documentos de salida
< 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 : r e s u l t − d o c u m e n t
h r e f=” o u t / alumno { p o s i t i o n ( ) } . h t m l ”>
<x s l : a p p l y − t e m p l a t e s s e l e c t=” . ” />
</ x s l : r e s u l t − d o c u m e n t>
</ x s l : f o r − e a c h>
</ x s l : t e m p l a t e>
< x s l : t e m p l a t e match=” alumno ”>
<p><x s l : v a l u e − o f s e l e c t=” nombre ” /></p>
</ x s l : t e m p l a t e>
Jose Emilio Labra Gayo
Tendencias en XSLT
Extensiones

Documentos relacionados