• No se han encontrado resultados

80171214 06 Transformacion de Documentos XML Con XSLT

N/A
N/A
Protected

Academic year: 2021

Share "80171214 06 Transformacion de Documentos XML Con XSLT"

Copied!
53
0
0

Texto completo

(1)

Tema 6:

Tema 6:

Tema 6:

Tema 6:

Transformación de

Transformación de

Transformación de

Transformación de

documentos XML con XSLT

documentos XML con XSLT

documentos XML con XSLT

documentos XML con XSLT

Ricardo Eíto Brun

Ricardo Eíto Brun

Ricardo Eíto Brun

Ricardo Eíto Brun

Sevilla, 23

Sevilla, 23

Sevilla,

(2)

G

G

uíon del tema

uíon del tema

G

G

uíon del tema

uíon del tema

 NNNN

ecesidad de la

ecesidad de la

ecesidad de la

ecesidad de la

transformación

transformación

transformación

transformación

  

Hojas de estilo

Hojas de estilo

Hojas de estilo

Hojas de estilo

para la

para la

para la

para la

transformación

transformación

transformación

transformación

  

Estructura y

Estructura y

Estructura y

Estructura y

sintáxis XSLT

sintáxis XSLT

sintáxis XSLT

sintáxis XSLT

  

Selectores XSLT

Selectores XSLT

Selectores XSLT

Selectores XSLT

 

Transformar 

Transformar 

documentos XML

documentos XML

con XML-Spy

con XML-Spy

Prácticas con XML y

Prácticas con XML y

HTML

(3)

G

G

uíon del tema

uíon del tema

G

G

uíon del tema

uíon del tema

 NNNN

ecesidad de la

ecesidad de la

ecesidad de la

ecesidad de la

transformación

transformación

transformación

transformación

  

Hojas de estilo

Hojas de estilo

Hojas de estilo

Hojas de estilo

para la

para la

para la

para la

transformación

transformación

transformación

transformación

  

Estructura y

Estructura y

Estructura y

Estructura y

sintáxis XSLT

sintáxis XSLT

sintáxis XSLT

sintáxis XSLT

  

Selectores XSLT

Selectores XSLT

Selectores XSLT

Selectores XSLT

 

Transformar 

Transformar 

documentos XML

documentos XML

con XML-Spy

con XML-Spy

Prácticas con XML y

Prácticas con XML y

HTML

(4)

N

N

ecesidad de las transformaciones

ecesidad de las transformaciones

N

N

ecesidad de las transformaciones

ecesidad de las transformaciones

XML se presenta como un estándar para

XML se presenta como un estándar para

XML se presenta como un estándar para

XML se presenta como un estándar para

 ³transmi

 ³transmi

tir´ datos a tra

tir´ datos a tra

vés de Internet

vés de Internet

 ³transmi

 ³transmi

tir´ datos a tra

tir´ datos a tra

vés de Internet

vés de Internet

Ante la posibilidad de que distintos ³centros´ o

Ante la posibilidad de que distintos ³centros´ o

Ante la posibilidad de que distintos ³centros´ o

Ante la posibilidad de que distintos ³centros´ o

 ³apli

 ³apli

caciones´ util

caciones´ util

icen esquemas o DTD

icen esquemas o DTD

 ³apli

 ³apli

caciones´ util

caciones´ util

icen esquemas o DTD

icen esquemas o DTD

diferent

diferent

es, es

es, es

necesario un sistema que

necesario un sistema que

permita

permita

diferent

diferent

es, es

es, es

necesario un sistema que

necesario un sistema que

permita

permita

 ³transform

 ³transform

ar´ los dat

ar´ los dat

os de un documento XML

os de un documento XML

 ³transform

 ³transform

ar´ los dat

ar´ los dat

os de un documento XML

os de un documento XML

XSLT (eXtensible Stylesheet Language

XSLT (eXtensible Stylesheet Language

XSLT (eXtensible Stylesheet Language ±

XSLT (eXtensible Stylesheet Language ±

±

±

Transformations), describe un lenguaje basado

Transformations), describe un lenguaje basado

Transformations), describe un lenguaje basado

Transformations), describe un lenguaje basado

en XML para transformar documentos XML a

en XML para transformar documentos XML a

en XML para transformar documentos XML a

en XML para transformar documentos XML a

cualquier otro formato

cualquier otro formato

cualquier otro formato

(5)

 A

 A

plicación de las transformaciones

plicación de las transformaciones

 A

 A

plicación de las transformaciones

plicación de las transformaciones

 NNNN

ormalmente, utilizaremos XSLT para

ormalmente, utilizaremos XSLT para

ormalmente, utilizaremos XSLT para

ormalmente, utilizaremos XSLT para

transforma

transforma

r documentos

r documentos

entre esquemas XML

entre esquemas XML

transforma

transforma

r documentos

r documentos

entre esquemas XML

entre esquemas XML

que permitan su procesamiento por distintos

que permitan su procesamiento por distintos

que permitan su procesamiento por distintos

que permitan su procesamiento por distintos

sistemas

sistemas

sistemas

sistemas

  

También utilizaremos XSLT para transformar

También utilizaremos XSLT para transformar

También utilizaremos XSLT para transformar

También utilizaremos XSLT para transformar

documentos XML en HTML, WML, o cualquier otro

documentos XML en HTML, WML, o cualquier otro

documentos XML en HTML, WML, o cualquier otro

documentos XML en HTML, WML, o cualquier otro

formato que facilite su presentación en la

formato que facilite su presentación en la

formato que facilite su presentación en la

formato que facilite su presentación en la

pantalla de un ordenador o en impresora

pantalla de un ordenador o en impresora

pantalla de un ordenador o en impresora

pantalla de un ordenador o en impresora

La transformación de XML a HTML es el principal

La transformación de XML a HTML es el principal

La transformación de XML a HTML es el principal

La transformación de XML a HTML es el principal

uso que se hace de XSLT

uso que se hace de XSLT

uso que se hace de XSLT

(6)

 A

 A

plicación de las transformaciones

plicación de las transformaciones

 A

 A

plicación de las transformaciones

plicación de las transformaciones

 NNNN

o debemos confundir las transformaciones XSLT

o debemos confundir las transformaciones XSLT

o debemos confundir las transformaciones XSLT

o debemos confundir las transformaciones XSLT

con la presentación de documentos XML con CSS

con la presentación de documentos XML con CSS

con la presentación de documentos XML con CSS

con la presentación de documentos XML con CSS

Con XSLT, generaremos un documento HTML a

Con XSLT, generaremos un documento HTML a

Con XSLT, generaremos un documento HTML a

Con XSLT, generaremos un documento HTML a

partir de un documento XML. Se tratará de dos

partir de un documento XML. Se tratará de dos

