XSL - Asignar valor a una variable declarada

 
Vista:

Asignar valor a una variable declarada

Publicado por ZiCruz (1 intervención) el 04/06/2008 18:47:32
Hola a tod@s,

estoy intentado que cada fila salga de un color utilizando una variable tipo switch, pero no consigo modificar el valor inicial lo que tengo es esto:

<xsl:variable name="par">si</xsl:variable>
<xsl:for-each select="persona">
<xsl:sort select="apellidos/apellido1" data-type="text" order="ascending"/>
<xsl:choose>
<xsl:when test="$par='si'">
<tr bgcolor="cian">
<td><b><xsl:value-of select="$par"/></b></td>
<td><xsl:value-of select="apellidos/apellido1"/> <xsl:value-of select="apellidos/apellido2"/>, <xsl:value-of select="nombre"/></td>
<td><xsl:value-of select="municipio"/></td>
<td><xsl:value-of select="provincia"/></td>
</tr>
<xsl:variable name="par">no</xsl:variable>
</xsl:when>
<xsl:when test="$par='no'">
<tr bgcolor="yellow">
<td><b><xsl:value-of select="$par"/></b></td>
<td><xsl:value-of select="apellidos/apellido1"/> <xsl:value-of select="apellidos/apellido2"/>, <xsl:value-of select="nombre"/></td>
<td><xsl:value-of select="municipio"/></td>
<td><xsl:value-of select="provincia"/></td>
</tr>
<xsl:variable name="par">si</xsl:variable>
</xsl:when>
</xsl:choose>
</xsl:for-each>

¿¿¿Porque no funciona???

muchas gracias y un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cambiar el color de fondo de filas alternas en XSLT

Publicado por Alejandro (227 intervenciones) el 06/07/2023 20:04:34
Para cambiar el color de fondo de filas alternas en XSLT, puedes utilizar una variable y una estructura condicional `xsl:choose` dentro del bucle `xsl:for-each`. Sin embargo, en tu código, estás declarando la variable `par` dentro del bucle, lo que hace que se reinicie en cada iteración y no logras cambiar el color de fondo de las filas.

Aquí tienes una solución para lograr el efecto deseado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<xsl:variable name="par" select="'si'" />
<xsl:for-each select="persona">
  <xsl:sort select="apellidos/apellido1" data-type="text" order="ascending" />
  <xsl:choose>
    <xsl:when test="$par='si'">
      <tr bgcolor="cian">
        <!-- Contenido de la fila -->
      </tr>
      <xsl:variable name="par" select="'no'" />
    </xsl:when>
    <xsl:otherwise>
      <tr bgcolor="yellow">
        <!-- Contenido de la fila -->
      </tr>
      <xsl:variable name="par" select="'si'" />
    </xsl:otherwise>
  </xsl:choose>
</xsl:for-each>

En esta solución, la variable `par` se declara fuera del bucle `xsl:for-each` para que mantenga su valor entre las iteraciones. Dentro de cada iteración, se cambia el valor de la variable `par` alternativamente entre "si" y "no" utilizando la instrucción `xsl:variable`.

De esta manera, las filas se colorearán de manera alternada utilizando los colores especificados en el atributo `bgcolor`.

Espero que esta solución te sea útil. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar