Tema 6: Transformaci - PowerPoint PPT Presentation

1 / 53
About This Presentation
Title:

Tema 6: Transformaci

Description:

Title: El libro electr nico Author: Ricardo Eito Brun Last modified by: Ricardo Eito Brun Created Date: 3/17/2000 10:05:52 AM Document presentation format – PowerPoint PPT presentation

Number of Views:65
Avg rating:3.0/5.0
Slides: 54
Provided by: Ricar141
Category:

less

Transcript and Presenter's Notes

Title: Tema 6: Transformaci


1
Tema 6 Transformación de documentos XML con XSLT
  • Ricardo Eíto Brun
  • Sevilla, 23-25 de octubre 2002

2
Guíon del tema
  • Necesidad de la transformación
  • Hojas de estilo para la transformación
  • Estructura y sintáxis XSLT
  • Selectores XSLT
  • Transformar documentos XML con XML-Spy
  • Prácticas con XML y HTML

3
Necesidad de las transformaciones
  • XML se presenta como un estándar para
    transmitir datos a través de Internet
  • Ante la posibilidad de que distintos centros o
    aplicaciones utilicen esquemas o DTD
    diferentes, es necesario un sistema que permita
    transformar los datos de un documento XML
  • XSLT (eXtensible Stylesheet Language
    Transformations), describe un lenguaje basado en
    XML para transformar documentos XML a cualquier
    otro formato

4
Aplicación de las transformaciones
  • Normalmente, utilizaremos XSLT para transformar
    documentos entre esquemas XML que permitan su
    procesamiento por distintos sistemas
  • También utilizaremos XSLT para transformar
    documentos XML en HTML, WML, o cualquier otro
    formato que facilite su presentación en la
    pantalla de un ordenador o en impresora
  • La transformación de XML a HTML es el principal
    uso que se hace de XSLT

5
Aplicación de las transformaciones
  • No debemos confundir las transformaciones XSLT
    con la presentación de documentos XML con CSS
  • Con XSLT, generaremos un documento HTML a partir
    de un documento XML. Se tratará de dos documentos
    distintos
  • Con CSS, el navegador recibe un documento XML que
    formatea utilizando las reglas CSS para
    presentarlo en pantalla de forma que sea más
    fácilmente legible, pero es el mismo documento

6
XSLT, XSL, XSL FO...
  • XSLT es parte de la especificación XSL
    (eXtensible Stylesheet Language).
  • En XSL se distingue entre
  • XSL FO (eXtensible Stylesheet Language Formatting
    Objects)
  • XSLT (eXtensible StyleSheet Language
    Transformations), estable desde noviembre de 1999
  • XSL FO cuenta con escaso soporte por parte de la
    industria debido a su complejidad.
  • Su propósito es definir la forma en la que se
    debe presentar un documento XML en papel o en
    pantalla.
  • En este sentido, XSL FO sería una especificación
    similar a CSS.

7
XSLT, XSL, XSL FO...
  • Actualmente contamos con varias herramietas para
    realizar transformaciones XSLT
  • Saxon, desarrollado en Java por Michael Kay (un
    gurú de XSLT)
  • xt, diseñado por James Clark
  • En las prácticas usaremos XMLSpy

8
Estructura de una hoja de estilo XSLT
  • Una hoja de estilo XSLT es un documento XML. Debe
    estar bien formado.
  • Las hojas de estilo se guardarán siempre en
    archivos independientes con extensión .xsl
  • Deben comenzar con una declaración XML
  • lt?xml version"1.0?gt
  • El elemento raíz de la hoja de estilo XSLT es
    stylsheet.
  • Este elemento contendrá a todos los demás, y debe
    ir precedido por el alias xsl correspondiente al
    espacio de nombres para hojas de estilo XSLT.

9
Estructura de una hoja de estilo XSLT
  • En las hojas de estilo XSLT, los nombres de los
    elementos reservados por la especificación,
    proceden de un mismo espacio de nombres, y por lo
    tanto deben escribirse precedidos por el
    correspondiente alias.
  • El alias debe apuntar a la URL
  • http//www.w3.org/1999/XSL/Transform
  • De esta forma, el elemento raíz quedará así
  • ltxslstylesheet version"1.0" xmlnsxsl"http//w
    ww.w3.org/1999/XSL/Transform"gt
  • ....................
  • lt/xslstylesheetgt

