XSL - <fo:static-content

 
Vista:

<fo:static-content

Publicado por noesidoyo (1 intervención) el 15/06/2009 14:26:34
Hola, estoy intentando insertar un bloque
"fo:static-content .."
para poder mostrar el valor de una variable en todas las páginas.
"<xsl:variable name="tit" select="titulo"/>"

Lo que intento es que durante el procesamiento de la hoja, modifico ese valor de la variable. Pero cuando va a pintar las siguiente hojas, el valor de la variable es siempre el original.

¿Como puedo hacer para poder mostrar un valor de una variable en cada una de las hojas de un documento?, ¿no puedo usar el bloque "<fo:static-content.." si voy a modificar el valor de la variable?

Gracias, saludos.
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

Uso de variables en múltiples páginas con fo:static-content

Publicado por Alejandro (227 intervenciones) el 06/07/2023 23:12:34
El problema que estás enfrentando se debe a la naturaleza de XSL-FO, donde las variables mantienen su valor original en cada página. Sin embargo, hay una solución para lograr tu objetivo utilizando un enfoque diferente.

En lugar de intentar modificar el valor de la variable en cada página, puedes utilizar la técnica de "marker" (marcador) en XSL-FO para mostrar el valor de la variable en todas las páginas. Aquí está el enfoque recomendado:

1. En tu XSL, define un "marker" utilizando el elemento `<fo:marker>`. Esto se hace fuera del flujo principal del contenido, por ejemplo, en una sección de encabezado:

1
2
3
4
5
6
7
<fo:static-content flow-name="header">
  <fo:block>
    <fo:marker marker-class-name="titulo">
      <xsl:value-of select="titulo"/>
    </fo:marker>
  </fo:block>
</fo:static-content>

2. Luego, en tus bloques de encabezado en cada página, puedes usar el marcador definido anteriormente para mostrar el valor actualizado de la variable en cada página:

1
2
3
4
5
<fo:static-content flow-name="xsl-region-before">
  <fo:block>
    <fo:retrieve-marker retrieve-class-name="titulo"/>
  </fo:block>
</fo:static-content>

Al usar el `<fo:retrieve-marker retrieve-class-name="titulo"/>`, se mostrará el valor actualizado de la variable `titulo` en cada página, ya que el marcador se recuperará en el encabezado de cada página.

Recuerda que es necesario tener un formato de página adecuado configurado en tu archivo XSL-FO para que los encabezados se repitan en cada página correctamente.

Con este enfoque, lograrás mostrar el valor de una variable en cada una de las páginas del documento sin necesidad de modificar directamente el valor de la variable en cada página.
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