我想使用 XSLT 合并两个本地名称不同的元素节点。
例如合并 file1.xml
<A>
<B>
<C>
<D>Value</D>
</C>
</B>
<G>
<C>
<H>Value</H>
</C>
</G>
</A>
使用 file2.xml
<A>
<E>
<C>
<F>Value</F>
</C>
</E>
</A>
获取输出 file3.xml
<A>
<B>
<C>
<D>Value</D>
<F>Value</F>
</C>
</B>
<G>
<C>
<H>Value</H>
<F>Value</F>
</C>
</G>
</A>
我基本上想将 E 视为通配符。这可能吗?如果是这样,您能否提供一些适用于此的 XSLT?我已经尝试了几个小时,似乎无法提出解决方案。
编辑:要求尝试...这个 XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="A">
<xsl:copy>
<xsl:apply-templates select="*"/>
<xsl:apply-templates select="document('file1.xml')/A/node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="C">
<xsl:copy>
<xsl:apply-templates select="*"/>
<xsl:apply-templates select="document('file1.xml')/A/./C/*" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
给出了这个输出:
<?xml version="1.0"?>
<A><E>
<C><F>Value</F></C>
</E>
<B>
<C><D>Value</D></C>
</B>
<G>
<C><H>Value</H></C>
</G>
</A>