• No se han encontrado resultados

Código de la hoja de estilo: agenda_pdf.xsl

In document PROYECTO FIN DE CARRERA (página 156-160)

<!-- 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">

<fo:table-cell>

<fo:block line-height="0.8cm">-</fo:block>

</fo:table-cell>

</xsl:when>

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

<fo:table-cell>

<fo:block line-height="0.8cm">-</fo:block>

</fo:table-cell>

</xsl:when>

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

<fo:table-cell>

<fo:block line-height="0.8cm">

<xsl:choose>

<xsl:when test="($indice - $comienzo + 1) = ./asignatura/dia">

<fo:block color="rgb(128,64,0)">Exámen</fo:block>

</xsl:when>

<xsl:when test="($indice - $comienzo + 1) != ./asignatura/dia">

<xsl:value-of select="$indice - $comienzo + 1"/>

</xsl:when> </xsl:choose> </fo:block> </fo:table-cell> </xsl:when> </xsl:choose>

<xsl:if test="$contador &gt; $indice">

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

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

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

</xsl:call-template>

</xsl:if>

</xsl:template> </xsl:stylesheet>

CAPITULO 8.- PLANOS DE CÓDIGO 157

8.4

Hoja de estilo para transformación a WML

Esta hoja de estilo transforma la estructura de datos a un documento WML (Wireless Markup Language), que puede ser entendido por un dispositivo móvil WAP (Wireless Application Protocol):

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

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

<xsl:output encoding="iso-8859-1" doctype-public="-//WAPFORUM//DTD WML

1.1//EN" doctype-system="http://www.wapforum.org/DTD/wml_1.1.xml"

indent="yes"/>

<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="/"> <wml> <template> <do type="prev"> <prev/> </do> <do type="Indice"> <go href="#indice"/> </do> </template>

<card id="indice" title="Agenda de Examenes">

<p align="center">

<br/>

<big>

<b>

<xsl:value-of select="calendario/mes/nombre"/>

</b>

</big>

<br/>

<p> <table columns="7"> <tr> <td>L</td> <td>M</td> <td>X</td> <td>J</td> <td>V</td> <td>S</td> <td>D</td> </tr>

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

</table>

</p>

</card>

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

</wml>

</xsl:template>

<xsl:template match="calendario/asignatura">

<card id="{@id}" title="Dia {dia}{../mes/nombre}">

<p align="left">

<big>Examen: <b>

<xsl:value-of select="nombre"/>, </b>

<xsl:value-of select="@curso"/>Curso.</big>

</p>

</card>

</xsl:template>

<!-- 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>

CAPITULO 8.- PLANOS DE CÓDIGO 159

<!-- Le 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>-</td>

</xsl:when>

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

<td>-</td>

</xsl:when>

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

<td>

<xsl:choose>

<xsl:when test="($indice-$comienzo+1)=calendario/asignatura/dia">

<xsl:for-each select="calendario/asignatura">

<xsl:if test="($indice - $comienzo + 1) = dia">

<a href="#{@id}">

<xsl:value-of select="$indice - $comienzo + 1"/>

</a>

</xsl:if>

</xsl:for-each>

</xsl:when>

<xsl:whentest="($indice-$comienzo+1)!=calendario/asignatura/dia">

<xsl:value-of select="$indice - $comienzo + 1"/>

</xsl:when>

</xsl:choose>

</td>

</xsl:when>

In document PROYECTO FIN DE CARRERA (página 156-160)

Documento similar