Ejercicio 515
Consideremos el siguiente documento XML:
<?xml version="1.0" encoding="UTF-8"?>
<notas>
<alumno convocatoria="Septiembre">
<nombre>Carlos</nombre>
<apellidos>Amaya Arozamena</apellidos>
<matricula>m019843</matricula>
<cuestionarios>8.0</cuestionarios>
<tareas>8.0</tareas>
<examen>6.0</examen>
<final>8.0</final>
</alumno>
<alumno convocatoria="Junio">
<nombre>Jose</nombre>
<apellidos>Muñoz Soto</apellidos>
<matricula>m019872</matricula>
<cuestionarios>7.0</cuestionarios>
<tareas>9.0</tareas>
<examen>7.0</examen>
<final>8.5</final>
</alumno>
<alumno convocatoria="Junio">
<nombre>Ana</nombre>
<apellidos>Martinez de la Fuente</apellidos>
<matricula>m097215</matricula>
<cuestionarios>8.0</cuestionarios>
<tareas>9.0</tareas>
<examen>9.0</examen>
<final>8.5</final>
</alumno>
<alumno convocatoria="Septiembre">
<nombre>Roberto</nombre>
<apellidos>Carrera Fernández</apellidos>
<matricula>m059312</matricula>
<cuestionarios>6.0</cuestionarios>
<tareas>7.0</tareas>
<examen>6.0</examen>
<final>6.5</final>
</alumno>
<alumno convocatoria="Septiembre">
<nombre>Concepción</nombre>
<apellidos>Lalinde Priego</apellidos>
<matricula>m034093</matricula>
<cuestionarios>4.0</cuestionarios>
<tareas>3.0</tareas>
<examen>2.0</examen>
<final>3.0</final>
</alumno>
<alumno convocatoria="Junio">
<nombre>Esther</nombre>
<apellidos>Pereda</apellidos>
<matricula>m938762</matricula>
<cuestionarios>2.0</cuestionarios>
<tareas>3.0</tareas>
<examen>2.0</examen>
<final>2.5</final>
</alumno>
</notas>
Diseña el fichero XSLT que permita obtener la siguiente salida en HTML:
Solución
Debemos añadir una cabecera al documento XML (suponiendo que el nombre del fichero XSLT es 515.xsl
):
<?xml-stylesheet type="text/xsl" href="515.xsl"?>
Hoja XSL:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>Calificaciones Junio</title>
<style type="text/css">
.azul1{background-color:#369;}
.azul2{background-color:#69C;}
.azul3{background-color:#e0ffff;}
td{text-align: center;}
h1{color:#f00; font-weight:bold; text-align:center;}
</style>
</head>
<body>
<div>
<h1>Calificaciones de la convocatoria de Junio</h1>
<table border="3" align="center">
<tr class="azul1">
<th colspan="3">Datos</th>
<th colspan="3">Notas</th>
</tr>
<tr class="azul2">
<th>Nombres</th>
<th>Apellidos</th>
<th>Tareas</th>
<th>Cuestionarios</th>
<th>Examen</th>
<th>Final</th>
</tr>
<xsl:for-each select="//alumno[@convocatoria='Junio']">
<tr class="azul3">
<td><xsl:value-of select="nombre"/></td>
<td><xsl:value-of select="apellidos"/></td>
<td><xsl:value-of select="tareas"/></td>
<td><xsl:value-of select="cuestionarios"/></td>
<td><xsl:value-of select="examen"/></td>
<td>
<xsl:choose>
<xsl:when test="final>=9">
<span style="color:blue;">Sobresaliente</span>
</xsl:when>
<xsl:when test="final>=7">
<span style="color:#5F9EA0;">Notable</span>
</xsl:when>
<xsl:when test="final>=6">
<span style="color:black;">Bien</span>
</xsl:when>
<xsl:when test="final>=5">
<span style="color:orange;">Suficiente</span>
</xsl:when>
<xsl:otherwise>
<span style="color:red;">Suspenso</span>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:for-each>
</table>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Documento HTML de salida:
<!DOCTYPE HTML><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Calificaciones Junio</title>
<style type="text/css">
.azul1{background-color:#369;}
.azul2{background-color:#69C;}
.azul3{background-color:#e0ffff;}
td{text-align: center;}
h1{color:#f00; font-weight:bold; text-align:center;}
</style>
</head>
<body>
<div>
<h1>Calificaciones de la convocatoria de Junio</h1>
<table border="3" align="center">
<tr class="azul1">
<th colspan="3">Datos</th>
<th colspan="3">Notas</th>
</tr>
<tr class="azul2">
<th>Nombres</th>
<th>Apellidos</th>
<th>Tareas</th>
<th>Cuestionarios</th>
<th>Examen</th>
<th>Final</th>
</tr>
<tr class="azul3">
<td>Jose</td>
<td>Muñoz Soto</td>
<td>9.0</td>
<td>7.0</td>
<td>7.0</td>
<td><span style="color:#5F9EA0;">Notable</span></td>
</tr>
<tr class="azul3">
<td>Ana</td>
<td>Martinez de la Fuente</td>
<td>9.0</td>
<td>8.0</td>
<td>9.0</td>
<td><span style="color:#5F9EA0;">Notable</span></td>
</tr>
<tr class="azul3">
<td>Esther</td>
<td>Pereda</td>
<td>3.0</td>
<td>2.0</td>
<td>2.0</td>
<td><span style="color:red;">Suspenso</span></td>
</tr>
</table>
</div>
</body>
</html>