partir de un documento XML. Se tratará de dos

partir de un documento XML. Se tratará de dos

documentos ³distintos´ 

documentos ³distintos´ 

documentos ³distintos´ 

documentos ³distintos´ 

  

Con CSS, el navegador recibe un documento XML

Con CSS, el navegador recibe un documento XML

Con CSS, el navegador recibe un documento XML

Con CSS, el navegador recibe un documento XML

que formatea utilizando las reglas CSS para

que formatea utilizando las reglas CSS para

que formatea utilizando las reglas CSS para

que formatea utilizando las reglas CSS para

presentarlo en pantalla de forma que sea más

presentarlo en pantalla de forma que sea más

presentarlo en pantalla de forma que sea más

presentarlo en pantalla de forma que sea más

fácilmente legible, pero es el mismo documento

fácilmente legible, pero es el mismo documento

fácilmente legible, pero es el mismo documento

(7)

XSLT, XSL, XSL FO...

XSLT, XSL, XSL FO...

 XSLT es parte de la especificación XSL (eXtensibleXSLT es parte de la especificación XSL (eXtensible

Stylesheet Language). Stylesheet Language).

 En XSL se distingue entre:En XSL se distingue entre:

 XSL FO (eXtensible Stylesheet Language Formatting Objects)XSL FO (eXtensible Stylesheet Language Formatting Objects) 

 XSLT (eXtensible StyleSheet Language Transformations),XSLT (eXtensible StyleSheet Language Transformations), estable desde noviembre de 1999

estable desde noviembre de 1999

 XSL FO cuenta con escaso soporte por parte de la industriaXSL FO cuenta con escaso soporte por parte de la industria

debido a su complejidad. debido a su complejidad.

 Su propósito es definir la forma en la que se debe presentarSu propósito es definir la forma en la que se debe presentar

un documento XML en papel o en pantalla. un documento XML en papel o en pantalla.

 En este sentido, XSL FO sería una especificación similar aEn este sentido, XSL FO sería una especificación similar a

CSS. CSS.

(8)

XSLT, XSL, XSL FO...

XSLT, XSL, XSL FO...

Actualmente contamos con varias herramietas

Actualmente contamos con varias herramietas

para realizar transformaciones XSLT:

para realizar transformaciones XSLT:

 Saxon, desarrollado en Java por Michael Kay (un gurúSaxon, desarrollado en Java por Michael Kay (un gurú de XSLT)

de XSLT) 

 xt, diseñado por James Clarkxt, diseñado por James Clark 

(9)

E

structura de una hoja de estilo XSLT

E

structura de una hoja de estilo XSLT

 UU

na

na hoja

hoja de

de estilo

estilo XSLT

XSLT es

es un

un documento

documento XML

XML..

Debe

Debe estar

estar bien

bien formado

formado..

Las

Las hojas

hojas de

de estilo

estilo se

se guardarán

guardarán siempre

siempre en

en

archivos

archivos independientes

independientes con

con extensión

extensión ..xsl

xsl

Deben

Deben comenzar

comenzar con

con una

una declaración

declaración XML

XML::

<?xml

<?xml version="version="11..00³?> ³?>

El

El elemento

elemento raíz

raíz de

de la

la hoja

hoja de

de estilo

estilo XSLT

XSLT es

es

stylsheet

stylsheet..

Este

Este elemento

elemento contendrá

contendrá a

a todos

todos los

los demás,

demás, y

y

debe

debe ir

ir precedido

precedido por

por el

el alias

alias xsl

xsl correspondiente

correspondiente

al

(10)

E

structura de una hoja de estilo XSLT

E

structura de una hoja de estilo XSLT

En

En las

las hojas

hojas de

de estilo

estilo XSLT,

XSLT, los

los nombres

nombres de

de los

los

elementos

elementos ³reservados´ 

 ³reservados´ por

por la

la especificación,

especificación,

proceden

proceden de

de un

un mismo

mismo espacio

espacio de

de nombres,

nombres, y

y

por

por lo

lo tanto

tanto deben

deben escribirse

escribirse precedidos

precedidos por

por el

el

correspondiente

correspondiente alias

alias..

El

El alias

alias debe

debe ³apuntar´ 

 ³apuntar´ a

a la

la

UU

RL

RL::

 httphttp:://www //www..ww33..org/org/19991999/XSL/Transform /XSL/Transform

De

De esta

esta forma,

forma, el

el elemento

elemento raíz

raíz quedará

quedará así 

así::

<xsl:stylesheet version="1.0" <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> ... ... </xsl:stylesheet> </xsl:stylesheet>

(11)

E

structura de una hoja de estilo XSLT

E

structura de una hoja de estilo XSLT

Entras las marcas de inicio y de fin del elemento

Entras las marcas de inicio y de fin del elemento

raíz xsl:stylesheet, se escribirán las reglas de

raíz xsl:stylesheet, se escribirán las reglas de

transformación propiamente dichas

transformación propiamente dichas

Cada regla se definirá mediante un elemento

Cada regla se definirá mediante un elemento

xsl:template

xsl:template

La regla indica qué instancias de los elementos

La regla indica qué instancias de los elementos

del documento XML se van a transformar.

del documento XML se van a transformar.

La regla también indicará cómo se deben

La regla también indicará cómo se deben

transformar cada una de ellas

transformar cada una de ellas

(12)

E

structura de una hoja de estilo XSLT

E

structura de una hoja de estilo XSLT

EJEMPLO EJEMPLO:: <xsl:template match=´//nombre´> <xsl:template match=´//nombre´> <h2> <h2> <xsl:value

<xsl:value--of select=´.´ />of select=´.´ /> </h2>

</h2>

</xsl:template> </xsl:template>

 La regla se aplicará a todas las instancias del elemento nombre.La regla se aplicará a todas las instancias del elemento nombre.

Esto se indica mediante el atributo

Esto se indica mediante el atributo matchmatch que acompaña alque acompaña al elemento

elemento xsl:templatexsl:template..

 Entre las etiquetas de inicio y de fin del elementoEntre las etiquetas de inicio y de fin del elemento xsl:templatexsl:template

se escribe la transformación que se debe realizar... se escribe la transformación que se debe realizar...

 es decir,es decir, qué texto y qué marcas se escribirán en elqué texto y qué marcas se escribirán en el

documento resultado de la transformación

documento resultado de la transformación, cada vez que se, cada vez que se encuentre una instancia del elemento

encuentre una instancia del elemento nombrenombre en el documentoen el documento origen.

origen.

 Con <Con <xsl:valuexsl:value--of...>of...>, se recupera y escribe en el documento, se recupera y escribe en el documento

resultado el valor del elemento que está siendo procesado. resultado el valor del elemento que está siendo procesado.

(13)

