Я разработал, как объединить два файла XML и изменить соответствующий атрибут.
Сейчас я пытаюсь решить, как добавить узел file2 (на основе имени атрибута), если он это делает не существует в file1
!--File1 xml -->
<stylesheet>
<variable name="Test1" />
<variable name="Test2" select="'yy'"/>
<variable name="Test3" select="'xx'"/>
</sytlesheet>
<!--File2 xml -->
<stylesheet>
<variable name="Test" select="'x'" />
<variable name="Test2" select="'y'" />
<variable name="Test3" select="'z'" />
<variable name="Test4" select="'dd'" />
</sytlesheet>
<!--Expected xml result-->
<stylesheet>
<variable name="Test1" />
<variable name="Test" select="'x'" />
<variable name="Test2" select="'y'" />
<variable name="Test3" select="'z'" />
<variable name="Test4" select="'dd'" />
</sytlesheet>
Вот файл xsl, который у меня есть:
<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:copy>
<xsl:apply-templates select="@*" />
<xsl:if test="document($fileName)/stylesheet/variable[@name = current()/@name]">
<xsl:attribute name="value">
<xsl:value-of select="document($fileName)/stylesheet/variable[@name = current()/@name]/@select"/>
</xsl:attribute>
</xsl:if>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Я нашел Как объединить два xml файла с XSLT , но не смог понять, как применить предложенное решение к моему xsl. Кто-нибудь может помочь?