Variable außerhalb der Schleife nicht verfügbar
Cyberfuzzy
- xsl
Hallo,
innerhalb einer Schleife schreibe ich einen Wert in eine Variable:
<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:variable name="Freig_datum" select="substring(data/T_PRO_HIS.MODIFY_DATE,1,10)"/>
<!-- innerhalb der Schleife erkennt er die Variable, außerhalb leider nicht mehr :-( -->
<fo:block xsl:use-attribute-sets="table-data-right"><xsl:value-of select="$Freig_datum"/></fo:block>
</xsl:if>
</xsl:for-each>
Diesen Wert kennt er allerdings auch nur innerhalb der Schleife. Außerhalb ist es nicht verfügbar, obwohl ich die Variable auch ganz am Anfang vom Stylesheet definiert habe:
<xsl:variable name="Freig_datum" select="'variable_beep'"/>
Gibt es eine Möglichkeit, den Wert auch außerhalb der Schleife zu verwenden?
Danke für eure Hilfe ;-)
Gruß
Cyberfuzzy
--
http://www.cyberfuzzy.com
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
Hallo,
das war genau die richtige Lösung, vielen Dank und schönen Abend noch ;-)
Gruß
Cyberfuzzy
--
http://www.cyberfuzzy.com