10
Estructura de una hoja de estilo XSLT
  • Entras las marcas de inicio y de fin del elemento
    raíz xslstylesheet, se escribirán las reglas de
    transformación propiamente dichas
  • Cada regla se definirá mediante un elemento
    xsltemplate
  • La regla indica qué instancias de los elementos
    del documento XML se van a transformar.
  • La regla también indicará cómo se deben
    transformar cada una de ellas

11
Estructura de una hoja de estilo XSLT
  • EJEMPLO
  • ltxsltemplate match//nombregt
  • lth2gt
  • ltxslvalue-of select. /gt
  • lt/h2gt
  • lt/xsltemplategt
  • La regla se aplicará a todas las instancias del
    elemento nombre. Esto se indica mediante el
    atributo match que acompaña al elemento
    xsltemplate.
  • Entre las etiquetas de inicio y de fin del
    elemento xsltemplate se escribe la
    transformación que se debe realizar...
  • es decir, qué texto y qué marcas se escribirán en
    el documento resultado de la transformación, cada
    vez que se encuentre una instancia del elemento
    nombre en el documento origen.
  • Con ltxslvalue-of...gt, se recupera y escribe en
    el documento resultado el valor del elemento que
    está siendo procesado.

12
Ejemplo transformación XSLT
  • lt?xml version1.0?gt
  • ltciudadesgt
  • ltciudadgt
  • ltnombregtMadridlt/nombregt
  • lthabitantesgt3500000lt/habitantesgt
  • lt/ciudadgt
  • ltciudadgt
  • ltnombregtMálagalt/nombregt
  • lthabitantesgt800000lt/habitantesgt
  • lt/ciudadgt
  • ltciudadgt
  • ltnombregtToledolt/nombregt
  • lthabitantesgt50000lt/habitantesgt
  • lt/ciudadgt
  • lt/ciudadesgt

13
Ejemplo 1 transformación XSLT
  • lt?xml version1.0?gt
  • ltciudadesgt
  • ltciudadgt
  • ltnombregtMadridlt/nombregt
  • lthabitantesgt3500000lt/habitantesgt
  • lt/ciudadgt
  • ltciudadgt
  • ltnombregtMálagalt/nombregt
  • lthabitantesgt800000lt/habitantesgt
  • lt/ciudadgt
  • ltciudadgt
  • ltnombregtToledolt/nombregt
  • lthabitantesgt50000lt/habitantesgt
  • lt/ciudadgt
  • lt/ciudadesgt

14
Ejemplo 1 transformación XSLT
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • lth2gtMadridlt/h2gt3500000
  • lth2gtMálagalt/h2gt800000
  • lth2gtToledolt/h2gt50000
  • El resultado obtenido no es un documento HTML
    válido
  • Vemos que en el documento de salida no sólo se ha
    incluido el texto de los elementos procesados,
    sino el de todos los elementos del documento
    original
  • Para evitar ésto, tenemos que hacer unos cambios
    en la hoja de estilo XSLT (ver siguiente página)

15
Ejemplo 1 transformación XSLT
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxslstylesheet version"1.0" xmlnsxsl"http//ww
    w.w3.org/1999/XSL/Transform"gt
  • ltxsltemplate match"/"gt
  • lthtmlgt
  • ltheadgt
  • lttitlegtEjemplo XSLTlt/titlegt
  • lt/headgt
  • ltbodygt
  • ltxslapply-templates selectnombre /gt
  • lt/bodygt
  • lt/htmlgt
  • lt/xsltemplategt
  • ltxsltemplate match//nombregt
  • lth2gt
  • ltxslvalue-of select. /gt
  • lt/h2gt
  • lt/xsltemplategt
  • lt/xslstylesheetgt

16
La regla de inicio
  • La regla ltxsltemplate match/gt se ejecuta
    cuando se encuentra el elemento raíz del
    documento XML
  • Dentro de esta regla, podemos incluir llamadas a
    otras reglas definidas en la hoja de estilo,
    mediante el elemento
  • ltxslapply-templates select /gt
  • El atributo select tomará como valor el nombre
    del elemento asociado a la regla que queremos
    disparar
  • Esto nos ofrece un control real sobre el orden
    de ejecución de las reglas

