Dado un archivo XML que contiene una lista de personas con sus nombres y edades, crea un documento HTML que liste los nombres de las personas en una lista ordenada (<ol>).
<?xml version="1.0" encoding="UTF-8"?>
<personas>
<persona>
<nombre>Juan Pérez</nombre>
<edad>30</edad>
</persona>
<persona>
<nombre>Maria López</nombre>
<edad>25</edad>
</persona>
<persona>
<nombre>Jesus Cristo García</nombre>
<edad>33</edad>
</persona>
<persona>
<nombre>Pepe Botica</nombre>
<edad>27</edad>
</persona>
</personas>
<?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>
<body>
<h2>Lista de Personas</h2>
<ol>
<xsl:for-each select="personas/persona">
<li><xsl:value-of select="nombre"/></li>
</xsl:for-each>
</ol>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Dado un archivo XML con una lista de empleados que incluye su ID, nombre y departamento, crea un documento HTML que muestre estos datos en una tabla.
<?xml version="1.0" encoding="UTF-8"?>
<empleados>
<empleado>
<id>1</id>
<nombre>Juan Pérez</nombre>
<departamento>Recursos Humanos</departamento>
</empleado>
<empleado>
<id>2</id>
<nombre>Maria López</nombre>
<departamento>Finanzas</departamento>
</empleado>
<empleado>
<id>3</id>
<nombre>Juan Jose Morgaño</nombre>
<departamento>Mantenimiento</departamento>
</empleado>
<empleado>
<id>4</id>
<nombre>Maria Conde</nombre>
<departamento>Ventas</departamento>
</empleado>
</empleados>
<?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>
<body>
<h2>Lista de Empleados</h2>
<table border="1">
<tr>
<th>ID</th>
<th>Nombre</th>
<th>Departamento</th>
</tr>
<xsl:for-each select="empleados/empleado">
<tr>
<td><xsl:value-of select="id"/></td>
<td><xsl:value-of select="nombre"/></td>
<td><xsl:value-of select="departamento"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Dado un archivo XML que lista varios productos, cada uno con un id, nombre, y precio, crea un documento HTML que muestre esta información en una tabla.
<?xml version="1.0" encoding="UTF-8"?>
<productos>
<producto>
<id>1</id>
<nombre>Cafetera</nombre>
<precio>120.00</precio>
</producto>
<producto>
<id>2</id>
<nombre>Tostadora</nombre>
<precio>35.50</precio>
</producto>
<producto>
<id>3</id>
<nombre>Airfryer</nombre>
<precio>256</precio>
</producto>
<producto>
<id>4</id>
<nombre>Thermomix</nombre>
<precio>1200</precio>
</producto>
</productos>
<?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>
<body>
<h2>Lista de Productos</h2>
<table border="1">
<tr>
<th>ID</th>
<th>Nombre</th>
<th>Precio</th>
</tr>
<xsl:for-each select="productos/producto">
<tr>
<td><xsl:value-of select="id"/></td>
<td><xsl:value-of select="nombre"/></td>
<td><xsl:value-of select="precio"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Transforma un archivo XML de contactos, donde cada contacto tiene nombre, email y teléfono, en una tabla HTML.
<?xml version="1.0" encoding="UTF-8"?>
<contactos>
<contacto>
<nombre>Juan Pérez</nombre>
<email>juanperez@example.com</email>
<telefono>123456789</telefono>
</contacto>
<contacto>
<nombre>Maria López</nombre>
<email>marialopez@example.com</email>
<telefono>987654321</telefono>
</contacto>
</contactos>
<?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>
<body>
<h2>Contactos</h2>
<table border="1">
<tr>
<th>Nombre</th>
<th>Email</th>
<th>Teléfono</th>
</tr>
<xsl:for-each select="contactos/contacto">
<tr>
<td><xsl:value-of select="nombre"/></td>
<td><xsl:value-of select="email"/></td>
<td><xsl:value-of select="telefono"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Dado un archivo XML con una lista de libros y sus respectivos géneros y precios, crea un documento HTML que agrupe los libros por género en secciones distintas y ordene los libros dentro de cada género por precio (de menor a mayor).
<?xml version="1.0" encoding="UTF-8"?>
<libreria>
<libro>
<titulo>El Señor de los Anillos</titulo>
<genero>Fantasía</genero>
<precio>22.50</precio>
</libro>
<libro>
<titulo>Fundación</titulo>
<genero>Ciencia Ficción</genero>
<precio>17.80</precio>
</libro>
<libro>
<titulo>El Hobbit</titulo>
<genero>Fantasía</genero>
<precio>15.20</precio>
</libro>
</libreria>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/libreria">
<html>
<body>
<h2>Libros por Género</h2>
<!-- Para cada género, necesitarías repetir este proceso manualmente -->
<h3>Fantasía</h3>
<ul>
<xsl:for-each select="libro[genero='Fantasía']">
<xsl:sort select="precio" data-type="number" order="ascending"/>
<li><xsl:value-of select="titulo"/> - $<xsl:value-of select="precio"/></li>
</xsl:for-each>
</ul>
<h3>Ciencia Ficción</h3>
<ul>
<xsl:for-each select="libro[genero='Ciencia Ficción']">
<xsl:sort select="precio" data-type="number" order="ascending"/>
<li><xsl:value-of select="titulo"/> - $<xsl:value-of select="precio"/></li>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Transforma el archivo XML de empleados en una tabla HTML que agrupe a los empleados por departamento.
<?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>
<body>
<h2>Lista de Empleados por Departamento</h2>
<!-- Repetir para cada departamento conocido -->
<h3>Recursos Humanos</h3>
<table border="1">
<tr>
<th>ID</th>
<th>Nombre</th>
</tr>
<xsl:for-each select="empleados/empleado[departamento='Recursos Humanos']">
<tr>
<td><xsl:value-of select="id"/></td>
<td><xsl:value-of select="nombre"/></td>
</tr>
</xsl:for-each>
</table>
<!-- Repetir bloques similares para otros departamentos -->
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<?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>
<body>
<h2>Lista de Empleados por Departamento</h2>
<!-- Repetir para cada departamento conocido -->
<h3>Recursos Humanos</h3>
<table border="1">
<tr>
<th>ID</th>
<th>Nombre</th>
</tr>
<xsl:for-each select="empleados/empleado[departamento='Recursos Humanos']">
<tr>
<td><xsl:value-of select="id"/></td>
<td><xsl:value-of select="nombre"/></td>
</tr>
</xsl:for-each>
</table>
<!-- Repetir bloques similares para otros departamentos -->
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Dado un archivo XML que contiene una lista de personas con sus nombres y edades, crea un documento HTML que liste los nombres de las personas en una lista ordenada (<ol>) pero solo aquellos que la edad sea mayor que 27.
<?xml version="1.0" encoding="UTF-8"?>
<personas>
<persona>
<nombre>Juan Pérez</nombre>
<edad>30</edad>
</persona>
<persona>
<nombre>Maria López</nombre>
<edad>25</edad>
</persona>
<persona>
<nombre>Jesus Cristo García</nombre>
<edad>33</edad>
</persona>
<persona>
<nombre>Pepe Botica</nombre>
<edad>27</edad>
</persona>
</personas>
<?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>
<body>
<h2>Personas Mayores de 25 Años</h2>
<ol>
<xsl:for-each select="personas/persona[edad > 25]">
<li><xsl:value-of select="nombre"/></li>
</xsl:for-each>
</ol>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Dado un archivo XML que contiene una lista de productos, cada uno con un nombre, precio y un atributo disponible (que puede ser "sí" o "no"), genera un documento HTML que liste solo los productos disponibles.
<?xml version="1.0" encoding="UTF-8"?>
<productos>
<producto disponible="si">
<id>1</id>
<nombre>Cafetera</nombre>
<precio>120.00</precio>
</producto>
<producto disponible="no">
<id>2</id>
<nombre>Tostadora</nombre>
<precio>35.50</precio>
</producto>
<producto disponible="si">
<id>3</id>
<nombre>Airfryer</nombre>
<precio>256</precio>
</producto>
<producto disponible="si">
<id>4</id>
<nombre>Thermomix</nombre>
<precio>1200</precio>
</producto>
</productos>
<?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>
<body>
<h2>Productos Disponibles</h2>
<ul>
<xsl:for-each select="productos/producto">
<xsl:if test="@disponible='sí'">
<li>
<xsl:value-of select="nombre"/> -
<xsl:value-of select="precio"/>
</li>
</xsl:if>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Transforma un XML de libros donde cada libro tiene un título, autor y un elemento leído (con valores "sí" o "no") en una lista HTML que clasifique los libros en "Leídos" o "Por leer".
<libros>
<libro leido="sí">
<titulo>El Señor de los Anillos</titulo>
<autor>J.R.R. Tolkien</autor>
</libro>
<libro leido="no">
<titulo>Fundación</titulo>
<autor>Isaac Asimov</autor>
</libro>
<libro leido="si">
<titulo>El príncipe</titulo>
<autor>Nicolas Maquiavelo</autor>
</libro>
<libro leido="no">
<titulo>Viaje al oeste, las aventuras del rey mono</titulo>
<autor>Anónimo</autor>
</libro>
</libros>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Libros Leídos</h2>
<ul>
<xsl:for-each select="libros/libro[@leido='sí']">
<li><xsl:value-of select="titulo"/> por <xsl:value-of select="autor"/></li>
</xsl:for-each>
</ul>
<h2>Libros Por Leer</h2>
<ul>
<xsl:for-each select="libros/libro[@leido='no']">
<li><xsl:value-of select="titulo"/> por <xsl:value-of select="autor"/></li>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>