Escenario ciclos de informática con XSLT
Ir a la navegación
Ir a la búsqueda
Sumario
Enunciado
XML orixinal:
<cifp nome="CIFP Rodolfo Ucha" web="https://www.cifprodolfoucha.es/" >
<ciclos>
<ciclo id="ASIR">
<nome>Administración de Sistemas Informáticos en Rede</nome>
<grao>Superior</grao>
<decretoTitulo ano="2009" />
</ciclo>
<ciclo id="DAW">
<nome>Desarrollo de Aplicaciones Web</nome>
<grao>Superior</grao>
<decretoTitulo ano="2010" />
</ciclo>
<ciclo id="DAM">
<nome>Desenvolvemento de Aplicacións Multiplataforma</nome>
<grao>Superior</grao>
<decretoTitulo ano="2010" />
</ciclo>
<ciclo id="SMR">
<nome>Sistemas Microinformáticos e Redes</nome>
<grao>Medio</grao>
<decretoTitulo ano="2008" />
</ciclo>
</ciclos>
</cifp>
Realiza as seguintes transformacións XSLT de dous xeitos distintos:
- Utilizando unha plantilla (template) para cada elemento e atributo que se necesite transformar
- Utilizando so a plantilla raíz e bucles (for-each) para cada elemento que se necesite transformar
Transformacións
Amosar os nomes dos ciclos sin etiquetas
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- Plantilla raíz -->
<xsl:template match="/">
<xsl:apply-templates select="cifp/ciclos/ciclo/nome" />
</xsl:template>
<!-- Plantilla nome -->
<xsl:template match="/cifp/ciclos/ciclo/nome">
<xsl:value-of select="." />
</xsl:template>
</xsl:stylesheet>
Amosar en parágrafos cada un dos nomes dos ciclos
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" version="4.0" encoding="UTF-8" indent="yes" />
<!-- Plantilla raíz -->
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="cifp/ciclos/ciclo/nome" />
</body>
</html>
</xsl:template>
<!-- Plantilla nome -->
<xsl:template match="/cifp/ciclos/ciclo/nome">
<p><xsl:value-of select="." /></p>
</xsl:template>
</xsl:stylesheet>
Amosar nunha lista sin numerar os nomes dos ciclos e entre paréntese o seu grao
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" version="4.0" encoding="UTF-8" indent="yes" />
<!-- Plantilla raíz -->
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="cifp/ciclos" />
</body>
</html>
</xsl:template>
<!-- Plantilla ciclos -->
<xsl:template match="/cifp/ciclos">
<ul><xsl:apply-templates select="ciclo" /></ul>
</xsl:template>
<!-- Plantilla ciclo -->
<xsl:template match="/cifp/ciclos/ciclo">
<li><xsl:apply-templates select="nome" /> (<xsl:apply-templates select="grao" />)</li>
</xsl:template>
<!-- Plantilla nome -->
<xsl:template match="/cifp/ciclos/ciclo/nome">
<xsl:value-of select="." />
</xsl:template>
<!-- Plantilla grao -->
<xsl:template match="/cifp/ciclos/ciclo/grao">
<xsl:value-of select="." />
</xsl:template>
</xsl:stylesheet>
Amosar nunha lista numerada ordenada
Amosar:
- nunha lista numerada os nomes dos ciclos ordenados alfabéticamente de xeito descendente
- e entre paréntese o seu grao.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" version="4.0" encoding="UTF-8" indent="yes" />
<!-- Plantilla raíz -->
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="cifp/ciclos" />
</body>
</html>
</xsl:template>
<!-- Plantilla ciclos -->
<xsl:template match="/cifp/ciclos">
<ol>
<xsl:apply-templates select="ciclo" >
<xsl:sort select="nome" order="descending" />
</xsl:apply-templates>
</ol>
</xsl:template>
<!-- Plantilla ciclo -->
<xsl:template match="/cifp/ciclos/ciclo">
<li><xsl:apply-templates select="nome" /> (<xsl:apply-templates select="grao" />)</li>
</xsl:template>
<!-- Plantilla nome -->
<xsl:template match="/cifp/ciclos/ciclo/nome">
<xsl:value-of select="." />
</xsl:template>
<!-- Plantilla grao -->
<xsl:template match="/cifp/ciclos/ciclo/grao">
<xsl:value-of select="." />
</xsl:template>
</xsl:stylesheet>
Amosar nunha táboa
Amosar:
- nunha etiqueta h2 o nome do instituto
- nunha táboa
- na súa fila encabezado as seguintes columnas: nome do ciclo e ano
- Se o ano é
- maior que o 2009 o fondo será de cor verde
- igual ó 2009 de cor azul
- e se é menor ó 2009 de cor vermella
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" version="4.0" encoding="UTF-8" indent="yes" />
<!-- Plantilla raíz -->
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="cifp" />
</body>
</html>
</xsl:template>
<!-- Plantilla cifp -->
<xsl:template match="/cifp">
<h1><xsl:value-of select="@nome" /></h1>
<xsl:apply-templates select="ciclos" />
</xsl:template>
<!-- Plantilla ciclos -->
<xsl:template match="/cifp/ciclos">
<table border="1">
<tr><th>Nome</th><th>Ano</th></tr>
<xsl:apply-templates select="ciclo" />
</table>
</xsl:template>
<!-- Plantilla ciclo -->
<xsl:template match="/cifp/ciclos/ciclo">
<tr>
<td><xsl:apply-templates select="nome" /></td>
<td><xsl:apply-templates select="decretoTitulo" /></td>
</tr>
</xsl:template>
<!-- Plantilla nome -->
<xsl:template match="/cifp/ciclos/ciclo/nome">
<xsl:value-of select="." />
</xsl:template>
<!-- Plantilla decretoTitulo -->
<xsl:template match="/cifp/ciclos/ciclo/decretoTitulo">
<xsl:choose>
<xsl:when test="@ano > 2009">
<span style="color: green;"><xsl:value-of select="@ano" /></span>
</xsl:when>
<xsl:when test="@ano < 2009">
<span style="color: red"><xsl:value-of select="@ano" /></span>
</xsl:when>
<xsl:otherwise>
<span style="color: blue"><xsl:value-of select="@ano" /></span>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>