17
La regla de inicio
  • El resultado de la transformación es el
    siguiente
  • lthtmlgt
  • ltheadgt
  • lttitlegtEjemplo XSLTlt/titlegt
  • lt/headgt
  • ltbodygt
  • lth2gtMadridlt/h2gt
  • lth2gtMálagalt/h2gt
  • lth2gtToledolt/h2gt
  • lt/bodygt
  • lt/htmlgt

18
Ejemplos
  • Con XML Spy, crear una primera hoja de estilo
    XSLT que, a partir del documento XML
    prestamos.xml, extraiga en un documento HTML el
    título de los libros que se han prestado
  • Formatear la lista de títulos para que se
    presente como una lista no ordenada (sin
    numerar), de HTML
  • Cambiar la hoja de estilo XSLT para que los
    títulos se presenten en una tabla con una única
    columna
  • Cambiar la hoja de estilo para que los títulos se
    presenten en una tabla con dos columnas. En la
    primera de ellas se escribirá un texto fijo
    LIBRO EN PRESTAMO

19
El elemento ltxslvalue-of...gt
  • En el elemento ltxslvalue-ofgt se puede indicar
    que se quiere mostrar el valor del elemento que
    estamos procesando
  • También podemos indicar que queremos mostrar el
    valor de un elemento hijo, o descendiente, del
    elemento que se está procesando
  • En el ejemplo anterior, podríamos utilizar
    xslvalue-of para mostrar en el documento
    resultado de la transformación el título, código
    de registro o fecha de préstamo de cada libro
  • Esto es posible porque en el atributo select
    podemos utilizar una expresión XPATH

20
El elemento ltxslvalue-of...gt
  • Por ejemplo, para mostrar el valor del elemento
    titulo, que es un hijo del elemento ejemplar,
    podríamos utilizar la siguiente regla
  • ltxsltemplate match"//ejemplar"gt
  • ltxslvalue-of select"./titulo" /gt
  • lt/xsltemplategt
  • El valor del atributo select se puede leer de la
    siguiente forma dame el valor del elemento
    titulo que es hijo del elemento que estoy
    procesando. En este caso, cada uno de los
    elementos ejemplar
  • Esto se indica mediante ./

21
El elemento ltxslvalue-of...gt
  • Utilizando el documento prestamos.xml, crear una
    hoja XSLT que transforme el documento xml en un
    documento HTML.
  • El documento HTML deberá mostrar una tabla. La
    tabla contendrá una fila para cada ejemplar
    prestado.
  • Las filas tendrán cuatro celdas, en las que
    aparecerá el número de registro, el título del
    libro, y la fecha de préstamo y devolución.

22
Resumen
  • En las reglas XSLT, entre sus marcas de inicio y
    de fin, se puede incluir
  • Texto que se escribirá tal cual en el documento
    resultado de la transformación.
  • Marcas HTML o XML que se añadiran al documento
    resultado de la transformación.
  • Elementos reservados de la especificación XSLT
    que realizarán una acción como recuperar el valor
    de un elemento, ordenar los resultados, llamar a
    otras reglas de la hoja de estilo, etc.

23
Orden de procesamiento
  • Las reglas se van activando y ejecutando a medida
    que se recorre el documento origen que se quiere
    transformar.
  • De esta forma, las reglas se ejecutan en el orden
    en el que se van encontrando los elementos en el
    documento.
  • Este comportamiento por defecto puede cambiarse
    en las hojas de estilo XSLT, a diferencia de lo
    que sucedía en las hojas de estilo CSS
  • Esto permite reordenar los contenidos del
    documento XML, de una forma distinta a como están
    ordenadas en el documento XML inicial

24
Orden de procesamiento
  • Para ordenar los contenidos, se utiliza el
    elemento xslsort
  • Xslsort es un elemento hijo de
    xslapply-templates
  • Acepta dos atributos
  • select que toma como valor el nombre del
    elemento que se va a utilizar como criterio de
    ordenación y
  • order que indica si se debe utilizar un orden
    ascendente o descendente.

