• No se han encontrado resultados

Tendencias en XSLT. Jose Emilio Labra Gayo. Noviembre Contenidos Aplicaciones XSLT Algunas Aplicaciones de XSLT Extensiones

N/A
N/A
Protected

Academic year: 2021

Share "Tendencias en XSLT. Jose Emilio Labra Gayo. Noviembre Contenidos Aplicaciones XSLT Algunas Aplicaciones de XSLT Extensiones"

Copied!
15
0
0

Texto completo

(1)

Tendencias en XSLT

Jose Emilio Labra Gayo

(2)

Contenidos

Aplicaciones XSLT

Ejecuci[Pleaseinsertintopreamble]n en servidor

Ejecuci´

on en cliente

Algunas Aplicaciones de XSLT

Extensiones

EXSLT

XSLT 2.0

(3)

Ejecuci´on en servidor

Programaci´

on XSLT en Java

I

JAXP (

Java API for XML Processing

) incluye ofrece

funcionalidad para trabajar con XSLT

I

La parte de JAXP dedicada a las transformaciones es TrAX

(

Transformation API for XML

) y contiene los siguientes

paquetes:

I

javax.xml.transform

: n´

ucleo de interfaces para

transformaci´

on

I

javax.xml.transform.sax

: interfaces de transformaci´

on

basados en SAX

I

javax.xml.transform.dom

: interfaces relacionados con

DOM

I

javax.xml.transform.stream

: interfaces relacionados con

flujos

(4)

Ejecuci´on en servidor

Programaci´

on 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 ” ; T r a n s f o r m e r F a c t o r y f = T r a n s f o r m e r F a c t o r y . n e w I n s t a n c e ( ) ; T r a n s f o r m e r 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 ( S y s t e m . o u t ) ) ;

(5)

Ejecuci´on en servidor

Marcos de publicaci´

on XML

I

Cocoon. Es un

servlet

Java que usa Xalan (por defecto) para

transformar documentos que pueden generarse de forma

din´

amica.

Todas las p´

aginas se generan a trav´

es de un

pipeline

en 3

fases: generaci´

on, transformaci´

on y serializaci´

on

I

AxKit es un m´

odulo de Apache, implementado en Perl que

permite realizar conversiones XML din´

amicas

(6)

Ejecuci´on en cliente

Asociaci´

on directa de hoja de estilos

Los navegadores incluyen una implementaci´

on de XSLT

I

Internet Explorer: MSXML

(7)

Ejecuci´on en cliente

Transformaci´

on mediante Javascript

Varias librer´ıas:

I

Sarissa invoca a los sistemas de transformaci´

on del navegador.

Act´

ua como un interfaz.

I

Google AJAXSLT es una implementaci´

on de XSLT en

(8)

Docbook

Docbook es un completo sistema de documentaci´

on.

Especialmente ´

util para documentaci´

on de proyectos, aunque

puede utilizarse en otros contextos.

Est´

a formado por una especificaci´

on del vocabulario en SGML

DTDs y en Relax NG

Contiene numerosas hojas de estilo para transformar a diferentes

formatos: FO, HTML, PDF, etc.

(9)

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> <s u r n a m e>H e r r e r a</ s u r n a m e> </ 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>

(10)

Schematron

Schematron define un sistema de validaci´

on de documentos XML

basado en reglas. Reci´

entemente aprobado como est´

andar ISO

Las reglas se definen mediante sentencias XPath

La implementaci´

on 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 ( . , ’ @ ’ ) ”>

(11)

EXSLT

EXSLT

Iniciativa para crear un conjunto de extensiones relativamente

est´

andar.

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 / 1 9 9 9 / 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 =” m a t h : r a n d o m ( ) ” /> </x s l : t e m p l a t e> </x s l : s t y l e s h e e t>

(12)

XSLT 2.0

XSLT 2.0

Recomendaci´

on 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´

on

I

Permite la creaci´

on de funciones

(13)

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 / 1 9 9 9 / 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 / 2 0 0 1 / XMLSchema” x m l n s : 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>

(14)

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> <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 : 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>

(15)

XSLT 2.0

ultiples 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>

Referencias

Documento similar