Ejercicio Resuelto XSLT

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

Tarea 5 LMSGI José Luis Comesaña Cabeza

Partiendo del documento XML siguiente:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>


<!DOCTYPE notas>
<?xml-stylesheet type="text/xsl" href="notas2.xsl"?>
<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>
He creado un documento XSLT de versión 2.0 en el que decimos que la salida será para un
documento HTML, y que tendrá la siguiente estructura:

Asignamos una plantilla para los datos contenidos en el nodo principal “notas”, cuya
información será la utilizada para componer el documento xhtml que estamos creando. Dicho
documento tendrá un título en el que necesitamos utilizar caracteres especiales por lo que
hacemos uso de su correspondiente código hexadecimal. También utilizo varios estilos
diferentes a lo largo del documento, por lo que los define utilizando css insertado en el mismo

DAW -1-
Tarea 5 LMSGI José Luis Comesaña Cabeza

escrito (cuando son muchos estilos los que debemos de definir utilizamos un css externo, pero
en esta ocasión los defino internamente ya que son pocos estilos los que hemos de crear).

Terminada la parte de la cabecera, pasamos a teclear la parte del cuerpo, y como de lo que se
trata es de sacar por pantalla una tabla de contenidos, decido incluirlo en una capa para poder
moverla libremente por la pantalla, y en este caso, que aparezca centrada. Dentro de dicha
capa insertamos una tabla y creamos la cabecera según lo especificado para este ejercicio:

 Primera línea de cabecera compuesta únicamente de dos celdas (Datos y notas) por lo que
hemos de unir tres columnas para cada una de las celdas.
 Segunda línea de cabecera compuesta por seis celdas que servirán de título para los datos
representados
 Todos los datos que compondrán la información solicitada para el ejercicio, por lo cual
insertaremos en este punto una plantilla que recoja dicha información.
 Cerramos la tabla, la capa, el cuerpo y el documento xhtml, ya que el resto de código será
para definir la plantilla que usaremos para el cuerpo de la tabla.

La plantilla que definimos a continuación, recogerá los datos de cada alumno, y utilizamos el
condicional “if” para fijarnos únicamente en aquellos alumnos que en el atributo de
“convocatoria” tengan el dato de “Junio” (lo solicitado para el ejercicio).

Si se encuentran alumnos de dicha convocatoria se abre una nueva fila para la tabla y se
muestran los datos de nombre, apellidos, cuestionarios, tareas y examen, y el último dato de
“final” lo usamos para comprobar entre qué valores se encuentra, para lo que nos apoyamos
en la orden “choose” y cuando (when) el dato de “final” sea:

 mayor o igual que 9 pondremos la palabra “Sobresaliente” en color azul


 mayor o igual que 7 pondremos la palabra “Notable” en color azul algo más claro
 mayor o igual que 6 pondremos la palabra “Bien” en color negro
 mayor o igual que 5 pondremos la palabra “Suficiente” en color naranja
 en cualquier otro caso pondremos la palabra “Suspenso” en color rojo

Cuando terminamos con la plantilla para los datos que hemos de mostrar creamos una
plantilla vacía para el dato “matricula” con lo que conseguimos que dicho dato no aparezca.

El código completo sería el siguiente:

<?xml version="1.0" encoding="UTF-8"?>


<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template match="/notas">
<html>
<head>
<title>Ejercicio XSLT de Jos&#233; Luis Comesa&#241;a</title>
<style type="text/css">
.azul1{background-color:#369;}
.azul2{background-color:#69C;}
.azul3{background-color:#e0ffff;}
td{text-align: center;}
h2{color:#f00; font-weight:bold; text-align:center;}
</style>
</head>
<body>
<div style="float:left; position:absolute; width:100%;">
<h2>Calificaciones de la convocatoria de Junio</h2>

DAW -2-
Tarea 5 LMSGI José Luis Comesaña Cabeza

<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:apply-templates select="./alumno"/>
</table>
</div>
</body>
</html>
</xsl:template>
<xsl:template match="//alumno">
<xsl:if test="./@convocatoria='Junio'">
<tr class="azul3">
<td><xsl:value-of select="nombre"/></td>
<td><xsl:value-of select="apellidos"/></td>
<td><xsl:value-of select="cuestionarios"/></td>
<td><xsl:value-of select="tareas"/></td>
<td><xsl:value-of select="examen"/></td>
<td>
<xsl:choose>
<xsl:when test="final&gt;=9">
<font color="blue">Sobresaliente</font>
</xsl:when>
<xsl:when test="final&gt;=7">
<font color="#5F9EA0">Notable</font>
</xsl:when>
<xsl:when test="final&gt;=6">
<font color="black">Bien</font>
</xsl:when>
<xsl:when test="final&gt;=5">
<font color="orange">Suficiente</font>
</xsl:when>
<xsl:otherwise>
<font color="red">Suspenso</font>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:if>
</xsl:template>
<xsl:template match="matricula"/>
</xsl:stylesheet>

Ejecutando el fichero xml en un navegador web como Mozilla obtendríamos:

Adjunto al presente documento inserto el xml y xsl para que se pueda comprobar.

DAW -3-

También podría gustarte