25
Orden de procesamiento
  • Para ordenar los contenidos, se utiliza el
    elemento xslsort
  • Xslsort es un elemento hijo de
    xslapply-templates
  • Acepta dos atributos
  • select que toma como valor el nombre del
    elemento que se va a utilizar como criterio de
    ordenación y
  • order que indica si se debe utilizar un orden
    ascendente o descendente.
  • ltxslapply-templates select"//ciudad"gt
  • ltxslsort select"ciudad" order"descending" /gt
  • lt/xslapply-templatesgt
  • En el ejemplo anterior, modificar la xslt para
    que los libros se ordenen por título ascendente

26
Asociar una hoja de estilo a un documento
  • Debemos incluir, tras la declaración XML, la
    siguiente instrucción de procesamiento
  • lt?xml-stylesheet typetext/xsl
    hrefhojaEstilo.xsl?gt
  • Ejemplo
  • lt?xml version1.0?gt
  • lt?xml-stylesheet typetext/xsl
    hrefhttp/www.anaya.es/docs/xml/ejemplo.xsl?gt
  • ltdocumentogt
  • lttitulogtProgramar ASPlt/titulogt
  • ltpaginasgt456lt/paginasgt
  • ltanno-pubgt2001lt/anno-pubgt
  • lt/documentogt

27
Leer y obtener el valor de atributos en XSLT
  • En XSLT podemos filtrar o indicar qué
    instancias de un elemento queremos procesar,
    tomando como criterio de selección el valor de
    los atributos que acompañan a los elementos
  • Para hacer esto, en un elemento xslvalue-of,
    podemos recuperar el valor de un atributo
    mediante la expresión _at_nombreAtributo , por
    ejemplo
  • ltxsltemplate match"vuelo"gt
  • lttrgt
  • lttdgtltxslvalue-of select"_at_numero" /gtlt/tdgt
  • lttdgtltxslvalue-of select"_at_origen" /gtlt/tdgt
  • lttdgtltxslvalue-of select"_at_destino" /gtlt/tdgt
  • lttdgtltxslvalue-of select"_at_hora" /gtlt/tdgt
  • lt/trgt
  • lt/xsltemplategt
  • Ejemplo diseñar una hoja de estilo que convierta
    en una tabla los datos de ejemplares del
    documento prestamoAtributos.xml

28
Ejecución condicional de reglas
  • Para indicar qué instancias de un elemento
    queremos procesar, o realizar una ejecución
    condicional de código, en XSLT disponemos del
    elemento xslif
  • Xslif va acompañado de un atributo test que
    contiene una condición.
  • Si la condición se cumple para el elemento que se
    está procesando, la regla de ejecutará. Por
    ejemplo
  • ltxslif test"_at_destino'JFK'"gt
  • lttrgt
  • lttdgtltxslvalue-of select"_at_numero" /gtlt/tdgt
  • lttdgtltxslvalue-of select"_at_origen" /gtlt/tdgt
  • lttdgtltxslvalue-of select"_at_destino" /gtlt/tdgt
  • lttdgtltxslvalue-of select"_at_hora" /gtlt/tdgt
  • lt/trgt
  • lt/xslifgt

29
Ejecución condicional de reglas xslchoose,
xslwhen y xslotherwise
  • Estos elementos amplían las posibilidades del
    elemento xslif
  • Permiten indicar qué transformación se debe
    realizar en el caso de que se cumpla una
    condición, y en el resto de casos
  • Se utilizan de forma conjunta. El elemento
    xslchoose contendrá a uno o más elementos
    xslwhen y a un elemento xslotherwise.
  • El elemento xslwhen incluye un atributo test que
    tomará como valor la expresión que se evaluará.
    Si se cumple, se ejecutará el código escrito
    entre las etiquetas de inicio y de fin del
    elemento xslwhen.
  • El elemento xslotherwise contendrá el código que
    se ejecutará si no se cumplen las expresiones
    indicadas en los atributos test de los elementos
    xslwhen.

