Est-ce juste pour When 4 <5 et 1 <2?
<xsl:when test="4 < 5 AND 1 < 2" >
<!-- do something -->
</xsl:when>
Pas tout à fait, l'AND doit être en minuscule.
<xsl:when test="4 < 5 and 1 < 2">
<!-- do something -->
</xsl:when>
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 < 5 and 1 < 2" >
<!-- do something -->
</xsl:when>
<xsl:otherwise>
<!-- do something else -->
</xsl:otherwise>
</xsl:choose>
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.
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 >= 5000 and responsetime/@value <= 8999">
qui a généré une erreur. Cela marche:
<xsl:when test="number(responsetime/@value) >= 5000 and number(responsetime/@value) <= 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 ...