Bedingte Wertzuweisung von Variablen in XSLT
NCoDer
- xsl
0 Björn Höhrmann0 MudGuard0 Thomas J.S.0 MudGuard
0 Alex Wolff
Gibt es eine Möglichkeit in XSLT eine Variable in Abhängigkeit von einem anderen Parameter mit einem Wert zu belegen? In Javascript wäre das also:
if(X==1)myVar="Ja";
if(X!=1)myVar="Nein"; // da es ja else in XSLT nicht gibt.
Wenn ich es mit:
<xsl:if test="$test">
<xsl:param name="w" >Ja</xsl:param>
</xsl:if>
<xsl:if test="not<($test)">
<xsl:param name="w" >Nein</xsl:param>
</xsl:if>
versuche gibt es die Fehlermeldung:
xsl:param ist an dieser Stelle im Stylesheet nicht zulässig!
Ich möchte beim transformieren von XML nach HTML bestimmte Links etc. nur einmal als Variable abspeichern und dann immer wieder aufrufen. mit <xsl:variable vermeidet man zwar die Fehlermeldung, aber die Variable lässt sich nicht neu belegen.
Danke für Hilfe,
Gibt es eine Möglichkeit in XSLT eine Variable in Abhängigkeit von einem anderen Parameter mit einem Wert zu belegen?
xsl:variable
xsl:choose
xsl:when
xsl:otherwise
Hi,
Gibt es eine Möglichkeit in XSLT eine Variable in Abhängigkeit von einem anderen Parameter mit einem Wert zu belegen? In Javascript wäre das also:
ja.
<xsl:if test="$test">
<xsl:param name="w" >Ja</xsl:param>
</xsl:if>
<xsl:if test="not<($test)">
<xsl:param name="w" >Nein</xsl:param>
</xsl:if>
Daß Dein Parameter nicht in allen Fällen eine Wert bekommt, weißt Du?
Wenn mit if, würd ich es so machen:
<xsl:param name="w">
<xsl:if test="$test">Ja</xsl:if>
<xsl:if test="not<($test)">Nein</xsl:if>
</xsl:param>
Oder aber xsl:choose mit xsl:when + xsl:otherwise (auch INNERHALB des xsl:param):
<xsl:param name="w">
xsl:choose
<xsl:when test="$test">Ja</xsl:when>
xsl:otherwiseNein</xsl:otherwise>
</xsl:choose>
</xsl:param>
cu,
Andreas
Hallo,
Sorry dass ich da hineinmeckere, aber weder das:
<xsl:if test="not<($test)">
noch das:
<xsl:if test="not<($test)">Nein</xsl:if>
gibt es in XSLT. --> wenn, dann: not($test)
Grüße
Thomas
Hi,
Sorry dass ich da hineinmeckere, aber weder das:
<xsl:if test="not<($test)">
noch das:
<xsl:if test="not<($test)">Nein</xsl:if>
gibt es in XSLT. --> wenn, dann: not($test)
Ich hatte nur den Fehler mit dem < im Original verbessert...
cu,
Andreas
hi,
<xsl:if test="$test">
<xsl:param name="w" >Ja</xsl:param>
</xsl:if><xsl:if test="not<($test)">
<xsl:param name="w" >Nein</xsl:param>
</xsl:if>
mudguard und björn haben es ja schon angedeutet, aber ich würde es gern ausführlicher diskutieren (auch um zu testen, ob mein wissen überhaupt korrekt ist ;).
also:
die params sind in xsl mehr für template-aufrufe, wobei ein parameter mitübergeben wird, gedacht. was du brauchst sind variablen.
die sind in xsl aber immer nur lokale variablen; d.h. sie existieren nur innerhalb ihres blocks. bei dir also nur zwischen xsl:if und </xsl:if>.
bei xsl muss man ein bischen umdenken, die bedingungen gehören in xsl:variable und nicht umgekehrt.
zu deinen if-bedingungen: ich hatte damit probleme; nimm lieber xsl:choose und xsl:when (siehe björn).
und zu deiner zweiten bedingung:
test="not<($test)"
autsch! wenn du javascript-mäßig (!$test) meintest, dann nimm einfach die xsl:otherwise.
alex
Hallo,
was du brauchst sind variablen.
die sind in xsl aber immer nur lokale variablen; d.h. sie existieren nur innerhalb ihres blocks.
Man kann auch globale Variablen definieren.
Grüße
Thomas