E

 jemplo transformación XSLT

E

 jemplo transformación XSLT

<?xml version=³1.0´?> <?xml version=³1.0´?> <ciudades> <ciudades> <ciudad> <ciudad> <nombre>Madrid</nombre> <nombre>Madrid</nombre> <habitantes>3500000</habitantes> <habitantes>3500000</habitantes> </ciudad> </ciudad> <ciudad> <ciudad> <nombre>Málaga</nombre> <nombre>Málaga</nombre> <habitantes>800000</habitantes> <habitantes>800000</habitantes> </ciudad> </ciudad> <ciudad> <ciudad> <nombre>Toledo</nombre> <nombre>Toledo</nombre> <habitantes>50000</habitantes> <habitantes>50000</habitantes> </ciudad> </ciudad> </ciudades> </ciudades>

(14)

E

 jemplo 1: transformación XSLT

E

 jemplo 1: transformación XSLT

<?xml version=³1.0´?> <?xml version=³1.0´?> <ciudades> <ciudades> <ciudad> <ciudad> <nombre>Madrid</nombre> <nombre>Madrid</nombre> <habitantes>3500000</habitantes> <habitantes>3500000</habitantes> </ciudad> </ciudad> <ciudad> <ciudad> <nombre>Málaga</nombre> <nombre>Málaga</nombre> <habitantes>800000</habitantes> <habitantes>800000</habitantes> </ciudad> </ciudad> <ciudad> <ciudad> <nombre>Toledo</nombre> <nombre>Toledo</nombre> <habitantes>50000</habitantes> <habitantes>50000</habitantes> </ciudad> </ciudad> </ciudades> </ciudades>

(15)

E

 jemplo 1: transformación XSLT

E

 jemplo 1: transformación XSLT

<?xml version="1.0" encoding="UTF <?xml version="1.0" encoding="UTF--8"?>8"?> <h2>Madrid</h2>3500000 <h2>Madrid</h2>3500000 <h2>Málaga</h2>800000 <h2>Málaga</h2>800000 <h2>Toledo</h2>50000 <h2>Toledo</h2>50000 

 El resultado obtenido no es un documento HTML válido«El resultado obtenido no es un documento HTML válido« 

 Vemos que en el documento de salida no sólo se ha incluidoVemos que en el documento de salida no sólo se ha incluido

el texto de los elementos procesados, sino el de todos los el texto de los elementos procesados, sino el de todos los elementos del documento original«

elementos del documento original«

 Para evitar ésto, tenemos que hacer unos cambios en laPara evitar ésto, tenemos que hacer unos cambios en la

hoja de estilo XSLT (ver siguiente página): hoja de estilo XSLT (ver siguiente página):

(16)

E

 jemplo 1: transformación XSLT

E

 jemplo 1: transformación XSLT

<?xml version="1.0" encoding="UTF <?xml version="1.0" encoding="UTF--8"?>8"?> <xsl:stylesheet version="1.0" <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:template match="/"> <html> <html> <head> <head> <title>Ejemplo XSLT</title> <title>Ejemplo XSLT</title> </head> </head> <body> <body> <xsl:apply

<xsl:apply--templates select=´nombre´ />templates select=´nombre´ /> </body> </body> </html> </html> </xsl:template> </xsl:template> <xsl:template match=´//nombre´> <xsl:template match=´//nombre´> <h2> <h2> <xsl:value

<xsl:value--of select=´.´ />of select=´.´ /> </h2> </h2> </xsl:template> </xsl:template> </xsl:stylesheet> </xsl:stylesheet>

(17)

La regla ³de inicio´

La regla ³de inicio´

La regla <xsl:template match=³/´> se ejecuta

La regla <xsl:template match=³/´> se ejecuta

cuando se encuentra el elemento raíz del

cuando se encuentra el elemento raíz del

documento XML

documento XML

Dentro de esta regla, podemos incluir llamadas a

Dentro de esta regla, podemos incluir llamadas a

otras reglas definidas en la hoja de estilo,

otras reglas definidas en la hoja de estilo,

mediante el elemento:

mediante el elemento:

<xsl:apply

<xsl:apply--templates select=´«´ />templates select=´«´ />

El atributo select tomará como valor el nombre

El atributo select tomará como valor el nombre

del elemento asociado a la regla que queremos

del elemento asociado a la regla que queremos

 ³disparar´ 

 ³disparar´ 

Esto nos ofrece un control real sobre el ³orden´ 

Esto nos ofrece un control real sobre el ³orden´ 

de ejecución de las reglas

de ejecución de las reglas

(18)

La regla ³de inicio´

La regla ³de inicio´

El resultado de la transformación es el siguiente:

El resultado de la transformación es el siguiente:

<html> <html> <head> <head> <title>Ejemplo XSLT</title> <title>Ejemplo XSLT</title> </head> </head> <body> <body> <h2>Madrid</h2> <h2>Madrid</h2> <h2>Málaga</h2> <h2>Málaga</h2> <h2>Toledo</h2> <h2>Toledo</h2> </body> </body> </html> </html>

(19)

E

 jemplos

E

 jemplos

Con XML Spy, crear una primera hoja de estilo

Con XML Spy, crear una primera hoja de estilo

XSLT que, a partir del documento XML

XSLT que, a partir del documento XML

prestamos.xml, extraiga en un documento HTML

prestamos.xml, extraiga en un documento HTML

el título de los libros que se han prestado

el título de los libros que se han prestado

Formatear la lista de títulos para que se presente

Formatear la lista de títulos para que se presente

como una lista no ordenada (sin numerar), de

como una lista no ordenada (sin numerar), de

HTML

HTML

Cambiar la hoja de estilo XSLT para que los

Cambiar la hoja de estilo XSLT para que los

títulos se presenten en una tabla con una única

títulos se presenten en una tabla con una única

columna

columna

Cambiar la hoja de estilo para que los títulos se

Cambiar la hoja de estilo para que los títulos se

presenten en una tabla con dos columnas. En la

presenten en una tabla con dos columnas. En la

primera de ellas se escribirá un texto fijo: ³LIBRO

primera de ellas se escribirá un texto fijo: ³LIBRO

E

N

PRESTAMO´ 

(20)

E

l elemento <xsl:value

E

l elemento <xsl:value--of...>

of...>

En el elemento <xsl:value

En el elemento <xsl:value--of«> se puede indicar

of«> se puede indicar

que se quiere mostrar el valor del elemento que

que se quiere mostrar el valor del elemento que

estamos procesando

estamos procesando

También podemos indicar que queremos mostrar

También podemos indicar que queremos mostrar

el valor de un elemento hijo, o descendiente, del

el valor de un elemento hijo, o descendiente, del

elemento que se está procesando

elemento que se está procesando

