Declaring a xsl variable and assigning value to it
No, unlike in a lot of other languages, XSLT variables cannot change their values after they are created. You can however, avoid extraneous code with a technique like this:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> <xsl:variable name="mapping"> <item key="1" v1="A" v2="B" /> <item key="2" v1="X" v2="Y" /> </xsl:variable> <xsl:variable name="mappingNode" select="document('')//xsl:variable[@name = 'mapping']" /> <xsl:template match="...."> <xsl:variable name="testVariable" select="'1'" /> <xsl:variable name="values" select="$mappingNode/item[@key = $testVariable]" /> <xsl:variable name="variable1" select="$values/@v1" /> <xsl:variable name="variable2" select="$values/@v2" /> </xsl:template></xsl:stylesheet>
In fact, once you've got the values
variable, you may not even need separate variable1
and variable2
variables. You could just use $values/@v1
and $values/@v2
instead.