XSLT 2.0:
<xsl:key name="el-by-name" match="Root/*" use="node-name(.)"/>
<xsl:variable name="xml1" select="document('file1.xml')"/>
<xsl:variable name="xml2" select="document('file2.xml')"/>
<xsl:copy-of select="$xml2/Root/*[not(key('el-by-name', node-name(.), $xml1))]"/>
使用 XSLT 1.0:
<xsl:key name="el-by-name" match="Root/*" use="name()"/>
<xsl:variable name="xml1" select="document('file1.xml')"/>
<xsl:variable name="xml2" select="document('file2.xml')"/>
<xsl:for-each select="$xml2/Root/*">
<xsl:variable name="child" select="."/>
<xsl:for-each select="$xml1">
<xsl:if test="not(key('el-by-name', name($child)))">
<xsl:copy-of select="$child"/>
</xsl:if>
</xsl:for-each>
</xsl:for-each>