En el ejemplo anterior, podríamos utilizar

En el ejemplo anterior, podríamos utilizar

xsl:value

xsl:value--of para mostrar en el documento

of para mostrar en el documento

resultado de la transformación el título, código de

resultado de la transformación el título, código de

registro o fecha de préstamo de cada libro«

registro o fecha de préstamo de cada libro«

Esto es posible porque en el atributo select

Esto es posible porque en el atributo select

podemos utilizar una ³expresión XPATH´ 

podemos utilizar una ³expresión XPATH´ 

(21)

E

l elemento <xsl:value

E

l elemento <xsl:value--of...>

of...>

Por ejemplo, para mostrar el valor del elemento

Por ejemplo, para mostrar el valor del elemento

titulo, que es un hijo del elemento ejemplar,

titulo, que es un hijo del elemento ejemplar,

podríamos utilizar la siguiente regla:

podríamos utilizar la siguiente regla:

<xsl:template match="//ejemplar"> <xsl:template match="//ejemplar">

<xsl:value

<xsl:value--of select="./titulo" />of select="./titulo" /> </xsl:template>

</xsl:template>

El valor del atributo select se puede leer de la

El valor del atributo select se puede leer de la

siguiente forma: ³dame el valor del elemento

siguiente forma: ³dame el valor del elemento

titulo que es hijo del elemento que estoy

titulo que es hijo del elemento que estoy

procesando´. En este caso, cada uno de los

procesando´. En este caso, cada uno de los

elementos ejemplar

elementos ejemplar

Esto se indica mediante ./

Esto se indica mediante ./

(22)

E

l elemento <xsl:value

E

l elemento <xsl:value--of...>

of...>

 UU

tilizando el documento prestamos.xml, crear

tilizando el documento prestamos.xml, crear

una hoja XSLT que transforme el documento xml

una hoja XSLT que transforme el documento xml

en un documento HTML.

en un documento HTML.

El documento HTML deberá mostrar una tabla. La

El documento HTML deberá mostrar una tabla. La

tabla contendrá una fila para cada ejemplar

tabla contendrá una fila para cada ejemplar

prestado.

prestado.

Las filas tendrán cuatro celdas, en las que

Las filas tendrán cuatro celdas, en las que

aparecerá el número de registro, el título del

aparecerá el número de registro, el título del

libro, y la fecha de préstamo y devolución.

libro, y la fecha de préstamo y devolución.

(23)

R

esumen

R

esumen

En las reglas XSLT, entre sus marcas de inicio y

En las reglas XSLT, entre sus marcas de inicio y

de fin, se puede incluir:

de fin, se puede incluir:

 Texto que se escribirá ³tal cual´ en el

Texto que se escribirá ³tal cual´ en el

documento resultado de la transformación.

documento resultado de la transformación.

 Marcas HTML o XML que se añadiran al

Marcas HTML o XML que se añadiran al

documento resultado de la transformación.

documento resultado de la transformación.

 Elementos reservados de la especificación

Elementos reservados de la especificación

XSLT que realizarán una acción como

XSLT que realizarán una acción como

recuperar el valor de un elemento, ordenar

recuperar el valor de un elemento, ordenar

los resultados, llamar a otras reglas de la

los resultados, llamar a otras reglas de la

hoja de estilo, etc.

(24)

Orden de procesamiento

Orden de procesamiento

Las reglas se van activando y ejecutando a

Las reglas se van activando y ejecutando a

medida que se recorre el documento origen que

medida que se recorre el documento origen que

se quiere transformar.

se quiere transformar.

De esta forma, las reglas se ejecutan en el

De esta forma, las reglas se ejecutan en el

orden en el que se van encontrando los

orden en el que se van encontrando los

elementos en el documento.

elementos en el documento.

Este comportamiento por defecto puede

Este comportamiento por defecto puede

cambiarse en las hojas de estilo XSLT, a

cambiarse en las hojas de estilo XSLT, a

diferencia de lo que sucedía en las hojas de

diferencia de lo que sucedía en las hojas de

estilo CSS

estilo CSS

Esto permite ³reordenar´ los contenidos del

Esto permite ³reordenar´ los contenidos del

documento XML, de una forma distinta a como

documento XML, de una forma distinta a como

están ordenadas en el documento XML inicial

están ordenadas en el documento XML inicial

(25)

Orden de procesamiento

Orden de procesamiento

Para ordenar los contenidos, se utiliza el

Para ordenar los contenidos, se utiliza el

elemento xsl:sort

elemento xsl:sort

Xsl:sort es un elemento hijo de xsl:apply

Xsl:sort es un elemento hijo de

xsl:apply--templates

templates

Acepta dos atributos:

Acepta dos atributos:

 selectselect ±± que toma como valor el nombre del elementoque toma como valor el nombre del elemento que se va a utilizar como criterio de ordenación y

que se va a utilizar como criterio de ordenación y 

 orderorder ±± que indica si se debe utilizar un ordenque indica si se debe utilizar un orden ascendente o descendente.

(26)

Orden de procesamiento

Orden de procesamiento

Para ordenar los contenidos, se utiliza el

Para ordenar los contenidos, se utiliza el

elemento xsl:sort

elemento xsl:sort

Xsl:sort es un elemento hijo de xsl:apply

Xsl:sort es un elemento hijo de

xsl:apply--templates

templates

Acepta dos atributos:

Acepta dos atributos:

 selectselect ±± que toma como valor el nombre del elementoque toma como valor el nombre del elemento que se va a utilizar como criterio de ordenación y

que se va a utilizar como criterio de ordenación y 

 orderorder ±± que indica si se debe utilizar un ordenque indica si se debe utilizar un orden ascendente o descendente.

ascendente o descendente.

<xsl:apply

<xsl:apply--templates select="//ciudad">templates select="//ciudad">

<xsl:sort select="ciudad" order="descending" /> <xsl:sort select="ciudad" order="descending" /> </xsl:apply

</xsl:apply--templates>templates>

 EEn el ejemplo anterior, modificar la xslt para que losn el ejemplo anterior, modificar la xslt para que los

libros se ordenen por título ascendente libros se ordenen por título ascendente

(27)

 A

sociar una hoja de estilo a un documento

 A

sociar una hoja de estilo a un documento

Debemos incluir, tras la declaración XML, la

Debemos incluir, tras la declaración XML, la

siguiente instrucción de procesamiento:

siguiente instrucción de procesamiento:

<?xml

<?xml--stylesheet type=´text/xsl´ href=´hojaEstilo.xsl´?>stylesheet type=´text/xsl´ href=´hojaEstilo.xsl´?>

Ejemplo

Ejemplo

<?xml version=´1.0´?> <?xml version=´1.0´?>

<?xml

<?xml--stylesheet type=´text/xsl´stylesheet type=´text/xsl´

