it-swarm.com.de

Können Sie zwei Bedingungen in ein xslt-Testattribut einfügen?

Ist das richtig für Wenn 4 <5 und 1 <2?

<xsl:when test="4 &lt; 5 AND 1 &lt; 2" >
<!-- do something -->
</xsl:when>
120
joe

Nicht ganz, das AND muss klein geschrieben sein.

<xsl:when test="4 &lt; 5 and 1 &lt; 2">
<!-- do something -->
</xsl:when>
203
phihag

Es muss in ein <xsl: choose> eingeschlossen werden, da es ein Wann ist. Und Kleinbuchstaben "und".

<xsl:choose>
   <xsl:when test="4 &lt; 5 and 1 &lt; 2" >
   <!-- do something -->
   </xsl:when>
   <xsl:otherwise>
   <!-- do something else -->
   </xsl:otherwise>
</xsl:choose>
33
Aaron Palmer

Von XML.com :

Wie xsl: if-Anweisungen können xsl: when-Elemente zwischen ihren Start- und End-Tags umfangreichere Inhalte aufweisen, z. B. literale Ergebniselemente, xsl: element-Elemente oder sogar xsl: if- und xsl: choose-Elemente, die hinzugefügt werden sollen der Ergebnisbaum. Ihre Testausdrücke können auch alle Tricks und Operatoren verwenden, die das Testattribut des xsl: if-Elements verwenden kann, z. B. und oder und Funktionsaufrufe, um komplexere boolesche Ausdrücke zu erstellen.

6
Harper Shelby

Vielleicht ist dies ein Kinderspiel für den XSLT-Profi, aber für mich als Anfänger/Fortgeschrittener hat mich das verwirrt. Ich wollte genau das Gleiche tun, musste aber einen Antwortzeitwert aus einer XML-Datei anstelle einer einfachen Zahl testen. Im Anschluss an diesen Thread habe ich Folgendes versucht:

<xsl:when test="responsetime/@value &gt;= 5000 and responsetime/@value &lt;= 8999"> 

was zu einem Fehler führte. Das funktioniert:

<xsl:when test="number(responsetime/@value) &gt;= 5000 and number(responsetime/@value) &lt;= 8999">

Verstehe nicht wirklich, warum es ohne number () nicht funktioniert. Könnte es sein, dass der Wert ohne number () als Zeichenfolge behandelt wird und Sie keine Zahlen mit einer Zeichenfolge vergleichen können?

Wie auch immer, hoffe, das erspart jemandem viel Suche ...

5
Ted