• No se han encontrado resultados

Estructura de datos de la aplicación: agenda.xml

In document PROYECTO FIN DE CARRERA (página 146-150)

8.2

Hoja de estilo para transformación a HTML

La hoja de estilos XSL (Extensible Stylesheet Language), que se aplica en la transformación XSLT (XSL Transform) del documento XML anterior para su visualización sobre un navegador web es:

<asignatura id="a6" curso="4">

<nombre>Tratamiento Digital de Senales</nombre>

<dia>13</dia>

</asignatura>

<asignatura id="a7" curso="5">

<nombre>Lab de Simulacion de Redes y Teletrafico</nombre>

<dia>14</dia>

</asignatura>

<asignatura id="a8" curso="5">

<nombre>Comunicaciones Opticas</nombre>

<dia>18</dia>

</asignatura>

<asignatura id="a9" curso="1">

<nombre>Teoria de Circuitos</nombre>

<dia>15</dia>

</asignatura>

<asignatura id="a10" curso="5">

<nombre>Ampliacion de Conmutacion</nombre>

<dia>17</dia>

</asignatura>

CAPITULO 8.- PLANOS DE CÓDIGO 147

<?xml version="1.0" encoding="iso-8859-1"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

version="1.0">

<xsl:output method="html" encoding="ISO-8859-1" indent="yes"/>

<xsl:variable name="numero_asig" select="count(//asignatura)"/>

<xsl:variable name="comienzo" select="/calendario/mes/@dia_comienzo"/>

<xsl:variable name="dias_mes" select="/calendario/mes/@n_dias"/>

<xsl:variable name="total" select="$comienzo + $dias_mes - 1"/>

<xsl:variable name="overflow" select="$total mod 7"/>

<xsl:variable name="n_elementos">

<xsl:choose>

<xsl:when test="$overflow &gt; 0">

<xsl:value-of select="$total + 7 - $overflow"/>

</xsl:when>

<xsl:otherwise>

<xsl:value-of select="$total"/>

</xsl:otherwise>

</xsl:choose>

</xsl:variable>

<xsl:template match="calendario">

<html>

<head>

<title>Exámenes <xsl:value-of select="/calendario/mes/nombre"/></title>

</head>

<body bgcolor="lightblue">

<br/>

<h1 align="center">

Agenda de Exámenes <xsl:value-of select="/calendario/mes/nombre"/>

</h1>

<br/>

<table title="Calendario" border="2" bgcolor="lightgoldenrodyellow" align="left"> <tr bgcolor="white"> <th>Lunes</th> <th>Martes</th> <th>Miercoles</th> <th>Jueves</th> <th>Viernes</th> <th>Sabado</th> <th>Domingo</th> </tr>

<xsl:call-template name="mes"/>

<div class="tablaCentral">

<table title="Fechas" align="right" border="1" bgcolor="lightgoldenrodyellow" borderwidth="4">

<tr bgcolor="white">

<th class="curso">Curso</th>

<th class="nombre">Asignatura</th>

<th class="dia">Fecha</th>

</tr>

<xsl:apply-templates select="asignatura">

<xsl:sort select="dia" data-type="number"/>

</xsl:apply-templates>

<tr>

<td class="final" colspan="3" align="center" bgcolor="white">Número de exámenes: <xsl:value-of select="$numero_asig"/>

</td> </tr> </table> </div> <br/> <br/>

<h3 align="center">Para consulta sobre las asignaturas: <a href="{url}">

<xsl:value-of select="url"/>

</a> </h3> <br/> <br/> <br/> <tr> <td width="100%">

<table border="0" width="100%" cellpadding="2">

<tr>

<td width="100%" bgcolor="#add8e6" align="center">

<input type="submit" name="Volver" value="Volver"/>

</td> </tr> </table> </td> </tr> </body> </html> </xsl:template>

CAPITULO 8.- PLANOS DE CÓDIGO 149

<!-- Solo es llamado una vez por 'root' -->

<!-- Utiliza recursividad con indice+7 para cada semana-->

<xsl:template name="mes">

<xsl:param name="indice" select="1"/>

<xsl:if test="$indice &lt; $n_elementos">

<xsl:call-template name="semana">

<xsl:with-param name="indice" select="$indice"/>

</xsl:call-template>

<xsl:call-template name="mes">

<xsl:with-param name="indice" select="$indice + 7"/>

</xsl:call-template>

</xsl:if>

</xsl:template>

<!-- Se llama el template 'mes' cada semana -->

<xsl:template name="semana">

<xsl:param name="indice" select="1"/>

<tr>

<xsl:call-template name="dias">

<xsl:with-param name="indice" select="$indice"/>

<xsl:with-param name="contador" select="$indice + 6"/>

</xsl:call-template>

</tr>

</xsl:template>

<!-- Es llamado por semana -->

<!-- Rutina que va imprimiendo cada dia de la semana, usando recursividad con: indice+1-->

<xsl:template name="dias">

<xsl:param name="indice" select="1"/>

<xsl:param name="contador" select="1"/>

<xsl:choose>

<xsl:when test="$indice &lt; $comienzo">

<td align="center">-</td>

</xsl:when>

<xsl:when test="$indice - $comienzo + 1 &gt; $dias_mes">

<td align="center">-</td>

In document PROYECTO FIN DE CARRERA (página 146-150)

Documento similar