Est-il possible d'inclure plusieurs conditions dans l'expression d'attribut 'test' dans <xsl:if>
tag de XSLT comme
<xsl:if test="$var='ab' | $var='bc' | $var='ca' ">
</xsl:if>
J'obtiens une erreur car "l'expression doit être évaluée dans un ensemble de nœuds".
Existe-t-il une possibilité de coder ces conditions multiples dans <xsl:if>
Tag?
Quelqu'un peut-il expliquer comment réaliser cette validation de conditions multiples pour les balises suivantes dans
<xsl:if>
dans l'expression d'attribut de test
<xsl:for-each>
dans l'expression d'attribut sélectionnée
<xsl:template>
dans l'expression d'attribut de correspondance
?
<xsl:if test="$var='ab' | $var='bc' | $var='ca' ">
C'est faux - vous utilisez l'opérateur XPath union |
sur les valeurs booléennes.
Solution: utilisez l'opérateur XPath or
:
<xsl:if test="$var='ab' or $var='bc' or $var='ca' ">
L'expression XPath ci-dessus (la valeur de l'attribut test
) peut être optimisée, de sorte qu'une seule comparaison est effectuée et qu'aucune or
n'est nécessaire:
<xsl:if test="contains('|ab|bc|ca|', concat('|', $var, '|'))">
Dans XSLT 2.0 ou supérieur, vous pouvez tester une séquence de chaînes:
<xsl:if test="$var=('ab','bc','ca')">...</xsl:if>