2012-05-10 5 views
22

Gibt es eine Möglichkeit, umfasst mehrere Bedingungen in ‚test‘ Attribut Ausdruck in <xsl:if> Tag von XSLT wieWie in ‚test‘ Attribut Ausdruck <xsl:if> Tag

<xsl:if test="$var='ab' | $var='bc' | $var='ca' "> 
</xsl:if> 

Iam immer einen Fehler mehr Testbedingungen hinzufügen, wie "Ausdruck muss zu einem Knotensatz ausgewertet werden".

Gibt es eine Möglichkeit, solche Mehrfachbedingungen in <xsl:if> Tag zu codieren?

Kann mir jemand erklären, wie können wir diese Mehrfachbedingungsüberprüfung für die folgenden Tags in

<xsl:if> in Test erreichen Attribut Ausdruck

<xsl:for-each> in select-Attribut Ausdruck

<xsl:template> in Übereinstimmung Attribut Ausdruck

?

Antwort

33
<xsl:if test="$var='ab' | $var='bc' | $var='ca' "> 

Das ist falsch - Sie die XPath Vereinigung Operator | auf Boolesche Werte verwenden.

Lösung: den or Operator XPath verwenden:

<xsl:if test="$var='ab' or $var='bc' or $var='ca' "> 

Der obige XPath-Ausdruck (der Wert des test Attributs) kann optimiert werden, so dass nur ein Vergleich durchgeführt wird und keine or notwendig ist:

<xsl:if test="contains('|ab|bc|ca|', concat('|', $var, '|'))"> 
+0

so ist dies das gleiche für die anderen Tags rechts wie für xsl: for-each und xsl: template –

+0

Vielen Dank.Lernen Sie, wie Sie die gleichen Bedingungen in die Ausdrücke anderer Tags implementieren. –

+1

@Jeevan: Gern geschehen. Die meisten XSLT-Anweisungen haben Attribute, deren Wert als XPath-Ausdruck angegeben wird. Die XPath-Sprache hat ihre Syntaxregeln und in jedem XPath-Ausdruck ist '|' der Vereinigungsoperator. –

1

In XSLT 2.0 oder höher, können Sie gegen eine Reihe von Strings testen:

Verwandte Themen