06.transformación de documentos xml con xslt
TRANSCRIPT
-
8/3/2019 06.Transformacin de documentos XML con XSLT
1/53
Tema 6:Tema 6:
Transformacin deTransformacin dedocumentos XML con XSLTdocumentos XML con XSLT
Ricardo Eto BrunRicardo Eto Brun
Sevilla, 23Sevilla, 23--25 de octubre 200225 de octubre 2002
-
8/3/2019 06.Transformacin de documentos XML con XSLT
2/53
Guon del temaGuon del tema
Necesidad de laNecesidad de latransformacintransformacin
Hojas de estiloHojas de estilopara lapara latransformacintransformacin
Estructura yEstructura ysintxis XSLTsintxis XSLT
Selectores XSLTSelectores XSLT
Transformar
documentos XML
con XML-Spy
Prcticas con XML y
HTML
-
8/3/2019 06.Transformacin de documentos XML con XSLT
3/53
Necesidad de las transformacionesNecesidad de las transformaciones
XML se presenta como un estndar paraXML se presenta como un estndar paratransmitir datos a travs de Internettransmitir datos a travs de Internet
Ante la posibilidad de que distintos centros oAnte la posibilidad de que distintos centros o
aplicaciones utilicen esquemas o DTDaplicaciones utilicen esquemas o DTDdiferentes, es necesario un sistema que permitadiferentes, es necesario un sistema que permitatransformar los datos de un documento XMLtransformar los datos de un documento XML
XSLT (eXtensible Stylesheet LanguageXSLT (eXtensible Stylesheet Language Transformations), describe un lenguaje basadoTransformations), describe un lenguaje basadoen XML para transformar documentos XML aen XML para transformar documentos XML a
cualquier otro formatocualquier otro formato
-
8/3/2019 06.Transformacin de documentos XML con XSLT
4/53
Aplicacin de las transformacionesAplicacin de las transformaciones
Normalmente, utilizaremos XSLT paraNormalmente, utilizaremos XSLT paratransformar documentos entre esquemas XMLtransformar documentos entre esquemas XMLque permitan su procesamiento por distintosque permitan su procesamiento por distintossistemassistemas
Tambin utilizaremos XSLT para transformarTambin utilizaremos XSLT para transformardocumentos XML en HTML, WML, o cualquier otrodocumentos XML en HTML, WML, o cualquier otroformato que facilite su presentacin en laformato que facilite su presentacin en lapantalla de un ordenador o en impresorapantalla de un ordenador o en impresora
La transformacin de XML a HTML es el principalLa transformacin de XML a HTML es el principaluso que se hace de XSLTuso que se hace de XSLT
-
8/3/2019 06.Transformacin de documentos XML con XSLT
5/53
Aplicacin de las transformacionesAplicacin de las transformaciones
No debemos confundir las transformaciones XSLTNo debemos confundir las transformaciones XSLTcon la presentacin de documentos XML con CSScon la presentacin de documentos XML con CSS
Con XSLT, generaremos un documento HTML aCon XSLT, generaremos un documento HTML apartir de un documento XML. Se tratar de dospartir de un documento XML. Se tratar de dosdocumentos distintosdocumentos distintos
Con CSS, el navegador recibe un documento XMLCon CSS, el navegador recibe un documento XML
que formatea utilizando las reglas CSS paraque formatea utilizando las reglas CSS parapresentarlo en pantalla de forma que sea mspresentarlo en pantalla de forma que sea msfcilmente legible, pero es el mismo documentofcilmente legible, pero es el mismo documento
-
8/3/2019 06.Transformacin de documentos XML con XSLT
6/53
XSLT, XSL, XSL FO...XSLT, XSL, XSL FO...
XSLT es parte de la especificacin XSL (eXtensibleXSLT es parte de la especificacin XSL (eXtensibleStylesheet 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 1999estable desde noviembre de 1999
XSL FO cuenta con escaso soporte por parte de la industriaXSL FO cuenta con escaso soporte por parte de la industriadebido a su complejidad.debido a su complejidad.
Su propsito es definir la forma en la que se debe presentarSu propsito es definir la forma en la que se debe presentarun documento XML en papel o en pantalla.un documento XML en papel o en pantalla.
En este sentido, XSL FO sera una especificacin similar aEn este sentido, XSL FO sera una especificacin similar aCSS.CSS.
-
8/3/2019 06.Transformacin de documentos XML con XSLT
7/53
XSLT, XSL, XSL FO...XSLT, XSL, XSL FO...
Actualmente contamos con varias herramietasActualmente contamos con varias herramietaspara realizar transformaciones XSLT:para realizar transformaciones XSLT: Saxon, desarrollado en Java por Michael Kay (un gurSaxon, desarrollado en Java por Michael Kay (un gur
de XSLT)de XSLT)
xt, diseado por James Clarkxt, diseado por James Clark
En las prcticas usaremos XMLSpyEn las prcticas usaremos XMLSpy
-
8/3/2019 06.Transformacin de documentos XML con XSLT
8/53
Estructura de una hoja de estilo XSLTEstructura de una hoja de estilo XSLT
UnaUna hojahoja dede estiloestilo XSLTXSLT eses unun documentodocumento XMLXML..DebeDebe estarestar bienbien formadoformado..
LasLas hojashojas dede estiloestilo sese guardarnguardarn siempresiempre enen
archivosarchivos independientesindependientes concon extensinextensin ..xslxsl DebenDeben comenzarcomenzar concon unauna declaracindeclaracin XMLXML::
ElEl elementoelemento razraz dede lala hojahoja dede estiloestilo XSLTXSLT eses
stylsheetstylsheet.. EsteEste elementoelemento contendrcontendr aa todostodos loslos dems,dems, yy
debedebe irir precedidoprecedido porpor elel aliasalias xslxsl correspondientecorrespondientealal espacioespacio dede nombresnombres parapara hojashojas dede estiloestilo XSLTXSLT..
-
8/3/2019 06.Transformacin de documentos XML con XSLT
9/53
Estructura de una hoja de estilo XSLTEstructura de una hoja de estilo XSLT
EnEn laslas hojashojas dede estiloestilo XSLT,XSLT, loslos nombresnombres dede losloselementoselementos reservadosreservados porpor lala especificacin,especificacin,procedenproceden dede unun mismomismo espacioespacio dede nombres,nombres, yy
porpor lolo tantotanto debendeben escribirseescribirse precedidosprecedidos porpor elelcorrespondientecorrespondiente aliasalias..
ElEl aliasalias debedebe apuntarapuntar aa lala URLURL:: httphttp:://www//www..ww33..org/org/19991999/XSL/Transform/XSL/Transform
DeDe estaesta forma,forma, elel elementoelemento razraz quedarquedar asas::
........................................
-
8/3/2019 06.Transformacin de documentos XML con XSLT
10/53
Estructura de una hoja de estilo XSLTEstructura de una hoja de estilo XSLT
Entras las marcas de inicio y de fin del elementoEntras las marcas de inicio y de fin del elementoraz xsl:stylesheet, se escribirn las reglas deraz xsl:stylesheet, se escribirn las reglas detransformacin propiamente dichastransformacin propiamente dichas
Cada regla se definir mediante un elementoCada regla se definir mediante un elementoxsl:templatexsl:template
La regla indica qu instancias de los elementosLa regla indica qu instancias de los elementosdel documento XML se van a transformar.del documento XML se van a transformar.
La regla tambin indicar cmo se debenLa regla tambin indicar cmo se debentransformar cada una de ellastransformar cada una de ellas
-
8/3/2019 06.Transformacin de documentos XML con XSLT
11/53
Estructura de una hoja de estilo XSLTEstructura de una hoja de estilo XSLT
EJEMPLOEJEMPLO::
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 atributoEsto se indica mediante el atributo matchmatch que acompaa alque acompaa alelementoelemento xsl:templatexsl:template..
Entre las etiquetas de inicio y de fin del elementoEntre las etiquetas de inicio y de fin del elemento xsl:templatexsl:templatese escribe la transformacin que se debe realizar...se escribe la transformacin que se debe realizar...
es decir,es decir, qu texto y qu marcas se escribirn en elqu texto y qu marcas se escribirn en eldocumento resultado de la transformacindocumento resultado de la transformacin, cada vez que se, cada vez que seencuentre una instancia del elementoencuentre una instancia del elemento nombrenombre en el documentoen el documentoorigen.origen.
Con , se recupera y escribe en el documento, se recupera y escribe en el documentoresultado el valor del elemento que est siendo procesado.resultado el valor del elemento que est siendo procesado.
-
8/3/2019 06.Transformacin de documentos XML con XSLT
12/53
Ejemplo transformacin XSLTEjemplo transformacin XSLT
MadridMadrid35000003500000
MlagaMlaga800000800000
ToledoToledo5000050000
-
8/3/2019 06.Transformacin de documentos XML con XSLT
13/53
Ejemplo 1: transformacin XSLTEjemplo 1: transformacin XSLT
MadridMadrid35000003500000
MlagaMlaga800000800000
ToledoToledo5000050000
-
8/3/2019 06.Transformacin de documentos XML con XSLT
14/53
Ejemplo 1: transformacin XSLTEjemplo 1: transformacin XSLT
Madrid3500000Madrid3500000
Mlaga800000Mlaga800000
Toledo50000Toledo50000
El resultado obtenido no es un documento HTML vlidoEl resultado obtenido no es un documento HTML vlido
Vemos que en el documento de salida no slo se ha incluidoVemos que en el documento de salida no slo se ha incluidoel texto de los elementos procesados, sino el de todos losel texto de los elementos procesados, sino el de todos loselementos del documento originalelementos del documento original
Para evitar sto, tenemos que hacer unos cambios en laPara evitar sto, tenemos que hacer unos cambios en lahoja de estilo XSLT (ver siguiente pgina):hoja de estilo XSLT (ver siguiente pgina):
-
8/3/2019 06.Transformacin de documentos XML con XSLT
15/53
Ejemplo 1: transformacin XSLTEjemplo 1: transformacin XSLT
Ejemplo XSLTEjemplo XSLT
-
8/3/2019 06.Transformacin de documentos XML con XSLT
16/53
La regla de inicioLa regla de inicio
La regla se ejecutaLa regla se ejecutacuando se encuentra el elemento raz delcuando se encuentra el elemento raz deldocumento XMLdocumento XML
Dentro de esta regla, podemos incluir llamadas aDentro 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:
El atributo select tomar como valor el nombreEl atributo select tomar como valor el nombredel elemento asociado a la regla que queremosdel elemento asociado a la regla que queremos
disparardisparar Esto nos ofrece un control real sobre el ordenEsto nos ofrece un control real sobre el orden
de ejecucin de las reglasde ejecucin de las reglas
-
8/3/2019 06.Transformacin de documentos XML con XSLT
17/53
La regla de inicioLa regla de inicio
El resultado de la transformacin es el siguiente:El resultado de la transformacin es el siguiente:
Ejemplo XSLTEjemplo XSLT
MadridMadrid
MlagaMlaga
ToledoToledo
-
8/3/2019 06.Transformacin de documentos XML con XSLT
18/53
EjemplosEjemplos
Con XML Spy, crear una primera hoja de estiloCon XML Spy, crear una primera hoja de estiloXSLT que, a partir del documento XMLXSLT que, a partir del documento XMLprestamos.xml, extraiga en un documento HTMLprestamos.xml, extraiga en un documento HTMLel ttulo de los libros que se han prestadoel ttulo de los libros que se han prestado
Formatear la lista de ttulos para que se presenteFormatear la lista de ttulos para que se presente
como una lista no ordenada (sin numerar), decomo una lista no ordenada (sin numerar), deHTMLHTML Cambiar la hoja de estilo XSLT para que losCambiar la hoja de estilo XSLT para que los
ttulos se presenten en una tabla con una nicattulos se presenten en una tabla con una nicacolumnacolumna
Cambiar la hoja de estilo para que los ttulos seCambiar la hoja de estilo para que los ttulos sepresenten en una tabla con dos columnas. En lapresenten en una tabla con dos columnas. En laprimera de ellas se escribir un texto fijo: LIBROprimera de ellas se escribir un texto fijo: LIBROEN PRESTAMOEN PRESTAMO
-
8/3/2019 06.Transformacin de documentos XML con XSLT
19/53
El elemento
En el elemento se puede indicarque se quiere mostrar el valor del elemento queque se quiere mostrar el valor del elemento queestamos procesandoestamos procesando
Tambin podemos indicar que queremos mostrarTambin podemos indicar que queremos mostrarel valor de un elemento hijo, o descendiente, delel valor de un elemento hijo, o descendiente, delelemento que se est procesandoelemento que se est procesando
En el ejemplo anterior, podramos utilizarEn el ejemplo anterior, podramos utilizarxsl:valuexsl:value--of para mostrar en el documentoof para mostrar en el documentoresultado de la transformacin el ttulo, cdigo deresultado de la transformacin el ttulo, cdigo de
registro o fecha de prstamo de cada libroregistro o fecha de prstamo de cada libro Esto es posible porque en el atributo selectEsto es posible porque en el atributo select
podemos utilizar una expresin XPATHpodemos utilizar una expresin XPATH
-
8/3/2019 06.Transformacin de documentos XML con XSLT
20/53
El elemento
Por ejemplo, para mostrar el valor del elementoPor ejemplo, para mostrar el valor del elementotitulo, que es un hijo del elemento ejemplar,titulo, que es un hijo del elemento ejemplar,podramos utilizar la siguiente regla:podramos utilizar la siguiente regla:
El valor del atributo select se puede leer de laEl valor del atributo select se puede leer de lasiguiente forma: dame el valor del elementosiguiente forma: dame el valor del elemento
titulo que es hijo del elemento que estoytitulo que es hijo del elemento que estoyprocesando. En este caso, cada uno de losprocesando. En este caso, cada uno de loselementos ejemplarelementos ejemplar
Esto se indica mediante ./Esto se indica mediante ./
-
8/3/2019 06.Transformacin de documentos XML con XSLT
21/53
El elemento
Utilizando el documento prestamos.xml, crearUtilizando el documento prestamos.xml, crearuna hoja XSLT que transforme el documento xmluna hoja XSLT que transforme el documento xmlen un documento HTML.en un documento HTML.
El documento HTML deber mostrar una tabla. LaEl documento HTML deber mostrar una tabla. La
tabla contendr una fila para cada ejemplartabla contendr una fila para cada ejemplarprestado.prestado.
Las filas tendrn cuatro celdas, en las queLas filas tendrn cuatro celdas, en las queaparecer el nmero de registro, el ttulo delaparecer el nmero de registro, el ttulo del
libro, y la fecha de prstamo y devolucin.libro, y la fecha de prstamo y devolucin.
-
8/3/2019 06.Transformacin de documentos XML con XSLT
22/53
ResumenResumen
En las reglas XSLT, entre sus marcas de inicio yEn las reglas XSLT, entre sus marcas de inicio yde fin, se puede incluir:de fin, se puede incluir:
Texto que se escribir tal cual en elTexto que se escribir tal cual en eldocumento resultado de la transformacin.documento resultado de la transformacin.
Marcas HTML o XML que se aadiran alMarcas HTML o XML que se aadiran aldocumento resultado de la transformacin.documento resultado de la transformacin.
Elementos reservados de la especificacinElementos reservados de la especificacinXSLT que realizarn una accin comoXSLT que realizarn una accin comorecuperar el valor de un elemento, ordenarrecuperar el valor de un elemento, ordenarlos resultados, llamar a otras reglas de lalos resultados, llamar a otras reglas de lahoja de estilo, etc.hoja de estilo, etc.
-
8/3/2019 06.Transformacin de documentos XML con XSLT
23/53
Orden de procesamientoOrden de procesamiento
Las reglas se van activando y ejecutando aLas reglas se van activando y ejecutando amedida que se recorre el documento origen quemedida que se recorre el documento origen quese quiere transformar.se quiere transformar.
De esta forma, las reglas se ejecutan en elDe esta forma, las reglas se ejecutan en elorden en el que se van encontrando losorden en el que se van encontrando loselementos en el documento.elementos en el documento.
Este comportamiento por defecto puedeEste comportamiento por defecto puedecambiarse en las hojas de estilo XSLT, acambiarse en las hojas de estilo XSLT, adiferencia de lo que suceda en las hojas dediferencia de lo que suceda en las hojas de
estilo CSSestilo CSS Esto permite reordenar los contenidos delEsto permite reordenar los contenidos del
documento XML, de una forma distinta a comodocumento XML, de una forma distinta a comoestn ordenadas en el documento XML inicialestn ordenadas en el documento XML inicial
-
8/3/2019 06.Transformacin de documentos XML con XSLT
24/53
Orden de procesamientoOrden de procesamiento
Para ordenar los contenidos, se utiliza elPara ordenar los contenidos, se utiliza elelemento xsl:sortelemento xsl:sort
Xsl:sort es un elemento hijo de xsl:applyXsl:sort es un elemento hijo de xsl:apply--templatestemplates
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 ordenacin yque se va a utilizar como criterio de ordenacin y
orderorder que indica si se debe utilizar un ordenque indica si se debe utilizar un ordenascendente o descendente.ascendente o descendente.
-
8/3/2019 06.Transformacin de documentos XML con XSLT
25/53
Orden de procesamientoOrden de procesamiento
Para ordenar los contenidos, se utiliza elPara ordenar los contenidos, se utiliza elelemento xsl:sortelemento xsl:sort
Xsl:sort es un elemento hijo de xsl:applyXsl:sort es un elemento hijo de xsl:apply--templatestemplates
Acepta dos atributos:Acepta dos atributos: selectselect que toma como valor el nombre del elementoque toma como valor el nombre del elementoque se va a utilizar como criterio de ordenacin yque se va a utilizar como criterio de ordenacin y
orderorder que indica si se debe utilizar un ordenque indica si se debe utilizar un ordenascendente o descendente.ascendente o descendente.
En el ejemplo anterior, modificar la xslt para que losEn el ejemplo anterior, modificar la xslt para que loslibros se ordenen por ttulo ascendentelibros se ordenen por ttulo ascendente
-
8/3/2019 06.Transformacin de documentos XML con XSLT
26/53
Asociar una hoja de estilo a un documentoAsociar una hoja de estilo a un documento
Debemos incluir, tras la declaracin XML, laDebemos incluir, tras la declaracin XML, lasiguiente instruccin de procesamiento:siguiente instruccin de procesamiento:
EjemploEjemplo
Programar ASPProgramar ASP456456
-
8/3/2019 06.Transformacin de documentos XML con XSLT
27/53
Leer y obtener el valor de atributos en XSLTLeer 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 unelemento queremos procesar, tomando como criterio deelemento queremos procesar, tomando como criterio deseleccin el valor de los atributos que acompaan a losseleccin el valor de los atributos que acompaan a loselementoselementos
Para hacer esto, en un elemento xsl:valuePara hacer esto, en un elemento xsl:value--of, podemosof, podemosrecuperar el valor de un atributo mediante la expresinrecuperar el valor de un atributo mediante la expresin@nombreAtributo , por ejemplo:@nombreAtributo , por ejemplo:
Ejemplo: disear una hoja de estilo que convierta en una tabla losEjemplo: disear una hoja de estilo que convierta en una tabla losdatos de ejemplares del documento prestamoAtributos.xmldatos de ejemplares del documento prestamoAtributos.xml
-
8/3/2019 06.Transformacin de documentos XML con XSLT
28/53
Ejecucin condicional de reglasEjecucin condicional de reglas
Para indicar qu instancias de un elemento queremosPara indicar qu instancias de un elemento queremosprocesar, o realizar una ejecucin condicional de cdigo,procesar, o realizar una ejecucin condicional de cdigo,en XSLT disponemos del elemento xsl:ifen XSLT disponemos del elemento xsl:if
Xsl:if va acompaado de un atributo test que contiene unaXsl:if va acompaado de un atributo test que contiene unacondicin.condicin.
Si la condicin se cumple para el elemento que se estSi la condicin se cumple para el elemento que se estprocesando, la regla de ejecutar. Por ejemplo:procesando, la regla de ejecutar. Por ejemplo:
-
8/3/2019 06.Transformacin de documentos XML con XSLT
29/53
Ejecucin condicional de reglas: xsl:choose,Ejecucin condicional de reglas: xsl:choose,
xsl:when y xsl:otherwisexsl:when y xsl:otherwise
Estos elementos amplan las posibilidades del elementoEstos elementos amplan las posibilidades del elementoxsl:ifxsl:if
Permiten indicar qu transformacin se debe realizar en elPermiten indicar qu transformacin se debe realizar en elcaso de que se cumpla una condicin, y en el resto de casoscaso de que se cumpla una condicin, y en el resto de casos
Se utilizan de forma conjunta. El elemento xsl:chooseSe utilizan de forma conjunta. El elemento xsl:choosecontendr a uno o ms elementos xsl:when y a un elementocontendr a uno o ms elementos xsl:when y a un elementoxsl:otherwise.xsl:otherwise.
El elemento xsl:when incluye un atributo test que tomarEl elemento xsl:when incluye un atributo test que tomarcomo valor la expresin que se evaluar. Si se cumple, secomo valor la expresin que se evaluar. Si se cumple, seejecutar el cdigo escrito entre las etiquetas de inicio y deejecutar el cdigo escrito entre las etiquetas de inicio y defin del elemento xsl:when.fin del elemento xsl:when.
El elemento xsl:otherwise contendr el cdigo que seEl elemento xsl:otherwise contendr el cdigo que seejecutar si no se cumplen las expresiones indicadas en losejecutar si no se cumplen las expresiones indicadas en losatributos test de los elementos xsl:when.atributos test de los elementos xsl:when.
-
8/3/2019 06.Transformacin de documentos XML con XSLT
30/53
Ejecucin condicional de reglas: xsl:choose,Ejecucin condicional de reglas: xsl:choose,
xsl:when y xsl:otherwisexsl:when y xsl:otherwise
..........
..........
..........
..........
..........
..........
....................
-
8/3/2019 06.Transformacin de documentos XML con XSLT
31/53
Ejecucin condicional de reglas: xsl:choose,Ejecucin condicional de reglas: xsl:choose,
xsl:when y xsl:otherwisexsl:when y xsl:otherwise
..........
..........
..........
..............................
..........
..........
Continuando con el ejemplo anterior, crear una hoja deContinuando con el ejemplo anterior, crear una hoja deestilo XSLT que muestre en rojo las filas de la tablaestilo XSLT que muestre en rojo las filas de la tablacorrespondientes a los libros que no se han devuelto an.correspondientes a los libros que no se han devuelto an.
-
8/3/2019 06.Transformacin de documentos XML con XSLT
32/53
-
8/3/2019 06.Transformacin de documentos XML con XSLT
33/53
Otros elementos: xsl:import y xsl:includeOtros elementos: xsl:import y xsl:include
Los elementos xsl:import se debe incluir justo a continuacinLos elementos xsl:import se debe incluir justo a continuacinde la etiqueta de inicio del elemento xsl:stylesheet, y antesde la etiqueta de inicio del elemento xsl:stylesheet, y antesde 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 regladel documento, siempre que se escriba fuera de una reglaxsl:template.xsl:template.
-
8/3/2019 06.Transformacin de documentos XML con XSLT
34/53
Otros elementos: xsl:import y xsl:includeOtros elementos: xsl:import y xsl:include
EjemploEjemplo
Lista de librosLista de libros
.,, ISBN:
-
8/3/2019 06.Transformacin de documentos XML con XSLT
35/53
Otros elementos: xsl:import y xsl:includeOtros elementos: xsl:import y xsl:include
EjemploEjemplo
Lista de librosLista de libros
-
8/3/2019 06.Transformacin de documentos XML con XSLT
36/53
Otros elementos: xsl:import y xsl:includeOtros elementos: xsl:import y xsl:include
.,
, ISBN
:
En cualquiera de las dos hojas anteriores se podra incluirEn cualquiera de las dos hojas anteriores se podra incluiruna referencia a la otra hoja de estilo, utilizando la siguienteuna referencia a la otra hoja de estilo, utilizando la siguiente
sintxis:sintxis:
-
8/3/2019 06.Transformacin de documentos XML con XSLT
37/53
Otros elementos: xsl:variableOtros elementos: xsl:variable
El elemento xsl:variable se utiliza para declarar unaEl elemento xsl:variable se utiliza para declarar unavariablevariable
Las variables nos permiten realizar operaciones conLas variables nos permiten realizar operaciones conlos datos del documento XML para luego mostrar ellos datos del documento XML para luego mostrar elresultado en el documento resultadoresultado en el documento resultado
Es importante sealar que cuando se le asigna unEs importante sealar que cuando se le asigna unvalor, ste ya no se puede cambiarvalor, ste ya no se puede cambiar
Para declarar una variable, se utilizar la sintxis:Para declarar una variable, se utilizar la sintxis:
A continuacin tenemos un ejemplo:A continuacin tenemos un ejemplo:
-
8/3/2019 06.Transformacin de documentos XML con XSLT
38/53
Otros elementos: xsl:variableOtros elementos: xsl:variable
Construcciones BarcelonaConstrucciones BarcelonaGran Via 45, 2Gran Via 45, 2BarcelonaBarcelona
TornillosTornillos--55
1000010000333000030000
PaletasPaletas1001005005005000050000
LadrillosLadrillos60060023231380013800
OO
-
8/3/2019 06.Transformacin de documentos XML con XSLT
39/53
Otros elementos: xsl:variableOtros elementos: xsl:variable
PedidoPedido
MaterialMaterialUnidadesUnidadesPrecioPrecioTotal Pts.Total Pts.
-
8/3/2019 06.Transformacin de documentos XML con XSLT
40/53
PedidoPedido
MaterialMaterialUnidadesUnidadesPrecioPrecioTotal Pts.Total Pts.
Total a pagar:
-
8/3/2019 06.Transformacin de documentos XML con XSLT
41/53
Elemento xsl:copyElemento xsl:copy--ofof Se utiliza para copiar un conjunto de nodos delSe utiliza para copiar un conjunto de nodos del
documento origen, al documento resultado de ladocumento origen, al documento resultado de latransformacin.transformacin.
Se copiarn todos los nodos hijos y los atributosSe copiarn 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 seEste elemento es especialmente til cuando sequiere convertir un documento XML a otroquiere convertir un documento XML a otrodocumento XML con una estructura diferente.documento XML con una estructura diferente.
El elemento xsl:copyEl elemento xsl:copy--of ir acompaado por unof ir acompaado por unatributo select que toma como valor unaatributo select que toma como valor una
expresin que determinar los nodos que se vanexpresin que determinar los nodos que se vana copiar.a copiar. Este elemento tambin se puede utilizar paraEste elemento tambin se puede utilizar para
copiar en el documento resultado el valor de unacopiar en el documento resultado el valor de unavariable. En este caso, se escribir como valor delvariable. En este caso, se escribir como valor delatributo select el nombre de la variable precedidoatributo select el nombre de la variable precedido
por el carcter $.por el carcter $.
-
8/3/2019 06.Transformacin de documentos XML con XSLT
42/53
Ejemplo xsl:copyEjemplo xsl:copy--ofof
Don Quijote de la ManchaDon Quijote de la ManchaMiguel de CervantesMiguel de Cervantes8484--568568--9494--33
La GalateaLa GalateaMiguel de CervantesMiguel de Cervantes8484--568568--94249424
La CelestinaLa CelestinaFernando de RojasFernando de Rojas8484--568568--9595--1212
-
8/3/2019 06.Transformacin de documentos XML con XSLT
43/53
Ejemplo xsl:copyEjemplo xsl:copy--ofof
-
8/3/2019 06.Transformacin de documentos XML con XSLT
44/53
Ejemplo xsl:copyEjemplo xsl:copy--ofof
Don Quijote de la ManchaDon Quijote de la ManchaMiguel de CervantesMiguel de Cervantes8484--568568--9494--33
La GalateaLa GalateaMiguel de CervantesMiguel de Cervantes8484--568568--94249424
Utilizando el ejemplo de prstamos, crea una hoja de estiloUtilizando el ejemplo de prstamos, crea una hoja de estiloXSLT que extraiga del documento los elementosXSLT que extraiga del documento los elementoscorrespondinetes a los prstamos que no han sido devueltoscorrespondinetes a los prstamos que no han sido devueltos
-
8/3/2019 06.Transformacin de documentos XML con XSLT
45/53
Ejemplo xsl:copyEjemplo xsl:copy
Similar al elemento anterior, se utiliza para copiar elementos,Similar al elemento anterior, se utiliza para copiar elementos,pero no se copiarn sus atributos ni sus elementos hijospero no se copiarn sus atributos ni sus elementos hijos
Cuando se aplica sobre elementos, se copia el elemento, peroCuando se aplica sobre elementos, se copia el elemento, perono su valor...no su valor...
Ejemplo:Ejemplo:
indent="yes"/>
-
8/3/2019 06.Transformacin de documentos XML con XSLT
46/53
Ejemplo xsl:copyEjemplo xsl:copy
En el ejemplo anterior, se crea un elemento autor vaco en elEn el ejemplo anterior, se crea un elemento autor vaco en eldocumento destino, para cada elemento autor existente en eldocumento destino, para cada elemento autor existente en eldocumento originaldocumento original
Para copiar el valor de los elementos autor, habra quePara copiar el valor de los elementos autor, habra quemodificar la XSLTmodificar la XSLT
indent="yes"/>
-
8/3/2019 06.Transformacin de documentos XML con XSLT
47/53
Elemento xsl:elementElemento xsl:element
Se utiliza para crear elementos en el documentoSe utiliza para crear elementos en el documentoresultado de la transformacin.resultado de la transformacin. Es especialmente til cuando se utiliza XSLT paraEs especialmente til cuando se utiliza XSLT para
transformar un documento XML en otro con unatransformar un documento XML en otro con unaestructura diferente.estructura diferente.
xsl:element ir acompaado por un atributo namexsl:element ir acompaado por un atributo nameque tomar como valor el nombre del elementoque tomar como valor el nombre del elementoque 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 URI que corresponde a este espacio de nombresel URI que corresponde a este espacio de nombresse puede indicar en otro atributo: namespacese puede indicar en otro atributo: namespace
-
8/3/2019 06.Transformacin de documentos XML con XSLT
48/53
Elemento xsl:attributeElemento xsl:attribute
Permite crear un atributo en el documentoPermite crear un atributo en el documentoresultado de la transformacin.resultado de la transformacin. Ir acompaado por un atributo name, queIr acompaado por un atributo name, que
recoger el nombre del atributo, y opcionalmenterecoger el nombre del atributo, y opcionalmentepor un atributo namespace que recoger el aliaspor un atributo namespace que recoger el aliasdel espacio de nombres del cual procede eldel espacio de nombres del cual procede el
atributo.atributo.
-
8/3/2019 06.Transformacin de documentos XML con XSLT
49/53
Elemento xsl:commentElemento xsl:comment
EsteEste elementoelemento sese utilizarutilizar parapara crearcrear ununcomentariocomentario enen elel documentodocumento resultadoresultado dede lalatransformacintransformacin..
ElEl elementoelemento xslxsl::commentcomment contendrcontendr elel textotextodeldel comentario,comentario, sinsin laslas marcasmarcas >
-
8/3/2019 06.Transformacin de documentos XML con XSLT
50/53
ElementoElemento xsl:processingxsl:processing--instructioninstruction
Se utiliza para crear una instruccin de procesamiento en elSe utiliza para crear una instruccin de procesamiento en eldocumento resultado de la transformacin.documento resultado de la transformacin.
Debe ir acompaado por un atributo name, que esDebe ir acompaado por un atributo name, que esobligatorio, y que toma como valor el nombre de laobligatorio, y que toma como valor el nombre de lainstruccin de procesamiento.instruccin de procesamiento.
Entre sus etiquetas de inicio y de fin se escribirn losEntre sus etiquetas de inicio y de fin se escribirn loscalificadores de la instruccin de procesamiento, entre lascalificadores de la instruccin de procesamiento, entre las
marcas y .marcas y .
EjemploEjemplo El siguiente cdigo creara una instruccin de procesamientoEl siguiente cdigo creara una instruccin de procesamiento
en el documento destino:en el documento destino:
type=text/xsl href=hojaEstilo.xsltype=text/xsl href=hojaEstilo.xsl
-
8/3/2019 06.Transformacin de documentos XML con XSLT
51/53
ElementoElemento xsl:processingxsl:processing--instructioninstruction
Se utiliza para crear una instruccin de procesamiento en elSe utiliza para crear una instruccin de procesamiento en eldocumento resultado de la transformacin.documento resultado de la transformacin.
Debe ir acompaado por un atributo name, que esDebe ir acompaado por un atributo name, que esobligatorio, y que toma como valor el nombre de laobligatorio, y que toma como valor el nombre de lainstruccin de procesamiento.instruccin de procesamiento.
Entre sus etiquetas de inicio y de fin se escribirn losEntre sus etiquetas de inicio y de fin se escribirn loscalificadores de la instruccin de procesamiento, entre lascalificadores de la instruccin de procesamiento, entre las
marcas y .marcas y .
EjemploEjemplo El siguiente cdigo creara una instruccin de procesamientoEl siguiente cdigo creara una instruccin de procesamiento
en el documento destino:en el documento destino:
type=text/xsl href=hojaEstilo.xsltype=text/xsl href=hojaEstilo.xsl
-
8/3/2019 06.Transformacin de documentos XML con XSLT
52/53
Prcticas XSLTPrcticas XSLT -- 11
Utilizando el documento prestamos.xml, crear una hoja deUtilizando el documento prestamos.xml, crear una hoja deestilo que muestre un informe con los siguientes datos:estilo que muestre un informe con los siguientes datos:
Un cabecera H1 con el ttulo Informe de prstamosUn cabecera H1 con el ttulo Informe de prstamos Para cada lector, un encabezamiento H3 con su nombre yPara cada lector, un encabezamiento H3 con su nombre y
apellidos. En una lnea aparte, su cdigo de lector en cursivaapellidos. En una lnea aparte, su cdigo de lector en cursiva El cdigo de lector ir precedido por el texto:El cdigo de lector ir precedido por el texto: Nmero deNmero de
cdigo del lector:cdigo del lector: A continuacin, en una tabla, los libros que el lector haA continuacin, en una tabla, los libros que el lector ha
tomado en prstamo. Cada libro en una fila aparte,tomado en prstamo. Cada libro en una fila aparte,ordenados por ttulo.ordenados por ttulo.
Las columnas en esta tabla sern: ttulo, fecha prstamo, yLas columnas en esta tabla sern: ttulo, fecha prstamo, ycdigo registro.cdigo registro.
Tras la tabla, justo antes del nombre del siguiente lector, seTras la tabla, justo antes del nombre del siguiente lector, se
escribir una lnea separadora escribir una lnea separadora
-
8/3/2019 06.Transformacin de documentos XML con XSLT
53/53
Prcticas XSLTPrcticas XSLT -- 22
Utilizando el documento revistas.xml, crear una hoja de estiloUtilizando el documento revistas.xml, crear una hoja de estiloXSLT que genere un documento HTML con la siguienteXSLT que genere un documento HTML con la siguienteestructura.estructura.
Las revistas se ordenarn por su ISSN. El ISSN aparecerLas revistas se ordenarn por su ISSN. El ISSN aparecerprecedido por el texto ISSN:, con estilo H2.precedido por el texto ISSN:, con estilo H2.
Tras el ISSN, utilizando una lista no ordenada HTML, seTras el ISSN, utilizando una lista no ordenada HTML, seescribir el ttulo de la revista, el ttulo abreviado, el periodoescribir el ttulo de la revista, el ttulo abreviado, el periodo
de publicacin, y el cdigo temtico.de publicacin, y el cdigo temtico. En la misma lista, pero sta vez utilizando una lista anidadaEn la misma lista, pero sta vez utilizando una lista anidada
ordenada, se escribirn las materias o temas que cubre laordenada, se escribirn las materias o temas que cubre larevista.revista.
Evita que salgan en la lista entradas vacasEvita que salgan en la lista entradas vacas