
Una vez te has familiarizado con los fundamentos de XML y has explorado el tutorial XSLT, es momento de adentrarse en los ejercicios XSLT. En esta sección, encontrarás una serie de prácticas resueltas y ejemplos de exámenes que te ayudarán a consolidar tus conocimientos en Transformaciones de XML con XSLT. Además de prepararte para un examen de Lenguaje de Marcas y Sistemas de Gestión de la Información.
1. Ejercicios XSLT: prácticas resueltas
Con este conjunto de ejercicios XSLT prácticos resueltos podrás poner en práctica tus habilidades en XSD y comprobar si un archivo XML cumple las reglas definidas en XML Schema.
1.1. Ejercicio XSLT resuelto: Listar empleados
Dado un archivo XML que contiene información sobre empleados, se desea realizar una transformación XSLT para generar una lista ordenada de empleados con sus respectivos nombres y salarios. La lista debe estar ordenada por salario de forma descendente.
Archivo XML:
<empleados>
<empleado>
<nombre>John Doe</nombre>
<salario>5000</salario>
</empleado>
<empleado>
<nombre>Jane Smith</nombre>
<salario>7000</salario>
</empleado>
<empleado>
<nombre>Mike Johnson</nombre>
<salario>4000</salario>
</empleado>
</empleados>
Archivo XSL:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Lista de Empleados</title>
</head>
<body>
<h1>Lista de Empleados</h1>
<xsl:apply-templates select="//empleado">
<xsl:sort select="salario" order="descending" />
</xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="empleado">
<p>
<strong>Nombre: </strong><xsl:value-of select="nombre" /><br />
<strong>Salario: </strong><xsl:value-of select="salario" />
</p>
</xsl:template>
</xsl:stylesheet>
Salida:
<html>
<head>
<title>Lista de Empleados</title>
</head>
<body>
<h1>Lista de Empleados</h1>
<p>
<strong>Nombre: </strong>Jane Smith<br/>
<strong>Salario: </strong>7000</p>
<p>
<strong>Nombre: </strong>John Doe<br/>
<strong>Salario: </strong>5000</p>
<p>
<strong>Nombre: </strong>Mike Johnson<br/>
<strong>Salario: </strong>4000</p>
</body>
</html>
1.2. Ejercicio XSLT resuelto: Informe de ventas
Se cuenta con un archivo XML que contiene información sobre ventas de productos por categoría. Se desea realizar una transformación XSLT para generar un informe que muestre las ventas totales por categoría, incluyendo el nombre de la categoría y el número total de ventas.
Archivo XML:
<ventas>
<categoria>
<nombre>Electrónica</nombre>
<venta>1500</venta>
</categoria>
<categoria>
<nombre>Ropa</nombre>
<venta>800</venta>
</categoria>
<categoria>
<nombre>Libros</nombre>
<venta>1200</venta>
</categoria>
</ventas>
Archivo XSL:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Informe de Ventas por Categoría</title>
</head>
<body>
<h1>Informe de Ventas por Categoría</h1>
<table>
<tr>
<th>Categoría</th>
<th>Ventas Totales</th>
</tr>
<xsl:for-each select="//categoria">
<xsl:sort select="nombre" />
<tr>
<td><xsl:value-of select="nombre" /></td>
<td><xsl:value-of select="venta" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Salida:
<html>
<head>
<title>Informe de Ventas por Categoría</title>
</head>
<body>
<h1>Informe de Ventas por Categoría</h1>
<table>
<tr>
<th>Categoría</th>
<th>Ventas Totales</th>
</tr>
<tr>
<td>Electrónica</td>
<td>1500</td>
</tr>
<tr>
<td>Libros</td>
<td>1200</td>
</tr>
<tr>
<td>Ropa</td>
<td>800</td>
</tr>
</table>
</body>
</html>
1.3. Ejercicio XSLT resuelto: Generar catálogo de productos
Se cuenta con un archivo XML que contiene información sobre un catálogo de productos. Cada producto tiene un nombre, una descripción y un precio. Se desea realizar una transformación XSLT para generar un catálogo HTML que muestre todos los productos con su respectiva información.
Archivo XML:
<catalogo>
<producto>
<nombre>Producto 1</nombre>
<descripcion>Descripción del producto 1</descripcion>
<precio>10.99</precio>
</producto>
<producto>
<nombre>Producto 2</nombre>
<descripcion>Descripción del producto 2</descripcion>
<precio>15.99</precio>
</producto>
<producto>
<nombre>Producto 3</nombre>
<descripcion>Descripción del producto 3</descripcion>
<precio>20.99</precio>
</producto>
</catalogo>
Archivo XSL:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Catálogo de Productos</title>
</head>
<body>
<h1>Catálogo de Productos</h1>
<xsl:apply-templates select="//producto" />
</body>
</html>
</xsl:template>
<xsl:template match="producto">
<div class="producto">
<h2><xsl:value-of select="nombre" /></h2>
<p><xsl:value-of select="descripcion" /></p>
<p>Precio: <xsl:value-of select="precio" /></p>
</div>
</xsl:template>
</xsl:stylesheet>
Salida:
<html>
<head>
<title>Catálogo de Productos</title>
</head>
<body>
<h1>Catálogo de Productos</h1>
<div class="producto">
<h2>Producto 1</h2>
<p>Descripción del producto 1</p>
<p>Precio: 10.99</p>
</div>
<div class="producto">
<h2>Producto 2</h2>
<p>Descripción del producto 2</p>
<p>Precio: 15.99</p>
</div>
<div class="producto">
<h2>Producto 3</h2>
<p>Descripción del producto 3</p>
<p>Precio: 20.99</p>
</div>
</body>
</html>
2. Ejercicios XSLT: exámenes de ejemplo
2.1. Examen XSLT: Catálogo de videojuegos vintage
Se te proporciona un archivo XML con información sobre videojuegos vintage. Cada videojuego tiene un nombre, una descripción y una plataforma. Crea una transformación XSLT para generar un catálogo HTML que muestre todos los videojuegos con su respectiva información.
XML:
<?xml version="1.0" encoding="UTF-8"?>
<video_games>
<game>
<name>Pac-Man</name>
<description>A classic maze game where the player controls a yellow character that must eat dots while avoiding ghosts.</description>
<platform>Arcade</platform>
</game>
<game>
<name>Space Invaders</name>
<description>An iconic shooting game where the player controls a spaceship defending against alien invaders.</description>
<platform>Arcade</platform>
</game>
<game>
<name>Super Mario Bros</name>
<description>The famous platformer where Mario must rescue Princess Peach from Bowser, facing various enemies and obstacles.</description>
<platform>Nintendo Entertainment System (NES)</platform>
</game>
<game>
<name>Tetris</name>
<description>An addictive puzzle game where the player must fit falling geometric pieces together.</description>
<platform>Various</platform>
</game>
</video_games>
Salida esperada:
<html>
<head>
<title>Catalog of Vintage Video Games</title>
</head>
<body>
<h1>Catalog of Vintage Video Games</h1>
<div class="game">
<h2>Pac-Man</h2>
<p>A classic maze game where the player controls a yellow character that must eat dots while avoiding ghosts.</p>
<p>Platform: Arcade</p>
</div>
<div class="game">
<h2>Space Invaders</h2>
<p>An iconic shooting game where the player controls a spaceship defending against alien invaders.</p>
<p>Platform: Arcade</p>
</div>
<div class="game">
<h2>Super Mario Bros</h2>
<p>The famous platformer where Mario must rescue Princess Peach from Bowser, facing various enemies and obstacles.</p>
<p>Platform: Nintendo Entertainment System (NES)</p>
</div>
<div class="game">
<h2>Tetris</h2>
<p>An addictive puzzle game where the player must fit falling geometric pieces together.</p>
<p>Platform: Various</p>
</div>
</body>
</html>
2.2. Examen XSLT: Catálogo de hobbies
Se te proporciona un archivo XML con información sobre varios hobbies. Cada hobby incluye un nombre, una descripción, un nivel de popularidad y opcionalmente un nivel de dificultad. Tu tarea es crear una transformación XSLT para generar un catálogo HTML que muestre todos los pasatiempos con su respectiva información.
XML:
<?xml version="1.0" encoding="UTF-8"?>
<hobbies>
<hobby difficulty="Moderate">
<name>Photography</name>
<description>Capturing moments through the lens of a camera, exploring the art of visual storytelling.</description>
<popularity>High</popularity>
</hobby>
<hobby difficulty="Easy">
<name>Gardening</name>
<description>Cultivating plants and creating a beautiful outdoor space for relaxation and enjoyment.</description>
<popularity>Moderate</popularity>
</hobby>
<hobby difficulty="Moderate">
<name>Board Games</name>
<description>Engaging in strategic and social tabletop games with friends and family.</description>
<popularity>High</popularity>
</hobby>
<hobby>
<name>Reading</name>
<description>Exploring imaginary worlds through books, a relaxing and enriching pastime.</description>
<popularity>Moderate</popularity>
</hobby>
<hobby difficulty="Difficult">
<name>Hiking</name>
<description>Exploring nature trails, enjoying outdoor adventures, and staying active.</description>
<popularity>High</popularity>
</hobby>
</hobbies>
Salida esperada:
<html>
<head>
<title>Catalog of Hobbies</title>
</head>
<body>
<h1>Catalog of Hobbies</h1>
<div class="hobby">
<h2>Photography</h2>
<p>Capturing moments through the lens of a camera, exploring the art of visual storytelling.</p>
<p>Popularity: High</p>
<p>Difficulty: Moderate</p>
</div>
<div class="hobby">
<h2>Gardening</h2>
<p>Cultivating plants and creating a beautiful outdoor space for relaxation and enjoyment.</p>
<p>Popularity: Moderate</p>
<p>Difficulty: Easy</p>
</div>
<div class="hobby">
<h2>Board Games</h2>
<p>Engaging in strategic and social tabletop games with friends and family.</p>
<p>Popularity: High</p>
<p>Difficulty: Moderate</p>
</div>
<div class="hobby">
<h2>Reading</h2>
<p>Exploring imaginary worlds through books, a relaxing and enriching pastime.</p>
<p>Popularity: Moderate</p>
</div>
<div class="hobby">
<h2>Hiking</h2>
<p>Exploring nature trails, enjoying outdoor adventures, and staying active.</p>
<p>Popularity: High</p>
<p>Difficulty: Difficult</p>
</div>
</body>
</html>
Esperamos que estos ejercicios XSLT te hayan resultado útiles para crear transformaciones y estilos personalizados para tus documentos XML. Te recordamos que este tutorial se incluye dentro de un paquete de tutoriales en los que exploramos diversos aspectos del lenguaje XML y sus tecnologías asociadas. ¡Continua tu aprendizaje con los tutoriales y cursos disponibles en Eniun!