href=´http:/www.anaya.es/docs/xml/ejemplo.x href=´http:/www.anaya.es/docs/xml/ejemplo.x sl´?> sl´?> <documento> <documento> <titulo>Programar ASP</titulo> <titulo>Programar ASP</titulo> <paginas>456</paginas> <paginas>456</paginas> <anno

<anno--pub>2001</annopub>2001</anno--pub>pub> </documento>

(28)

Leer y obtener el valor de atributos en XSLT

Leer y obtener el valor de atributos en XSLT

 En XSLT podemos ³filtrar´ o indicar qué instancias de unEn XSLT podemos ³filtrar´ o indicar qué instancias de un

elemento queremos procesar, tomando como criterio de elemento queremos procesar, tomando como criterio de selección el valor de los atributos que acompañan a los selección el valor de los atributos que acompañan a los elementos

elementos

 Para hacer esto, en un elemento xsl:valuePara hacer esto, en un elemento xsl:value--of, podemosof, podemos

recuperar el valor de un atributo mediante la expresión recuperar el valor de un atributo mediante la expresión @nombreAtributo , por ejemplo:

@nombreAtributo , por ejemplo:

<xsl:template match="vuelo"> <xsl:template match="vuelo">

<tr> <tr>

<td><xsl:value

<td><xsl:value--of select="@numero" /></td>of select="@numero" /></td> <td><xsl:value

<td><xsl:value--of select="@origen" /></td>of select="@origen" /></td> <td><xsl:value

<td><xsl:value--of select="@destino" /></td>of select="@destino" /></td> <td><xsl:value

<td><xsl:value--of select="@hora" /></td>of select="@hora" /></td> </tr>

</tr>

</xsl:template> </xsl:template>

 Ejemplo: diseñar una hoja de estilo que convierta en una tabla losEjemplo: diseñar una hoja de estilo que convierta en una tabla los

datos de ejemplares del documento prestamoAtributos.xml datos de ejemplares del documento prestamoAtributos.xml

(29)

E

 jecución condicional de reglas

E

 jecución condicional de reglas

 Para indicar qué instancias de un elemento queremosPara indicar qué instancias de un elemento queremos

procesar, o realizar una ³ejecución condicional de código´, procesar, o realizar una ³ejecución condicional de código´, en XSLT disponemos del elemento xsl:if 

en XSLT disponemos del elemento xsl:if 

 Xsl:if va acompañado de un atributo test que contiene unaXsl:if va acompañado de un atributo test que contiene una

 ³condición´.  ³condición´.

 Si la condición se cumple para el elemento que se estáSi la condición se cumple para el elemento que se está

procesando, la regla de ejecutará. Por ejemplo: procesando, la regla de ejecutará. Por ejemplo:

<xsl:if test="@destino='JFK'"> <xsl:if test="@destino='JFK'"> <tr>

<tr>

<td><xsl:value

<td><xsl:value--of select="@numero" /></td>of select="@numero" /></td> <td><xsl:value

<td><xsl:value--of select="@origen" /></td>of select="@origen" /></td> <td><xsl:value

<td><xsl:value--of select="@destino" /></td>of select="@destino" /></td> <td><xsl:value

<td><xsl:value--of select="@hora" /></td>of select="@hora" /></td> </tr>

</tr> </xsl:if> </xsl:if>

(30)

E

 jecución condicional de reglas: xsl:choose,

E

 jecución condicional de reglas: xsl:choose,

xsl:when y xsl:otherwise

xsl:when y xsl:otherwise

 Estos elementos ³amplían´ las posibilidades del elementoEstos elementos ³amplían´ las posibilidades del elemento

xsl:if  xsl:if 

 Permiten indicar qué transformación se debe realizar en elPermiten indicar qué transformación se debe realizar en el

caso de que se cumpla una condición, y en el resto de casos caso de que se cumpla una condición, y en el resto de casos

 Se utilizan de forma conjunta. El elemento xsl:chooseSe utilizan de forma conjunta. El elemento xsl:choose

contendrá a uno o más elementos xsl:when y a un elemento contendrá a uno o más elementos xsl:when y a un elemento xsl:otherwise.

xsl:otherwise.

 El elemento xsl:when incluye un atributo test que tomaráEl elemento xsl:when incluye un atributo test que tomará

como valor la expresión que se evaluará. Si se cumple, se como valor la expresión que se evaluará. Si se cumple, se ejecutará el código escrito entre las etiquetas de inicio y de ejecutará el código escrito entre las etiquetas de inicio y de fin del elemento xsl:when.

fin del elemento xsl:when.

 El elemento xsl:otherwise contendrá el código que seEl elemento xsl:otherwise contendrá el código que se

ejecutará si no se cumplen las expresiones indicadas en los ejecutará si no se cumplen las expresiones indicadas en los atributos test de los elementos xsl:when.

(31)

E

 jecución condicional de reglas: xsl:choose,

E

 jecución condicional de reglas: xsl:choose,

xsl:when y xsl:otherwise

xsl:when y xsl:otherwise

<xsl:choose> <xsl:choose>

<xsl:when test=´ 

<xsl:when test=´ expresiónexpresión´>´> ... ... ... ... ... ... </xsl:when> </xsl:when> <xsl:when test=´ 

<xsl:when test=´ expresión2expresión2´>´> ... ... ... ... ... ... </xsl:when> </xsl:when> <xsl:otherwise> <xsl:otherwise> ... ... ... ... </xsl:otherwise> </xsl:otherwise> </xsl:choose> </xsl:choose>

(32)

E

 jecución condicional de reglas: xsl:choose,

E

 jecución condicional de reglas: xsl:choose,

xsl:when y xsl:otherwise

xsl:when y xsl:otherwise

<xsl:choose> <xsl:choose>

<xsl:when test=´ 

<xsl:when test=´ expresiónexpresión´>´> ... ... ... ... ... ... </xsl:when> </xsl:when> <xsl:when test=´ 

<xsl:when test=´ expresión2expresión2´>´> ... ... ... ... ... ... </xsl:when> </xsl:when> <xsl:otherwise> <xsl:otherwise> ... ... ... ... </xsl:otherwise> </xsl:otherwise> </xsl:choose> </xsl:choose> 

 Continuando con el ejemplo anterior, crear una hoja deContinuando con el ejemplo anterior, crear una hoja de

estilo XSLT que muestre en rojo las filas de la tabla estilo XSLT que muestre en rojo las filas de la tabla

correspondientes a los libros que no se han devuelto aún. correspondientes a los libros que no se han devuelto aún.

(33)

Otros elementos: xsl:import y xsl:include

Otros elementos: xsl:import y xsl:include

 Es posible crear hojas de estilo XSLT modulares, es decir,Es posible crear hojas de estilo XSLT modulares, es decir,

