Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add multiple test conditions in 'test' attribute expression of <xsl:if> tag

Tags:

xslt

xpath

Is there any possibility to include multiple conditions in 'test' attribute expression in <xsl:if> tag of XSLT like

<xsl:if test="$var='ab' | $var='bc' | $var='ca' "> </xsl:if> 

I am getting an error as "Expression must be evaluated to a node-set".

Is there any possibility to code such multiple conditions in <xsl:if> Tag?

Can anyone explain how can we achieve this multiple condition validation for the following tags in

<xsl:if> in test attribute expression

<xsl:for-each> in select attribute expression

<xsl:template> in match attribute expression

?

like image 982
User 4.5.5 Avatar asked May 10 '12 11:05

User 4.5.5


1 Answers

<xsl:if test="$var='ab' | $var='bc' | $var='ca' "> 

This is wrong -- you are using the XPath union operator | on boolean values.

Solution: use the XPath or operator:

<xsl:if test="$var='ab' or $var='bc' or $var='ca' "> 

The above XPath expression (the value of the test attribute) can be optimized, so that only one comparison is made and no or is necessary:

<xsl:if test="contains('|ab|bc|ca|', concat('|', $var, '|'))"> 
like image 169
Dimitre Novatchev Avatar answered Oct 08 '22 23:10

Dimitre Novatchev