121 votes

Peut-on mettre deux conditions dans un attribut de test xslt ?

Est-ce que c'est correct pour le cas où 4 < 5 et 1 < 2 ?

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

204voto

phihag Points 89765

Pas tout à fait, le ET doit être en minuscule.

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

33voto

Aaron Palmer Points 4256

Il doit être enveloppé dans un <xsl:choose> puisque c'est un when. Et mettez le "et" en minuscule.

<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>

6voto

Harper Shelby Points 13395

De XML.com :

Comme les instructions xsl:if, xsl:when peuvent avoir des contenus plus élaborés plus élaborés entre leurs balises de début et de par exemple, un résultat littéral des éléments xsl:element, ou encore même des éléments xsl:if et xsl:choose à à ajouter à l'arbre de résultats. Leur test peuvent également utiliser toutes les astuces et opérateurs que les éléments xsl:if peut utiliser, par exemple comme and, or, et les appels de fonction, pour construire des expressions booléennes plus complexes. booléennes plus complexes.

5voto

Ted Points 11

Peut-être que c'est une évidence pour le professionnel de xslt, mais pour moi qui suis débutant/intermédiaire, cela m'a laissé perplexe. Je voulais faire exactement la même chose, mais je devais tester une valeur responsetime à partir d'un xml au lieu d'un simple nombre. En suivant ce fil de discussion, j'ai essayé ceci :

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

ce qui a généré une erreur. Cela fonctionne :

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

Je ne comprends pas vraiment pourquoi cela ne fonctionne pas sans number(), cependant. Serait-ce parce que sans number() la valeur est traitée comme une chaîne de caractères et qu'on ne peut pas comparer des nombres avec une chaîne de caractères ?

En tout cas, j'espère que cela évitera à quelqu'un de chercher...

2voto

Remus Stratulat Points 73

Selon msdn, vous pouvez le faire :

http://msdn.microsoft.com/en-us/library/ms256081%28VS.85%29.aspx

Il existe également d'autres excellentes ressources sur les conditions d'écriture :

http://www.xml.com/pub/a/2003/04/02/trxml.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X