Publicado el 1 de Agosto del 2019
1.316 visualizaciones desde el 1 de Agosto del 2019
1,9 MB
43 paginas
Creado hace 13a (20/02/2012)
Unidad 4:
XSLT y XPATH
JJ Taboada León
IES San Sebastián, Departamento de Informática
LENGUAJE DE MARCAS Y SGI
Curso 2011 / 2012
Guíon del tema
¿Qué es XSLT?
Aplicación de las
transformaciones
Estructura y sintáxis
XSLT
Elemetos XSLT
XSLT con CSS
EJERCICIOS
Transformar documentos
XML con Notepad++ y
Dreamwaver
Prácticas con XML HTML y
CSS
¿QUÉ ES XSLT?
XSLT (eXtensible Stylesheet Language – Transformations),
Lenguaje de hoja de estilo ampliable para transformaciones
Describe un lenguaje basado en XML para transformar documentos
XML a cualquier otro formato
XSLT es el lenguaje de hojas de estilo recomendado de XML.
XSLT es mucho más sofisticado que el CSS.
XSLT puede ser utilizado para transformar documentos XML en
HTML, antes de ser mostrados en un navegador.
Aplicación de las transformaciones
Utilizaremos XSLT para transformar documentos entre esquemas
XML que permitan su procesamiento por distintos sistemas
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
WML(Wireless Markup Language)
lenguaje que se utiliza para construir las
páginas que aparecen en las pantallas de
los teléfonos móviles y los asistentes
personales digitales (PDA)
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
HERRAMIENTAS
Actualmente contamos con varias herramientas para realizar
transformaciones XSLT:
Saxon, desarrollado en Java por Michael Kay (un gurú de XSLT)
xt, diseñado por James Clark
Dreamweaver
XMLspy
En las prácticas usaremos Notepad++ con el complemento XMLtools y
Dreamwaver
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:
<?xml version="1.0“?>
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.
Estructura de una hoja de estilo XSL
<?xml version="1.0" encoding="ISO-8859-1”?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
...................
...................
</xsl:stylesheet>
Estructura de una hoja de estilo XSL
Entras las marcas de inicio y de fin del elemento raíz
xsl:stylesheet, se escribirán las reglas de transformación que se
llaman plantillas
Cada regla se definirá mediante un elemento xsl:template (una
plantilla)
Se utiliza el atributo match para asociar una plantilla con un
elemento XML. El atributo match también se puede utilizar para
definir un modelo para todo el documento XML. El valor del
atributo match es una expresión de XPath (eje. match = "/"
define todo el documento).
La regla indica qué instancias de los elementos del documento
XML se van a transformar.
Estructura de una hoja de estilo XSL
REGLAS DE TRANSFORMACIÓN
salida
árbol de origen al que se
aplica esta plantilla
<h2> <xsl:value-of select="." /> </h2>
EJEMPLO:
<xsl:template match=”//nombre”>
<html>
<body>
</body>
</html>
</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 transformación XSLT
Documento XML
<nombre>Madrid</nombre>
<habitantes>3500000</habitantes>
<?xml version=“1.0” encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="prueba.xsl" ?>
<ciudades>
<ciudad>
</ciudad>
<ciudad>
</ciudad>
<ciudad>
</ciudad>
</ciudades>
<nombre>Málaga</nombre>
<habitantes>800000</habitantes>
<nombre>Toledo</nombre>
<habitantes>50000</habitantes>
Referencia al
documento XSL
Documento XML
Ejemplo transformación XSLT
Documento XSL
<?xml version="1.0" encoding="ISO-8859-1”?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Documento XSL
Queremos obtener los
nombres de las ciudades
<xsl:template match=“//nombre">
<h2> <xsl:value-of select="." /> </h2>
<html>
<body>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Ejemplo transformación XSLT
Resultado
<h2>Madrid</h2>3500000
<h2>Málaga</h2>800000
<h2>Toledo</h2>50000
El resultado obtenido no es el documento HTML esperado
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):
Ejemplo transformación XSLT
Documento xsl mejorado
<title>Ejemplo XSLT</title>
<html>
<head>
</head>
<body>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
</xsl:template>
<xsl:template match="nombre">
</xsl:template>
</xsl:stylesheet>
<h1> CIUDADES DE ESPAÑA </h1>
<xsl:apply-templates select="//nombre" />
<h3> <xsl:value-of select="." /> </h3>
</body>
</html>
La regla “de inicio”
La regla <xsl:template match=“/”> 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:
<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
La regla “de inicio”
El resultado de la transformación es el siguiente:
<title>Ejemplo XSLT</title>
<html>
<head>
</head>
<body>
<h1> CIUDADES DE ESPAÑA </h1
</body>
</html>
<h3>Madrid</h3>
<h3>Málaga</h3>
<h3>Toledo</h3>
Ejemplos
simple.xml
<?xml version=“1.0” encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href=“simple.xsl" ?>
<simple>
<nombre> Álvarez Martín Almudena </nombre>
<nombre> Aragon Batista Joaquin </nombre>
<nombre> Chavarri Satalaya Jordan </nombre>
<nombre> Cruz Florencio Victor </nombre>
<nombre> Del Toro del Toro Moisés </nombre>
<nombre> Díaz Redondo Raul </nombre>
</simple>
Simple.xsl
<title>Ejemplo XSLT simple</title>
<html>
<head>
</head>
<body>
<xsl:apply-templates />
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
</xsl:template>
<xsl:template match="nombre">
</xsl:template>
</xsl:stylesheet>
<p> Nombre encontrado</p>
</body>
</html>
Actividades
1. Con Notepad++ escribir cada uno de los ejemplos anteriores y
hacer todas las pruebas que se os ocurran.
2. Con Notepad++, crear una primera hoja de estilo XSLT que, a
partir del documento XML tienda1.xml, extraiga en un documento
HTML los artículos de la tienda
3. Formatear la lista de artículos para que se presente como una lista no
ordenada (sin numerar), de HTML
4. Cambiar la hoja de estilo XSLT para que los artículos se presenten en
una tabla con una única columna
5. Cambiar la hoja de estilo para que los artículos se presenten en una
tabla con dos columnas. En la primera de ellas se escribirá un texto
fijo: “ARTICULOS DE MI TIENDA”
6. Aplicar esta última hoja de estilo al documentos XML
tiendecilla.xml
El elemento <xsl:value-of...> (I)
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 artículo, la marca y el
modelo de cada producto.
Esto es posible porque en el atributo select podemos utilizar una
“expresión XPATH”
XPATH es un lenguaje que nos permite direccinarnos a las secciones
de un documento XML y obtener las partes de la información que
deseamos (nodo de contexto)
El elemento <xsl:value-of...> (II)
Por ejemplo, para mostrar el valor del elemento articulo, que es un
hijo del elemento producto, podríamos utilizar la siguiente regla:
<xsl:template match="//producto">
</xsl:template>
<xsl:value-of select="./articulo" />
El valor del atributo select se puede leer de la siguiente forma: “dame
el valor del elemento articulo que es hijo del elemento que estoy
procesan
Comentarios de: Unidad 4: XSLT y XPATH (0)
No hay comentarios