30
Ejecución condicional de reglas xslchoose,
xslwhen y xslotherwise
  • ltxslchoosegt
  • ltxslwhen testexpresióngt
  • .....
  • .....
  • .....
  • lt/xslwhengt
  • ltxslwhen testexpresión2gt
  • .....
  • .....
  • .....
  • lt/xslwhengt
  • ltxslotherwisegt
  • .....
  • .....
  • lt/xslotherwisegt
  • lt/xslchoosegt

31
Ejecución condicional de reglas xslchoose,
xslwhen y xslotherwise
  • ltxslchoosegt
  • ltxslwhen testexpresióngt
  • .....
  • .....
  • .....
  • lt/xslwhengt
  • ltxslwhen testexpresión2gt
  • .....
  • .....
  • .....
  • lt/xslwhengt
  • ltxslotherwisegt
  • .....
  • .....
  • lt/xslotherwisegt
  • lt/xslchoosegt
  • Continuando con el ejemplo anterior, crear una
    hoja de estilo XSLT que muestre en rojo las filas
    de la tabla correspondientes a los libros que no
    se han devuelto aún.

32
Otros elementos xslimport y xslinclude
  • Es posible crear hojas de estilo XSLT modulares,
    es decir, divididas en distintos archivos físicos
  • En la hoja de estilo se incluirán referencias a
    otras hojas de estilo XSLT en las que se incluyen
    el resto de reglas.
  • Para incluir las referencias, se pueden utilizar
    los elementos xslimport y xslinclude
  • Estos dos elementos deben ir acompañados por un
    elemento href que tomará como valor el URL
    absoluto o relativo de la hoja de estilo que se
    quiere utilizar.

33
Otros elementos xslimport y xslinclude
  • Los elementos xslimport se debe incluir justo a
    continuación de la etiqueta de inicio del
    elemento xslstylesheet, y antes de cualquier
    otro elemento.
  • El elemento xslinclude se puede incluir en
    cualquier lugar del documento, siempre que se
    escriba fuera de una regla xsltemplate.

34
Otros elementos xslimport y xslinclude
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxslstylesheet version"1.0" xmlnsxsl"http//ww
    w.w3.org/1999/XSL/Transform"gt
  • ltxsltemplate match"/"gt
  • lthtmlgt
  • ltheadgtlttitlegtEjemplolt/titlegtlt/headgt
  • ltbodygt
  • lth1gtLista de libroslt/h1gt
  • ltxslapply-templates select"//libro"gt
  • ltxslsort select"autor" /gt
  • lt/xslapply-templatesgt
  • lt/bodygt
  • lt/htmlgt
  • lt/xsltemplategt
  • ltxsltemplate match"libro"gt
  • ltpgtltxslvalue-of select"autor" /gt.
  • ltxslvalue-of select"titulo" /gt,
  • ltxslvalue-of select"anno-pub" /gt, ISBN
  • ltxslvalue-of select"isbn" /gtlt/pgt
  • lt/xsltemplategt

35
Otros elementos xslimport y xslinclude
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxslstylesheet version"1.0" xmlnsxsl"http//ww
    w.w3.org/1999/XSL/Transform"gt
  • ltxsltemplate match"/"gt
  • lthtmlgt
  • ltheadgtlttitlegtEjemplolt/titlegtlt/headgt
  • ltbodygt
  • lth1gtLista de libroslt/h1gt
  • ltxslapply-templates select"//libro"gt
  • ltxslsort select"autor" /gt
  • lt/xslapply-templatesgt
  • lt/bodygt
  • lt/htmlgt
  • lt/xsltemplategt
  • lt/xslstylesheetgt

36
Otros elementos xslimport y xslinclude
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxslstylesheet version"1.0" xmlnsxsl"http//ww
    w.w3.org/1999/XSL/Transform"gt
  • ltxsltemplate match"libro"gt
  • ltpgtltxslvalue-of select"autor" /gt.
  • ltxslvalue-of select"titulo" /gt,
  • ltxslvalue-of select"anno-pub" /gt, ISBN
  • ltxslvalue-of select"isbn" /gtlt/pgt
  • lt/xsltemplategt
  • lt/xslstylesheetgt
  • En cualquiera de las dos hojas anteriores se
    podría incluir una referencia a la otra hoja de
    estilo, utilizando la siguiente sintáxis
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxslstylesheet version"1.0" xmlnsxsl"http//ww
    w.w3.org/1999/XSL/Transform"gt
  • ltxslimport hrefhojaEstiloLibro.xsl /gt