divididas en distintos archivos físicos divididas en distintos archivos físicos

 En la hoja de estilo se incluirán referencias a otras hojas deEn la hoja de estilo se incluirán referencias a otras hojas de

estilo XSLT en las que se incluyen el resto de reglas. estilo XSLT en las que se incluyen el resto de reglas.

 Para incluir las referencias, se pueden utilizar los elementosPara incluir las referencias, se pueden utilizar los elementos

xsl:import y xsl:include xsl:import y xsl:include

 Estos dos elementos deben ir acompañados por un elementoEstos dos elementos deben ir acompañados por un elemento

href que tomará como valor el URL absoluto o relativo de la

href que tomará como valor el URL absoluto o relativo de la

hoja de estilo que se quiere utilizar. hoja de estilo que se quiere utilizar.

(34)

Otros elementos: xsl:import y xsl:include

Otros elementos: xsl:import y xsl:include

 Los elementos xsl:import se debe incluir justo a continuaciónLos elementos xsl:import se debe incluir justo a continuación

de la etiqueta de inicio del elemento xsl:stylesheet, y antes de la etiqueta de inicio del elemento xsl:stylesheet, y antes de cualquier otro elemento.

de cualquier otro elemento.

 El elemento xsl:include se puede incluir en cualquier lugarEl elemento xsl:include se puede incluir en cualquier lugar

del documento, siempre que se escriba fuera de una regla del documento, siempre que se escriba fuera de una regla xsl:template.

(35)

Otros elementos: xsl:import y xsl:include

Otros elementos: xsl:import y xsl:include

<?xml version="1.0" encoding="UTF <?xml version="1.0" encoding="UTF--8"?>8"?> <xsl:stylesheet version="1.0" <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:template match="/"> <html> <html> <head><title>Ejemplo</title></head> <head><title>Ejemplo</title></head> <body> <body> <h1>Lista de libros</h1> <h1>Lista de libros</h1> <xsl:apply

<xsl:apply--templates select="//libro">templates select="//libro"> <xsl:sort select="autor" /> <xsl:sort select="autor" /> </xsl:apply </xsl:apply--templates>templates> </body> </body> </html> </html> </xsl:template> </xsl:template> <xsl:template match="libro"> <xsl:template match="libro"> <p><xsl:value

<p><xsl:value--of select="autor" />.of select="autor" />. <xsl:value

<xsl:value--of select="titulo" />,of select="titulo" />, <xsl:value

<xsl:value--of select="annoof select="anno--pub" />, ISBN:pub" />, ISBN: <xsl:value

<xsl:value--of select="isbn" />of select="isbn" /><</p>/p>

</xsl:template>

</xsl:template>

</xsl:stylesheet> </xsl:stylesheet>

(36)

Otros elementos: xsl:import y xsl:include

Otros elementos: xsl:import y xsl:include

<?xml version="1.0" encoding="UTF <?xml version="1.0" encoding="UTF--8"?>8"?> <xsl:stylesheet version="1.0" <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:template match="/"> <html> <html> <head><title>Ejemplo</title></head> <head><title>Ejemplo</title></head> <body> <body> <h1>Lista de libros</h1> <h1>Lista de libros</h1> <xsl:apply

<xsl:apply--templates select="//libro">templates select="//libro"> <xsl:sort select="autor" /> <xsl:sort select="autor" /> </xsl:apply </xsl:apply--templates>templates> </body> </body> </html> </html> </xsl:template> </xsl:template> </xsl:stylesheet> </xsl:stylesheet>

(37)

Otros elementos: xsl:import y xsl:include

Otros elementos: xsl:import y xsl:include

<?xml version="1.0" encoding="UTF <?xml version="1.0" encoding="UTF--8"?>8"?> <xsl:stylesheet version="1.0" <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="libro"> <xsl:template match="libro"> <p><xsl:value

<p><xsl:value--of select="autor" />.of select="autor" />. <xsl:value

<xsl:value--of select="titulo" />,of select="titulo" />, <xsl:value

<xsl:value--of select="annoof select="anno--pub" />, ISBpub" />, ISBNN::

<xsl:value

<xsl:value--of select="isbn" /></p>of select="isbn" /></p> </xsl:template>

</xsl:template> </xsl:stylesheet> </xsl:stylesheet> 

 En cualquiera de las dos hojas anteriores se podría incluirEn cualquiera de las dos hojas anteriores se podría incluir

una referencia a la otra hoja de estilo, utilizando la siguiente una referencia a la otra hoja de estilo, utilizando la siguiente sintáxis: sintáxis: <?xml version="1.0" encoding="UTF <?xml version="1.0" encoding="UTF--8"?>8"?> <xsl:stylesheet version="1.0" <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:import href=´hojaEstiloLibro.xsl´ />

(38)

Otros elementos: xsl:variable

Otros elementos: xsl:variable

 EEl elemento xsl:variable se utiliza para declarar unal elemento xsl:variable se utiliza para declarar una

variable variable

 LLas variables nos permiten realizar operaciones conas variables nos permiten realizar operaciones con

los datos del documento XML para luego mostrar el

los datos del documento XML para luego mostrar el

resultado en el documento ³resultado´ resultado en el documento ³resultado´

 EEs importante señalar que cuando se le asigna uns importante señalar que cuando se le asigna un

valor, éste ya no se puede cambiar valor, éste ya no se puede cambiar

 PPara declarar una variable, se utilizará la sintáxis:ara declarar una variable, se utilizará la sintáxis:

<xsl:variable name="var" select="15" /> <xsl:variable name="var" select="15" />

(39)

Otros elementos: xsl:variable

Otros elementos: xsl:variable

<?xml version="1.0" encoding="UTF <?xml version="1.0" encoding="UTF--8"8"??>> <pedido> <pedido> <cliente> <cliente>

<nombre>Construcciones Barcelona</nombre> <nombre>Construcciones Barcelona</nombre> <domicilio>Gran Via 45, 2º</domicilio>

<domicilio>Gran Via 45, 2º</domicilio> <localidad>Barcelona</localidad> <localidad>Barcelona</localidad> </cliente> </cliente> <detalle> <detalle> <item> <item> <material>Tornillos

<material>Tornillos--55<</material>/material> <unidades>10000</unidades> <unidades>10000</unidades> <precio>3</precio> <precio>3</precio> <total>30000</total> <total>30000</total> </item> </item> <item> <item>

<material>Paletas</material> <material>Paletas</material> <unidades>100</unidades> <unidades>100</unidades> <precio>500</precio> <precio>500</precio> <total>50000</total> <total>50000</total> </item> </item> <item> <item>

