Ich versuche, eine if -else-Anweisung in XSLT zu implementieren, aber mein Code wird einfach nicht analysiert. Hat jemand irgendwelche Ideen?
<xsl:variable name="CreatedDate" select="@createDate"/>
<xsl:variable name="IDAppendedDate" select="2012-01-01" />
<b>date: <xsl:value-of select="$CreatedDate"/></b>
<xsl:if test="$CreatedDate > $IDAppendedDate">
<h2> mooooooooooooo </h2>
</xsl:if>
<xsl:else>
<h2> dooooooooooooo </h2>
</xsl:else>
xml
xslt
if-statement
Funky
quelle
quelle
Antworten:
Sie müssen es mit dem
<xsl:choose>
Tag neu implementieren :quelle
Wenn die Anweisung verwendet wird, um nur eine Bedingung schnell zu überprüfen. Wenn Sie mehrere Optionen haben, verwenden Sie diese
<xsl:choose>
wie unten dargestellt:Sie können auch mehrere
<xsl:when>
Tags zum AusdrückenIf .. Else If
oderSwitch
Mustern verwenden, wie unten dargestellt:Das vorherige Beispiel entspricht dem folgenden Pseudocode:
quelle
if else
Bedingung war übrigens nur ein Beispiel oder eher ein Pseudocode. Nun, ich betrachte Ihr Anliegen und habe es bearbeitet.Wenn ich einige Vorschläge machen darf (zwei Jahre später, aber hoffentlich hilfreich für zukünftige Leser) :
h2
Element.ooooooooooooo
Text.if/then/else
Konstrukt, wenn Sie XSLT 2.0 verwenden.XSLT 1.0-Lösung (funktioniert auch mit XSLT 2.0)
XSLT 2.0-Lösung
quelle
Der einfachste Ansatz besteht darin, einen zweiten Wenn-Test durchzuführen, wobei jedoch die Bedingung umgekehrt ist. Diese Technik ist kürzer, augenschonender und leichter richtig zu machen als ein ansonsten verschachtelter Block:
Hier ist ein reales Beispiel für die Technik, die im Stylesheet für eine Regierungswebsite verwendet wird: http://w1.weather.gov/xml/current_obs/latest_ob.xsl
quelle
if
Test mit dem Komplement des ersten übereinstimmt, ist jede nachfolgende Änderung fehleranfälliger.<xsl:choose>
viel einfacher wäre und seine Bedeutung viel klarer ist.Ursprünglich aus diesem Blogbeitrag . Wir können dies erreichen, indem wir den folgenden Code verwenden
Also hier ist was ich getan habe
Meine Ausgabe
quelle