XSL - First, rest, last page en conditional-page-master

 
Vista:

First, rest, last page en conditional-page-master

Publicado por orni (1 intervención) el 17/07/2002 19:08:26
Hola a todos. Perdonad si la pregunta se ha hecho ya, este es mi primer mensaje en el foro.
He de hacer una plantilla en XSL para imprimir albaranes, de modo que en la última página aparezca una línea con totales (no tengo que calcularlos, sólo mostrarlos). Esta última página puede ser también la primera, evidentemente. He de poder diferenciar entre tres tipos de páginas, la primera, la última (ambas pueden coincidir) y el resto. He intentado hacerlo de varias formas, pero no lo consigo. ¿Alguien tiene alguna idea de cómo hacerlo?
Muchas gracias y un saludo,

orni.
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

Solución para mostrar totales en la última página de una plantilla de albarán en XSL

Publicado por Alejandro (227 intervenciones) el 04/07/2023 23:08:02
Hola, Orni.

Para mostrar una línea con totales en la última página de una plantilla de albarán en XSL, puedes seguir los siguientes pasos:

1. Identifica el número total de páginas en tu documento XSL. Puedes hacerlo utilizando la función `count()` en combinación con la expresión XPath adecuada. Por ejemplo:

1
<xsl:variable name="totalPages" select="count(/root/page)"/>

2. Dentro de tu plantilla principal, puedes utilizar una estructura condicional para diferenciar entre los distintos tipos de páginas. Puedes usar el elemento `<xsl:choose>` y `<xsl:when>` para establecer las condiciones y las acciones correspondientes. Por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<xsl:template match="page">
  <xsl:choose>
    <xsl:when test="position() = 1 and $totalPages = 1">
      <!-- Primera y última página -->
      <!-- Incluir lógica y elementos específicos para la primera y última página -->
    </xsl:when>
    <xsl:when test="position() = 1">
      <!-- Primera página -->
      <!-- Incluir lógica y elementos específicos para la primera página -->
    </xsl:when>
    <xsl:when test="position() = $totalPages">
      <!-- Última página -->
      <!-- Incluir lógica y elementos específicos para la última página -->
    </xsl:when>
    <xsl:otherwise>
      <!-- Resto de páginas -->
      <!-- Incluir lógica y elementos específicos para el resto de páginas -->
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

Dentro de cada bloque `<xsl:when>`, puedes agregar la lógica y los elementos necesarios para mostrar los totales en la posición deseada.

Recuerda ajustar la lógica y los elementos específicos según tus requisitos y estructura de la plantilla de albarán.

Esta solución te permitirá diferenciar entre tres tipos de páginas: la primera, la última (que también puede ser la primera) y el resto. Puedes personalizar la apariencia y el contenido de cada tipo de página según tus necesidades.

Espero que esta solución te sea útil. Si tienes más consultas en el futuro, no dudes en hacerlas. ¡Buena suerte con tu plantilla de albaranes en XSL!
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