web-dev-qa-db-fra.com

Comment ajouter plusieurs conditions de test dans l'expression d'attribut 'test' de la balise <xsl: if>

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

?

28
User 4.5.5
<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, '|'))">
40

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>
3
Daniel Haley