You cannot change variables in XSLT.
You need to think of it more as functional programming instead of procedural, because XSLT is a functional language. Think of a variable scope in something like this pseudocode:
variable temp = 5 call function other() print temp define function other() variable temp = 10 print temp
What do you expect from the withdrawal? It should be 10 5 , not 10 10 , because temp inside the other function is not the same variable as temp outside this function.
This is the same in XSLT. The variables created after this cannot be overridden, because they are write-once, read-many variables by design.
If you want to make a conditional conditional value of a variable, you need to conditionally define the variable:
<xsl:variable name="temp"> <xsl:choose> <xsl:when test="not(tourcode = 'a')"> <xsl:text>b</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>a</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:if test="$temp = 'b'"> </xsl:if>
A variable is defined only in one place, but its value is conditional. Now that temp , it cannot be redefined later. In functional programming, variables are more like read-only parameters because they can be set, but cannot be changed later. You must understand this correctly in order to use variables in any functional programming language.
Welbog
source share