<material>Ladrillos</material> <material>Ladrillos</material> <unidades>600</unidades> <unidades>600</unidades> <precio>23</precio> <precio>23</precio> <total>13800</total> <total>13800</total> </item> </item> </detalle> </detalle> </pedido> </pedido>

(40)

Otros elementos: xsl:variable

Otros elementos: xsl:variable

<?xml version="1.0" encoding="UTF <?xml version="1.0" encoding="UTF--8"8"??>> <xsl:stylesheet version="1.0" <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:template match="/"> <html> <html>

<head><title>Pedido</title></head> <head><title>Pedido</title></head> <body> <body> <xsl:apply <xsl:apply--templates />templates /> </body></html> </body></html> </xsl:template> </xsl:template> <xsl:template match="detalle"> <xsl:template match="detalle"> <table width="85%"> <table width="85%"> <tr> <tr> <th>Material</th> <th>Material</th> <th>Unidades</th> <th>Unidades</th> <th>Precio</th> <th>Precio</th> <th>Total Pts.</th> <th>Total Pts.</th> </tr> </tr> <xsl:for

<xsl:for--each select="item">each select="item"> <tr>

<tr>

<td><xsl:value

<td><xsl:value--of select="material" />of select="material" /><</td>/td> <td><xsl:value

<td><xsl:value--of select="unidades" />of select="unidades" /><</td>/td> <td><xsl:value

<td><xsl:value--of select="precio" />of select="precio" /><</td>/td> <td><xsl:value

<td><xsl:value--of select="total" />of select="total" /><</td>/td> </tr> </tr> </xsl:for </xsl:for--each>each> </table> </table> </xsl:template> </xsl:template> </xsl:stylesheet> </xsl:stylesheet>

(41)

<?xml version="1.0" encoding="UTF <?xml version="1.0" encoding="UTF--8"8"??>> <xsl:stylesheet version="1.0" <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:variable name="totalPrecio" select="sum(//total)" /> <xsl:variable name="totalPrecio" select="sum(//total)" />

<xsl:template match="/"> <xsl:template match="/">

<html> <html>

<head><title>Pedido</title></head> <head><title>Pedido</title></head> <body> <body> <xsl:apply <xsl:apply--templates />templates /> </body></html> </body></html> </xsl:template> </xsl:template> <xsl:template match="detalle"> <xsl:template match="detalle"> <table width="85%"> <table width="85%"> <tr> <tr> <th>Material</th> <th>Material</th> <th>Unidades</th> <th>Unidades</th> <th>Precio</th> <th>Precio</th> <th>Total Pts.</th> <th>Total Pts.</th> </tr> </tr> <xsl:for

<xsl:for--each select="item">each select="item"> <tr>

<tr>

<td><xsl:value

<td><xsl:value--of select="material" />of select="material" /><</td>/td> <td><xsl:value

<td><xsl:value--of select="unidades" />of select="unidades" /><</td>/td> <td><xsl:value

<td><xsl:value--of select="precio" />of select="precio" /><</td>/td> <td><xsl:value

<td><xsl:value--of select="total" />of select="total" /><</td>/td> </tr> </tr> </xsl:for </xsl:for--each>each> </table> </table>

<h4>Total a pagar: <xsl:copy

<h4>Total a pagar: <xsl:copy--of select="$totalof select="$totalPPrecio" />recio" /><</h4>/h4> </xsl:template>

</xsl:template> </xsl:stylesheet> </xsl:stylesheet>

(42)

E

lemento xsl:copy

E

lemento xsl:copy--of 

of 

Se utiliza para copiar un conjunto de nodos del

Se utiliza para copiar un conjunto de nodos del

documento origen, al documento resultado de la

documento origen, al documento resultado de la

transformación.

transformación.

Se copiarán todos los nodos hijos y los atributos

Se copiarán todos los nodos hijos y los atributos

(en el caso de los elementos que los tengan).

(en el caso de los elementos que los tengan).

Este elemento es especialmente útil cuando se

Este elemento es especialmente útil cuando se

quiere convertir un documento XML a otro

quiere convertir un documento XML a otro

documento XML con una estructura diferente.

documento XML con una estructura diferente.

El elemento xsl:copy

El elemento xsl:copy--of irá acompañado por un

of irá acompañado por un

atributo select que toma como valor una

atributo select que toma como valor una

expresión que determinará los nodos que se van

expresión que determinará los nodos que se van

a copiar.

a copiar.

Este elemento también se puede utilizar para

Este elemento también se puede utilizar para

copiar en el documento resultado el valor de una

copiar en el documento resultado el valor de una

variable. En este caso, se escribirá como valor del

variable. En este caso, se escribirá como valor del

atributo select el nombre de la variable precedido

atributo select el nombre de la variable precedido

por el carácter $.

(43)

E

 jemplo xsl:copy

E

 jemplo xsl:copy--of 

of 

<?xml version="1.0" encoding="UTF

<?xml version="1.0" encoding="UTF--8"?>8"?>

<?xml

<?xml--stylesheet type="text/xsl" href="dlibros3.xsl"?>stylesheet type="text/xsl" href="dlibros3.xsl"?> <repertorio>

<repertorio> <libro> <libro>

<titulo>Don Quijote de la Mancha</titulo> <titulo>Don Quijote de la Mancha</titulo> <autor>Miguel de Cervantes</autor>

<autor>Miguel de Cervantes</autor> <anno

<anno--pub>1987</annopub>1987</anno--pub>pub> <isbn>84

<isbn>84--568568--9494--3</isbn>3</isbn> </libro> </libro> <libro> <libro> <titulo>La Galatea</titulo> <titulo>La Galatea</titulo> <autor>Miguel de Cervantes</autor> <autor>Miguel de Cervantes</autor> <anno

<anno--pub>1989</annopub>1989</anno--pub>pub> <isbn>84

<isbn>84--568568--9424</isbn>9424</isbn> </libro> </libro> <libro> <libro> <titulo>La Celestina</titulo> <titulo>La Celestina</titulo> <autor>Fernando de Rojas</autor> <autor>Fernando de Rojas</autor> <anno

<anno--pub>1998</annopub>1998</anno--pub>pub> <isbn>84

<isbn>84--568568--9595--12</isbn>12</isbn> </libro>

</libro> </repertorio> </repertorio>

(44)

E

 jemplo xsl:copy

E

 jemplo xsl:copy--of 

of 

<?xml version="1.0" encoding="UTF

<?xml version="1.0" encoding="UTF--8"?>8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" version="1.0" encoding="UTF

<xsl:output method="xml" version="1.0" encoding="UTF--8" indent="yes"/>8" indent="yes"/>

<xsl:template match="/"> <xsl:template match="/">

<repertorio> <repertorio> <xsl:copy

