Я пытаюсь создать xsl, который будет копировать file1, искать file2 для соответствующего узла file1 и изменять атрибут этого узла на значение file2. Я изо всех сил, чтобы получить приведенный ниже код для работы. Он правильно преобразовывает первый узел, но на втором узле он использует ранее найденный атрибут.
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="no" indent="yes"/>
<xsl:param name="fileName" select="'file2'" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="stylesheet/variable">
<xsl:for-each select=".">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:if test="document($fileName)/stylesheet/variable[@name = @name]">
<xsl:attribute name="value">
<xsl:value-of select="document($fileName)/stylesheet/variable[@name = @name]/@select"/>
</xsl:attribute>
</xsl:if>
</xsl:copy>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Вот файл xml, который я пытаюсь объединить в один файл
<!--File1 xml -->
<stylesheet>
<variable name="Test" />
<variable name="Test2" select="'yy'"/>
<variable name="Test3" select="'xx'"/>
</sytlesheet>
<!--File2 xml -->
<stylesheet>
<variable name="Test" select="'x'" />
<variable name="Test2" select="'y'" />
</sytlesheet>
Есть идеи, где я иду не так?