37
Otros elementos xslvariable
  • El elemento xslvariable se utiliza para declarar
    una variable
  • Las variables nos permiten realizar operaciones
    con los datos del documento XML para luego
    mostrar el resultado en el documento resultado
  • Es importante señalar que cuando se le asigna un
    valor, éste ya no se puede cambiar
  • Para declarar una variable, se utilizará la
    sintáxis
  • ltxslvariable name"var" select"15" /gt
  • A continuación tenemos un ejemplo

38
Otros elementos xslvariable
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltpedidogt
  • ltclientegt
  • ltnombregtConstrucciones Barcelonalt/nombregt
  • ltdomiciliogtGran Via 45, 2ºlt/domiciliogt
  • ltlocalidadgtBarcelonalt/localidadgt
  • lt/clientegt
  • ltdetallegt
  • ltitemgt
  • ltmaterialgtTornillos-5lt/materialgt
  • ltunidadesgt10000lt/unidadesgt
  • ltpreciogt3lt/preciogt
  • lttotalgt30000lt/totalgt
  • lt/itemgt
  • ltitemgt
  • ltmaterialgtPaletaslt/materialgt
  • ltunidadesgt100lt/unidadesgt
  • ltpreciogt500lt/preciogt
  • lttotalgt50000lt/totalgt

39
Otros elementos xslvariable
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxslstylesheet version"1.0" xmlnsxsl"http//ww
    w.w3.org/1999/XSL/Transform"gt
  • ltxsltemplate match"/"gt
  • lthtmlgt
  • ltheadgtlttitlegtPedidolt/titlegtlt/headgt
  • ltbodygt
  • ltxslapply-templates /gt
  • lt/bodygtlt/htmlgt
  • lt/xsltemplategt
  • ltxsltemplate match"detalle"gt
  • lttable width"85"gt
  • lttrgt
  • ltthgtMateriallt/thgt
  • ltthgtUnidadeslt/thgt
  • ltthgtPreciolt/thgt
  • ltthgtTotal Pts.lt/thgt
  • lt/trgt
  • ltxslfor-each select"item"gt
  • lttrgt

40
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxslstylesheet version"1.0" xmlnsxsl"http//ww
    w.w3.org/1999/XSL/Transform"gt
  • ltxslvariable name"totalPrecio"
    select"sum(//total)" /gt
  • ltxsltemplate match"/"gt
  • lthtmlgt
  • ltheadgtlttitlegtPedidolt/titlegtlt/headgt
  • ltbodygt
  • ltxslapply-templates /gt
  • lt/bodygtlt/htmlgt
  • lt/xsltemplategt
  • ltxsltemplate match"detalle"gt
  • lttable width"85"gt
  • lttrgt
  • ltthgtMateriallt/thgt
  • ltthgtUnidadeslt/thgt
  • ltthgtPreciolt/thgt
  • ltthgtTotal Pts.lt/thgt
  • lt/trgt
  • ltxslfor-each select"item"gt

41
Elemento xslcopy-of
  • Se utiliza para copiar un conjunto de nodos del
    documento origen, al documento resultado de la
    transformación.
  • Se copiarán todos los nodos hijos y los atributos
    (en el caso de los elementos que los tengan).
  • Este elemento es especialmente útil cuando se
    quiere convertir un documento XML a otro
    documento XML con una estructura diferente.
  • El elemento xslcopy-of irá acompañado por un
    atributo select que toma como valor una expresión
    que determinará los nodos que se van a copiar.
  • Este elemento también se puede utilizar para
    copiar en el documento resultado el valor de una
    variable. En este caso, se escribirá como valor
    del atributo select el nombre de la variable
    precedido por el carácter .

