06.Transformación de documentos XML con XSLT

Embed Size (px)

Citation preview

  • 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