XSL-Variable mehrfach Wert zuweisen?
claus
- xsl
0 Thomas J.S.0 claus
Hi Forum.
ich arbeite zur Zeit etwas mit XML/XSL und finde einfach keine Lösung für mein kleines Problem.
In einer for-each-Schleife werden Werte abgepürft und je nach Ergebnis dargestellt.
Das ganze sieht so aus:
<xsl:for-each select="/VORGABE/BMS">
<xsl:variable name="string">
<xsl:value-of select="./@BM1"/>
xsl:choose
<xsl:when test="string-length($string) < 2">
<TD width="2%"> <xsl:value-of select="./@BM1" /> </TD>
</xsl:when>
xsl:otherwise
<TD width="2%"><span class="verticaltext"><xsl:value-of select="./@BM1" /></span> </TD>
</xsl:otherwise>
</xsl:choose>
<TD width="2%"> <span class="verticaltext"><xsl:value-of select="./@BM2" /></span> </TD>
<TD width="2%"> <span class="verticaltext"><xsl:value-of select="./@BM3" /></span> </TD>
</xsl:variable>
</xsl:for-each>
Mein Problem ist die Variable.
Die Schleife wird mehrfach durchlaufen, wobei es auch mehrer Werte von BM1 gibt. Soweit kein Problem, aber was mach ich mit meiner Cariablen? Einer Variablen kann nur EINMAL ein Wert zugewiesen werden und somit funktioniert das Ganze nicht.
Kann man eine Variable irgendwie löschen?
... über eine Destroy-Funktion o.ä.?
Ich hab schon ne weile gegoogled, aber nix gefunden.
Danke & nice WE
Claus
Hallo,
Deine Variable ist eigentlich unsinngi, denn du hast _alles_ in der Variable hineingeschrieben und sie soll sich dazu selbst überprüfen. Das geht eben nicht, wie du festgestellt hast.
Und eigentlich brauchst du keine Variable:
<xsl:for-each select="/VORGABE/BMS">
xsl:choose
<xsl:when test="string-length(@BM1) < 2">
<TD width="2%"> <xsl:value-of select="@BM1" /> </TD>
</xsl:when>
xsl:otherwise
<TD width="2%"><span class="verticaltext"><xsl:value-of select="@BM1" /></span> </TD>
</xsl:otherwise>
</xsl:choose>
<TD width="2%"> <span class="verticaltext"><xsl:value-of select="@BM2" /></span> </TD>
<TD width="2%"> <span class="verticaltext"><xsl:value-of select="@BM3" /></span> </TD>
</xsl:for-each>
Kann man eine Variable irgendwie löschen?
Nein. Dafür gibt xsl:param und bei Bedarf ein recursiver Template.
Grüße
Thomas
Hi Thomas,
<xsl:when test="string-length(@BM1) < 2">
achso, ich dachte, dass muss ne Variable sein.
Wenn das auch so geht, werd ich es gleich mal einbauen und
testen.
Danke Dir!
nice WE
Claus