42
Ejemplo xslcopy-of
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • lt?xml-stylesheet type"text/xsl"
    href"dlibros3.xsl"?gt
  • ltrepertoriogt
  • ltlibrogt
  • lttitulogtDon Quijote de la Manchalt/titulogt
  • ltautorgtMiguel de Cervanteslt/autorgt
  • ltanno-pubgt1987lt/anno-pubgt
  • ltisbngt84-568-94-3lt/isbngt
  • lt/librogt
  • ltlibrogt
  • lttitulogtLa Galatealt/titulogt
  • ltautorgtMiguel de Cervanteslt/autorgt
  • ltanno-pubgt1989lt/anno-pubgt
  • ltisbngt84-568-9424lt/isbngt
  • lt/librogt
  • ltlibrogt
  • lttitulogtLa Celestinalt/titulogt
  • ltautorgtFernando de Rojaslt/autorgt
  • ltanno-pubgt1998lt/anno-pubgt

43
Ejemplo xslcopy-of
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxslstylesheet version"1.0" xmlnsxsl"http//ww
    w.w3.org/1999/XSL/Transform"gt
  • ltxsloutput method"xml" version"1.0"
    encoding"UTF-8" indent"yes"/gt
  • ltxsltemplate match"/"gt
  • ltrepertoriogt
  • ltxslcopy-of select"//librostarts-with(autor,
    'Miguel de Cervantes')" /gt
  • lt/repertoriogt
  • lt/xsltemplategt
  • lt/xslstylesheetgt

44
Ejemplo xslcopy-of
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltrepertoriogt
  • ltlibrogt
  • lttitulogtDon Quijote de la Manchalt/titulogt
  • ltautorgtMiguel de Cervanteslt/autorgt
  • ltanno-pubgt1987lt/anno-pubgt
  • ltisbngt84-568-94-3lt/isbngt
  • lt/librogt
  • ltlibrogt
  • lttitulogtLa Galatealt/titulogt
  • ltautorgtMiguel de Cervanteslt/autorgt
  • ltanno-pubgt1989lt/anno-pubgt
  • ltisbngt84-568-9424lt/isbngt
  • lt/librogt
  • lt/repertoriogt
  • Utilizando el ejemplo de préstamos, crea una hoja
    de estilo XSLT que extraiga del documento los
    elementos correspondinetes a los préstamos que no
    han sido devueltos

45
Ejemplo xslcopy
  • Similar al elemento anterior, se utiliza para
    copiar elementos, pero no se copiarán sus
    atributos ni sus elementos hijos
  • Cuando se aplica sobre elementos, se copia el
    elemento, pero no su valor...
  • Ejemplo
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxslstylesheet version"1.0" xmlnsxsl"http//ww
    w.w3.org/1999/XSL/Transform"gt
  • ltxsloutput method"xml" version"1.0"
    encoding"UTF-8" indent"yes"/gt
  • ltxsltemplate match"/"gt
  • ltrepertoriogt
  • ltxslapply-templates select"//autor" /gt
  • lt/repertoriogt
  • lt/xsltemplategt
  • ltxsltemplate match"autor"gt
  • ltxslcopy /gt
  • lt/xsltemplategt
  • lt/xslstylesheetgt

46
Ejemplo xslcopy
  • En el ejemplo anterior, se crea un elemento autor
    vacío en el documento destino, para cada elemento
    autor existente en el documento original
  • Para copiar el valor de los elementos autor,
    habría que modificar la XSLT
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxslstylesheet version"1.0" xmlnsxsl"http//ww
    w.w3.org/1999/XSL/Transform"gt
  • ltxsloutput method"xml" version"1.0"
    encoding"UTF-8" indent"yes"/gt
  • ltxsltemplate match"/"gt
  • ltrepertoriogt
  • ltxslapply-templates select"//autor" /gt
  • lt/repertoriogt
  • lt/xsltemplategt
  • ltxsltemplate match"autor"gt
  • ltxslcopygt
  • ltxslvalue-of select. /gt
  • lt/xslcopygt
  • lt/xsltemplategt
  • lt/xslstylesheetgt

