Se ofrecen a continuación unas posibles soluciones de los ejercicios XSLT (1). Estos ejercicios se pueden resolver de varias maneras.
Sin etiquetas:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="ciclo">
<xsl:value-of select="nombre"/>
</xsl:template>
</xsl:stylesheet>
Párrafos:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="ciclos">
<html>
<xsl:apply-templates />
</html>
</xsl:template>
<xsl:template match="ciclo">
<p><xsl:value-of select="nombre"/></p>
</xsl:template>
</xsl:stylesheet>
Lista:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="ciclos">
<html>
<ul>
<xsl:apply-templates />
</ul>
</html>
</xsl:template>
<xsl:template match="ciclo">
<li><xsl:value-of select="nombre"/></li>
</xsl:template>
</xsl:stylesheet>
Tabla:
En XML Copy editor, la siguiente hoja de estilo genera un resultado correcto, pero con un formato distinto al del enunciado (saltos de línea y espacios).
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="ciclos">
<html>
<table border="1">
<xsl:apply-templates />
</table>
</html>
</xsl:template>
<xsl:template match="ciclo">
<tr>
<td><xsl:value-of select="nombre"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<html>
<table border="1">
<tr><td>Administración de Sistemas Informáticos en Red</td></tr>
<tr><td>Desarrollo de Aplicaciones Web</td></tr>
<tr><td>Sistemas Microinformáticos y Redes</td></tr>
</table>
</html>
Para que el formato fuera como en el enunciado, bastaría con añadir la instrucción <xsl:strip-space>:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:strip-space elements="*" />
<xsl:template match="ciclos">
<html>
<table border="1">
<xsl:apply-templates />
</table>
</html>
</xsl:template>
<xsl:template match="ciclo">
<tr>
<td><xsl:value-of select="nombre"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<html>
<table border="1">
<tr>
<td>Administración de Sistemas Informáticos en Red</td>
</tr>
<tr>
<td>Desarrollo de Aplicaciones Web</td>
</tr>
<tr>
<td>Sistemas Microinformáticos y Redes</td>
</tr>
</table>
</html>
En Notepad++ con XML Tools, la siguiente hoja de estilo genera un resultado correcto, pero con un formato distinto al del enunciado (saltos de línea y espacios).
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="ciclos">
<html>
<table border="1">
<xsl:apply-templates />
</table>
</html>
</xsl:template>
<xsl:template match="ciclo">
<tr>
<td><xsl:value-of select="nombre"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
<html><table border="1">
<tr><td>Administración de Sistemas Informáticos en Red</td></tr>
<tr><td>Desarrollo de Aplicaciones Web</td></tr>
<tr><td>Sistemas Microinformáticos y Redes</td></tr>
</table></html>
Para que el formato fuera como en el enunciado, habría que añadir instrucciones<xsl:text> en los sitios necesarios:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="ciclos">
<html>
<xsl:text> </xsl:text>
<table border="1">
<xsl:apply-templates />
</table>
</html>
</xsl:template>
<xsl:template match="ciclo">
<tr>
<xsl:text> </xsl:text>
<td><xsl:value-of select="nombre"/></td>
<xsl:text> </xsl:text>
</tr>
</xsl:template>
</xsl:stylesheet>
<html>
<table border="1">
<tr>
<td>Administración de Sistemas Informáticos en Red</td>
</tr>
<tr>
<td>Desarrollo de Aplicaciones Web</td>
</tr>
<tr>
<td>Sistemas Microinformáticos y Redes</td>
</tr>
</table>
</html>
Párrafos:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:strip-space elements="*" />
<xsl:template match="ies">
<html>
<h1><xsl:value-of select="@nombre" /></h1>
<xsl:apply-templates />
</html>
</xsl:template>
<xsl:template match="ciclo">
<p><xsl:value-of select="nombre" /></p>
</xsl:template>
</xsl:stylesheet>
Una solución un poco más complicada, pero que da el mismo resultado que la anterior, podría ser la siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:strip-space elements="*" />
<xsl:template match="/">
<html>
<xsl:apply-templates />
</html>
</xsl:template>
<xsl:template match="ies">
<h1><xsl:value-of select="@nombre" /></h1>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="ciclo">
<p><xsl:value-of select="nombre" /></p>
</xsl:template>
</xsl:stylesheet>
Para arreglar el formato, habría que eliminar las líneas en blanco de la misma manera.
Lista:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:strip-space elements="*" />
<xsl:template match="ies">
<html>
<h1><xsl:value-of select="@nombre" /></h1>
<p>Página web: <a >
<xsl:attribute name="href">
<xsl:value-of select="@web" />
</xsl:attribute>
<xsl:value-of select="@web" /></a></p>
<ul>
<xsl:apply-templates />
</ul>
</html>
</xsl:template>
<xsl:template match="ciclo">
<li><xsl:value-of select="nombre"/></li>
</xsl:template>
</xsl:stylesheet>
Tabla:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:strip-space elements="*" />
<xsl:template match="ies">
<html>
<h1><xsl:value-of select="@nombre" /></h1>
<p>Página web: <a >
<xsl:attribute name="href">
<xsl:value-of select="@web" />
</xsl:attribute>
<xsl:value-of select="@web" /></a></p>
<table border="1">
<tr>
<th>Nombre del ciclo</th>
<th>Grado</th>
<th>Año del título</th>
</tr>
<xsl:apply-templates />
</table>
</html>
</xsl:template>
<xsl:template match="ciclo">
<tr>
<td><xsl:value-of select="nombre"/></td>
<td><xsl:value-of select="grado"/></td>
<td><xsl:value-of select="decretoTitulo/@año"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
Párrafos:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:strip-space elements="*" />
<xsl:template match="ies">
<html>
<xsl:apply-templates />
</html>
</xsl:template>
<xsl:template match="nombre">
<h1><xsl:value-of select="." /></h1>
</xsl:template>
<xsl:template match="web">
</xsl:template>
<xsl:template match="ciclo">
<p><xsl:value-of select="nombre" /></p>
</xsl:template>
</xsl:stylesheet>
Lista:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:strip-space elements="*" />
<xsl:template match="ies">
<html>
<xsl:apply-templates />
</html>
</xsl:template>
<xsl:template match="nombre">
<h1>Ciclos formativos del <xsl:value-of select="." /></h1>
</xsl:template>
<xsl:template match="web">
</xsl:template>
<xsl:template match="ciclos">
<ul>
<xsl:apply-templates />
</ul>
</xsl:template>
<xsl:template match="ciclo">
<li><xsl:value-of select="@id" /><br />
<xsl:value-of select="nombre" />, Ciclo Formativo de Grado <xsl:value-of select="grado" />
creado en <xsl:value-of select="decretoTitulo/@año" /></li>
</xsl:template>
</xsl:stylesheet>
Tabla:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:strip-space elements="*" />
<xsl:template match="ies">
<html>
<xsl:apply-templates />
</html>
</xsl:template>
<xsl:template match="nombre">
<h1><xsl:value-of select="." /></h1>
</xsl:template>
<xsl:template match="web">
</xsl:template>
<xsl:template match="ciclos">
<table border="1">
<tr>
<th>Nombre del ciclo</th>
<th>Grado</th>
<th>Año del título</th>
</tr>
<xsl:apply-templates />
</table>
</xsl:template>
<xsl:template match="ciclo">
<tr>
<td><xsl:value-of select="nombre"/></td>
<td><xsl:value-of select="grado"/></td>
<td><xsl:value-of select="decretoTitulo/@año"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>