0

我想使用 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>
4

0 回答 0