47
Elemento xslelement
  • Se utiliza para crear elementos en el documento
    resultado de la transformación.
  • Es especialmente útil cuando se utiliza XSLT para
    transformar un documento XML en otro con una
    estructura diferente.
  • xslelement irá acompañado por un atributo name
    que tomará como valor el nombre del elemento que
    se va a crear.
  • Si el elemento procede de un espacio de nombres,
    el URI que corresponde a este espacio de nombres
    se puede indicar en otro atributo namespace
  • ltxsltemplate matchdiv1gt
  • ltxslelement nameHTMLh1 namespacehttp//www
    .w3.org/HTML-transitional /gt
  • lt/xsltemplategt

48
Elemento xslattribute
  • Permite crear un atributo en el documento
    resultado de la transformación.
  • Irá acompañado por un atributo name, que recogerá
    el nombre del atributo, y opcionalmente por un
    atributo namespace que recogerá el alias del
    espacio de nombres del cual procede el atributo.

49
Elemento xslcomment
  • Este elemento se utilizará para crear un
    comentario en el documento resultado de la
    transformación.
  • El elemento xslcomment contendrá el texto del
    comentario, sin las marcas lt!-- y --gt

50
Elemento xslprocessing-instruction
  • Se utiliza para crear una instrucción de
    procesamiento en el documento resultado de la
    transformación.
  • Debe ir acompañado por un atributo name, que es
    obligatorio, y que toma como valor el nombre de
    la instrucción de procesamiento.
  • Entre sus etiquetas de inicio y de fin se
    escribirán los calificadores de la instrucción de
    procesamiento, entre las marcas ltxsltextgt y
    lt/xsltextgt.
  • Ejemplo
  • El siguiente código crearía una instrucción de
    procesamiento en el documento destino
  • ltxsltemplate match/gt
  • ltxslprocessing-instruction namexml-stylesheet
    gt
  • ltxsltextgttypetext/xsl hrefhojaEstilo.xsllt
    /xsltextgt
  • lt/xslprocessing-instructiongt
  • lt/xsltemplategt

51
Elemento xslprocessing-instruction
  • Se utiliza para crear una instrucción de
    procesamiento en el documento resultado de la
    transformación.
  • Debe ir acompañado por un atributo name, que es
    obligatorio, y que toma como valor el nombre de
    la instrucción de procesamiento.
  • Entre sus etiquetas de inicio y de fin se
    escribirán los calificadores de la instrucción de
    procesamiento, entre las marcas ltxsltextgt y
    lt/xsltextgt.
  • Ejemplo
  • El siguiente código crearía una instrucción de
    procesamiento en el documento destino
  • ltxsltemplate match/gt
  • ltxslprocessing-instruction namexml-stylesheet
    gt
  • ltxsltextgttypetext/xsl hrefhojaEstilo.xsllt
    /xsltextgt
  • lt/xslprocessing-instructiongt
  • lt/xsltemplategt

52
Prácticas XSLT - 1
  • Utilizando el documento prestamos.xml, crear una
    hoja de estilo que muestre un informe con los
    siguientes datos
  • Un cabecera H1 con el título Informe de
    préstamos
  • Para cada lector, un encabezamiento H3 con su
    nombre y apellidos. En una línea aparte, su
    código de lector en cursiva
  • El código de lector irá precedido por el texto
    Número de código del lector
  • A continuación, en una tabla, los libros que el
    lector ha tomado en préstamo. Cada libro en una
    fila aparte, ordenados por título.
  • Las columnas en esta tabla serán título, fecha
    préstamo, y código registro.
  • Tras la tabla, justo antes del nombre del
    siguiente lector, se escribirá una línea
    separadora ltHRgt

53
Prácticas XSLT - 2
  • Utilizando el documento revistas.xml, crear una
    hoja de estilo XSLT que genere un documento HTML
    con la siguiente estructura.
  • Las revistas se ordenarán por su ISSN. El ISSN
    aparecerá precedido por el texto ISSN, con
    estilo H2.
  • Tras el ISSN, utilizando una lista no ordenada
    HTML, se escribirá el título de la revista, el
    título abreviado, el periodo de publicación, y el
    código temático.
  • En la misma lista, pero ésta vez utilizando una
    lista anidada ordenada, se escribirán las
    materias o temas que cubre la revista.
  • Evita que salgan en la lista entradas vacías
Write a Comment
User Comments (0)
About PowerShow.com