2008-11-25 14 views

Répondre

187

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

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

De XML.com:

Comme xsl: si les instructions, xsl: when éléments peuvent avoir plus élaborés contenu entre leur début et de fin -tags, par exemple, littéral résultat éléments , xsl: éléments d'élément, ou même xsl: si et xsl: choisissez des éléments-à ajoutez à l'arborescence des résultats. Leurs expressions tests peuvent également utiliser tous les astuces et les opérateurs que le xsl: si l'attribut de test de l'élément peut utiliser, comme comme et, ou, et les appels de fonction, à build booléenne plus complexe expressions.

31

Il ne doit être enveloppé dans un < xsl: choose > car il est un quand. Et minuscules 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> 
4

Peut-être que cela est une évidence pour le xslt-professionnel, mais pour moi au niveau débutant/intermédiaire, cela m'a fait perplexe. Je voulais faire exactement la même chose, mais je devais tester une valeur responsetime à partir d'un xml au lieu d'un nombre simple. Suite à 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 fonctionne:

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

Ne pas vraiment comprendre pourquoi cela ne fonctionne pas sans nombre(), cependant. Serait-ce que sans nombre() la valeur est traitée comme une chaîne et vous ne pouvez pas comparer les nombres avec une chaîne?

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

Questions connexes