web-dev-qa-db-fra.com

Pouvez-vous mettre deux conditions dans un attribut de test xslt?

Est-ce juste pour When 4 <5 et 1 <2?

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

Pas tout à fait, l'AND doit être en minuscule.

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

Il doit être encapsulé dans un <xsl: Choose> puisqu'il s'agit d'un moment. Et en minuscule le "et".

<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

De XML.com :

Comme xsl: if instructions, xsl: when les éléments peuvent avoir un contenu plus élaboré entre leurs balises de début et de fin (par exemple, les éléments de résultat littéraux, les éléments xsl: éléments ou même les éléments xsl: if et xsl: Choose), à ​​ajouter l'arbre de résultat. Leurs expressions de test peuvent également utiliser toutes les astuces et tous les opérateurs que l'attribut test de l'élément xsl: if peut utiliser, tels que et, ou, et les appels de fonction, pour créer des expressions booléennes plus complexes.

6
Harper Shelby

C’est peut-être une évidence pour les professionnels de xslt, mais pour moi, au niveau débutant/intermédiaire, cela m’a rendu perplexe. Je voulais faire exactement la même chose, mais je devais tester une valeur de réponse d'un xml au lieu d'un nombre simple. En suivant ce fil, j'ai essayé ceci:

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

qui a généré une erreur. Cela marche:

<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 nombre (), cependant. Se pourrait-il que sans nombre () la valeur soit traitée comme une chaîne et que vous ne puissiez pas comparer les nombres avec une chaîne?

Quoi qu'il en soit, espérons que cela épargnera beaucoup de recherche à quelqu'un ...

5
Ted