PDF de programación - Transformación de documentos XML con XSLT

Imágen de pdf Transformación de documentos XML con XSLT

Transformación de documentos XML con XSLTgráfica de visualizaciones

Publicado el 4 de Mayo del 2021
77 visualizaciones desde el 4 de Mayo del 2021
258,0 KB
8 paginas
Creado hace 9a (02/03/2012)
Transformación de documentos XML con XSLT


Universidad de Sevilla

Transformación de documentos XML con
XSLT

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

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

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.

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

• Xalan un proyecto XML de Apache

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 que deben comenzar con una declaración XML:

<?xml version="1.0“?>
El elemento raíz de la hoja de estilo XSLT es stylesheet. 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. 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 que debe
“apuntar” a la URL: http://www.w3.org/1999/XSL/Transform De esta forma, el elemento raíz quedará así:


Adaptado por JL Comesaña



- 1 -

Transformación de documentos XML con XSLT


Universidad de Sevilla

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
....................
</xsl:stylesheet>
Entre las marcas de inicio y de fin del elemento raíz xsl:stylesheet, se escribirán las reglas de transformación
propiamente dichas definidas mediante un elemento xsl:template. La regla indica qué instancias de los
elementos del documento XML se van a transformar, así como también indicará cómo se deben
transformar cada una de ellas.

EJEMPLO:
<xsl:template match=”//nombre”>
<h2>
<xsl:value-of select=”.” />
</h2>
</xsl:template>
La regla se aplicará a todas las instancias del elemento nombre. Esto se indica mediante el atributo match
que acompaña al elemento xsl:template. Entre las etiquetas de inicio y de fin del elemento xsl:template 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 <xsl:value-of...>, se recupera y escribe en el documento resultado el valor del elemento que está
siendo procesado.

Ejemplo de transformación XSLT
documento.xml

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


documento.xsl

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



Adaptado por JL Comesaña



- 2 -

Transformación de documentos XML con XSLT

 La regla <xsl:template match=“/”> se ejecuta cuando se encuentra el elemento raíz del documento

Universidad de Sevilla

XML

 Dentro de esta regla, podemos incluir llamadas a otras reglas definidas en la hoja de estilo, mediante el

elemento:

<xsl:apply-templates select=”…” />
 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

Resultado de la transformación:

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


Ejercicio propuesto:
1. 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

2. Formatear la lista de títulos para que se presente como una lista no ordenada (sin numerar), de HTML
3. Cambiar la hoja de estilo XSLT para que los títulos se presenten en una tabla con una única columna
4. 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”



El elemento <xsl:value-of...>
En el elemento <xsl:value-of…> 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 xsl:value-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”. Por ejemplo, para
mostrar el valor del elemento titulo, que es un hijo del elemento ejemplar, podríamos utilizar la siguiente
regla:

<xsl:template match="//ejemplar">
<xsl:value-of select="./titulo" />
</xsl:template>
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 ./
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ñadirán al documento resultado de la transformación.

Adaptado por JL Comesaña



- 3 -

Transformación de documentos XML con XSLT

 Elementos reservados de la especificación XSLT que realizarán una acción como recuperar el valor de

Universidad de Sevilla

un elemento, ordenar los resultados, llamar a otras reglas de la hoja de estilo, etc.

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.

Para ordenar los contenidos, se utiliza el elemento xsl:sort que es un elemento hijo de xsl:apply-
templates
Acepta dos atributos:

 select – que toma como valor el nombre del elemento que se va a utilizar como criterio de ordenación
 order – que indica si se debe utilizar un orden ascendente o descendente.
<xsl:apply-templates select="//ciudad">
<xsl:sort select="ciudad" order="descending" />
</xsl:apply-templates>


Asociar una hoja de estilo a un documento
Debemos incluir, tras la declaración XML, la siguiente instrucción de procesamiento:

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

Ejemplo
<?xml version=”1.0”?>
<?xml-stylesheet type=”text/xsl” href=”http:/www.anaya.es/docs/xml/ejemplo.xsl”?>
<documento>
<titulo>Programar ASP</titulo>
<paginas>456</paginas>
<anno-pub>2001</anno-pub>
</documento>

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 xsl:value-of, podemos recuperar el valor de un atributo mediante la
expresión @nombreAtributo , por ejemplo
  • Links de descarga
http://lwp-l.com/pdf19159

Comentarios de: Transformación de documentos XML con XSLT (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad