Thomas J.S.: Variable außerhalb der Schleife nicht verfügbar

Beitrag lesen

Hallo,

innerhalb einer Schleife schreibe ich einen Wert in eine Variable:
Diesen Wert kennt er allerdings auch nur innerhalb der Schleife. Außerhalb ist es nicht verfügbar,

Das ist absolut korrekt. Die Gültigkeitesbereich der Variable ist die Schleife.

obwohl ich die Variable auch ganz am Anfang vom Stylesheet definiert habe:
<xsl:variable name="Freig_datum" select="'variable_beep'"/>

Hast du nicht ;-)
Du hast zwei Variablen: eine globale und eine lokale (die nur inerhalb der Schleife gilt). Dass die beiden Variablen denselben Namen haben, spielt hierbei keine Rolle.

Gibt es eine Möglichkeit, den Wert auch außerhalb der Schleife zu verwenden?

Nein.
Du könntest versuchen mit Parameter zu arbeiten: allerdigs nur bei call- und apply-templates. Oder du versuchst die Variable außerhalb dieser Schleife zu definieren, z.B. so:

<xsl:variable name="Freig_datum">
<xsl:for-each select="report/dataarea_30/records/record[data/T_PRO_HIS.NEW_LEV_IND='630']">
 <xsl:sort select="data/T_PRO_HIS.MODIFY_DATE" order="descending" />
  <xsl:if test="position()=1">
   <xsl:value-of select="substring(data/T_PRO_HIS.MODIFY_DATE,1,10)"/>
  </xsl:if>
</xsl:for-each>
</xsl:variable>

dann:

<xsl:for-each select="report/dataarea_30/records/record[data/T_PRO_HIS.NEW_LEV_IND='630']">
 <xsl:sort select="data/T_PRO_HIS.MODIFY_DATE" order="descending" />
  <xsl:if test="position()=1">
   <fo:block xsl:use-attribute-sets="table-data-right"><xsl:value-of select="$Freig_datum"/></fo:block>
  </xsl:if>
</xsl:for-each>

Grüße
Thomas