Ответ 1
Нет, в отличие от многих других языков, переменные XSLT не могут изменять свои значения после их создания. Однако вы можете избежать постороннего кода с помощью такой техники:
<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>
Фактически, если у вас есть переменная values
, вам могут даже не понадобиться отдельные переменные variable1
и variable2
. Вместо этого вы можете использовать $values/@v1
и $values/@v2
.