К сожалению, прямого пути нет, переменные XSL назначаются только один раз, но их можно назначить условно.
Однако переменные, определенные в блоке, доступны только этому блоку и его дочерним элементам, возможно, вместо этого будет работать ваша логика и делать это итеративно?
Таким образом, вы не можете обрабатывать вещи, которые уже были преобразованы, так как они уже завершены.
Посмотрите, как используются xsl: Key и xsl: for-each, это позволит вам упорядочить преобразуемые вами узлы.
Цитировать из w3schools, используя этот XML:
<persons>
<person name="Tarzan" id="050676"/>
<person name="Donald" id="070754"/>
<person name="Dolly" id="231256"/>
</persons>
А это XSL:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="preg" match="person" use="@id"/>
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="key('preg','050676')">
<p>
Id: <xsl:value-of select="@id"/><br />
Name: <xsl:value-of select="@name"/>
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Найдет человека с идентификатором «050676».
Возможно, использование этого метода с более определенным ключом даст вам необходимую структуру?