Variablenübergabe
ulli
- xsl
0 ulli0 Thomas J.S.0 ulli
hallo
ich hab da mal nen problem. ich möchte zwecks farbiger unterlegung eine variable in einem <xsl:call-template ... > mitgeben. mein ansatz sieht folgendermaßen aus:
<xsl:if test="position() mod 2 = 1">
<xsl:variable name="BGColor" select="'ffffff'" />
</xsl:if>
<xsl:if test="position() mod 2 = 0">
<xsl:variable name="BGColor" select="'e2ecef'" />
</xsl:if>
<xsl:call-template name="HoteleintragErzeugen">
<xsl:with-param name="BGColor" select="$BGColor" />
.
.
. noch ein paar ander parameter (funktionieren aber alle)
</xsl:call-template>
das ganze ist ein einer "schleife" (<xsl:for-each ... >) untergebracht. aber es geht nicht (heul) ... was ist dabei nicht verstehe, ist warum klappt das im selfhtml beispiel?
http://selfhtml.teamone.de/xml/darstellung/xsltelemente.htm#with_param
cu
ulli
so, geht doch =)
anscheinend kommt mein (der?) xsl parser nicht mit mehrfach deklatationen klar.
ich hab mich also an das beispiel in selfhtml
http://selfhtml.teamone.de/xml/darstellung/xsltelemente.htm#with_param
gehalten und folgende lösung gefunden:
<xsl:variable name="BGColor">
xsl:choose
<xsl:when test="position() mod 2 = 1">ffffff</xsl:when>
<xsl:when test="position() mod 2 = 0">e2ecef</xsl:when>
xsl:otherwiseffffff</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="HoteleintragErzeugen">
<xsl:with-param name="BGColor" select="$BGColor" />
.
.
.
</xsl:call-template>
cu
ulli
Hallo,
<xsl:if test="position() mod 2 = 1">
<xsl:variable name="BGColor" select="'ffffff'" />
</xsl:if>
<xsl:if test="position() mod 2 = 0">
<xsl:variable name="BGColor" select="'e2ecef'" />
</xsl:if>
Dein XSL-Parser ist ganz in Ordnung. Dein Ansatz ist dagegen falsch.
So wie du es hier definiert hast, beendest du den Geltungsbereich deiner Variable mit </xsl:if>.
Wenn du im Archiv nach den Stichwöter: geltungsbereich, scope, xsl, valiable suchst, findet ausführliche Erklärungen.
Die richtige Lösung hast du mittlerweile aus SELFHTML.
Grüße
Thomas
hallo
So wie du es hier definiert hast, beendest du den Geltungsbereich deiner Variable mit </xsl:if>.
siehste ... hätte ich dem xslt gar nicht zugetraut ... aber gut =)
cu
ulli