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