<xsl:copy--of select="//libro[startsof select="//libro[starts--with(autor, 'Miguel de Cervantes')]" />with(autor, 'Miguel de Cervantes')]" /> </repertorio> </repertorio> </xsl:template> </xsl:template> </xsl:stylesheet> </xsl:stylesheet>

(45)

E

 jemplo xsl:copy

E

 jemplo xsl:copy--of 

of 

<?xml version="1.0" encoding="UTF <?xml version="1.0" encoding="UTF--8"?>8"?> <repertorio> <repertorio> <libro> <libro>

<titulo>Don Quijote de la Mancha</titulo> <titulo>Don Quijote de la Mancha</titulo> <autor>Miguel de Cervantes</autor>

<autor>Miguel de Cervantes</autor> <anno

<anno--pub>1987</annopub>1987</anno--pub>pub> <isbn>84

<isbn>84--568568--9494--3</isbn>3</isbn> </libro> </libro> <libro> <libro> <titulo>La Galatea</titulo> <titulo>La Galatea</titulo> <autor>Miguel de Cervantes</autor> <autor>Miguel de Cervantes</autor> <anno

<anno--pub>1989</annopub>1989</anno--pub>pub> <isbn>84

<isbn>84--568568--9424</isbn>9424</isbn> </libro>

</libro> </repertorio> </repertorio> 

 UUtilizando el ejemplo de préstamos, crea una hoja de estilotilizando el ejemplo de préstamos, crea una hoja de estilo

XSLT que extraiga del documento los elementos XSLT que extraiga del documento los elementos

correspondinetes a los préstamos que no han sido devueltos correspondinetes a los préstamos que no han sido devueltos

(46)

E

 jemplo xsl:copy

E

 jemplo xsl:copy

 Similar al elemento anterior, se utiliza para copiar elementos,Similar al elemento anterior, se utiliza para copiar elementos,

pero no se copiarán sus atributos ni sus elementos hijos pero no se copiarán sus atributos ni sus elementos hijos

 Cuando se aplica sobre elementos, se copia el elemento, peroCuando se aplica sobre elementos, se copia el elemento, pero

no su valor... no su valor...   Ejemplo:Ejemplo: <?xml version="1.0" encoding="UTF <?xml version="1.0" encoding="UTF--8"?>8"?> <xsl:stylesheet version="1.0" <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF

<xsl:output method="xml" version="1.0" encoding="UTF--8"8"

indent="yes"/> indent="yes"/> <xsl:template match="/"> <xsl:template match="/"> <repertorio> <repertorio> <xsl:apply

<xsl:apply--templates select="//autor" />templates select="//autor" /> </repertorio> </repertorio> </xsl:template> </xsl:template> <xsl:template match="autor"> <xsl:template match="autor"> <xsl:copy /> <xsl:copy /> </xsl:template> </xsl:template> </xsl:stylesheet> </xsl:stylesheet>

(47)

E

 jemplo xsl:copy

E

 jemplo xsl:copy

 En el ejemplo anterior, se crea un elemento autor vacío en elEn el ejemplo anterior, se crea un elemento autor vacío en el

documento destino, para cada elemento autor existente en el documento destino, para cada elemento autor existente en el documento original

documento original

 Para copiar el valor de los elementos autor, habría quePara copiar el valor de los elementos autor, habría que

modificar la XSLT modificar la XSLT <?xml version="1.0" encoding="UTF <?xml version="1.0" encoding="UTF--8"?>8"?> <xsl:stylesheet version="1.0" <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF

<xsl:output method="xml" version="1.0" encoding="UTF--8"8"

indent="yes"/> indent="yes"/> <xsl:template match="/"> <xsl:template match="/"> <repertorio> <repertorio> <xsl:apply

<xsl:apply--templates select="//autor" />templates select="//autor" /> </repertorio> </repertorio> </xsl:template> </xsl:template> <xsl:template match="autor"> <xsl:template match="autor"> <xsl:copy> <xsl:copy> <xsl:value

<xsl:value--of select=´.´ />of select=´.´ /> </xsl:copy> </xsl:copy> </xsl:template> </xsl:template> </xsl:stylesheet> </xsl:stylesheet>

(48)

E

lemento xsl:element

E

lemento xsl:element

Se utiliza para crear elementos en el documento

Se utiliza para crear elementos en el documento

resultado de la transformación.

resultado de la transformación.

Es especialmente útil cuando se utiliza XSLT para

Es especialmente útil cuando se utiliza XSLT para

transformar un documento XML en otro con una

transformar un documento XML en otro con una

estructura diferente.

estructura diferente.

xsl:element irá acompañado por un atributo name

xsl:element irá acompañado por un atributo name

que tomará como valor el nombre del elemento

que tomará como valor el nombre del elemento

que se va a crear.

que se va a crear.

Si el elemento procede de un espacio de nombres,

Si el elemento procede de un espacio de nombres,

el

U

RI que corresponde a este espacio de nombres

el

U

RI que corresponde a este espacio de nombres

se puede indicar en otro atributo: namespace

se puede indicar en otro atributo: namespace

 <xsl:template match=´div1´><xsl:template match=´div1´> 

 <xsl:element name=´HTML:h1´ <xsl:element name=´HTML:h1´ 

namespace=´http://www.w3.org/HTML

namespace=´http://www.w3.org/HTML--transitional´ />transitional´ />

Referencias

Documento similar

- Fase Visual: Color rojo cereza. Puede presentar un pequeño precipitado de sales tartáricas o de polifenoles polimerizados. - Fase Olfativa: Aroma limpio y complejo, donde destaca

Esta corriente dentro de la arquitectura, registra al Diseño como herramienta fundamental para mejorar la sustentabilidad en el hábitat.. Es más abarcativa que la corriente

el PAtio de mi escuelA es un bosque de diversidAd Más allá de las pistas deportivas, ofrecer en el patio espacios alternativos de juego libre que estén en contacto con la

De este modo se constituye un espacio ontológico y epistemológico a la vez, en el que cada elemento (cada principio) ocupa un lugar determinado en la totalidad, y desde ahí está

Debido a la calidad y el legado de nuestra compañía, los cuales se reflejan en nuestros pianos, elegir un instrumento hecho por Steinway &amp; Sons tiende a ser una decisión

Pero cuando vio a Mar sacar el fuego de bajo su ala, voló de vuelta a su tribu a contarles lo que había visto.... Justo antes de que el sol saliera, Tatkanna se despertó y comenzó

- Un curso formativo para los técnicos de laboratorio de la UPV sobre la prevención de los residuos en los laboratorios, que se llevará a cabo los días 23, 24, 25, 26 y 27

¿Cómo se traduce la incorporación de ésta en la idea de museo?; ¿Es útil un museo si no puede concebirse como un proyecto cultural colectivo?; ¿Cómo puede ayudar el procomún