You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用XSL将首个termVehicleHistory的coverageData复制到其他节点?

解决方法

核心思路是利用XSLT的身份转换模板复制XML的大部分结构,仅对termVehicleHistory节点做特殊处理:

  • 保留第一个termVehicleHistory的所有内容(包括自带的coverageData)
  • 对后续的termVehicleHistory,先复制原节点内的所有子节点,再将第一个termVehicleHistory下的所有coverageData节点追加进去

完整XSLT代码

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 身份转换模板:默认复制所有节点和属性 -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!-- 匹配第一个termVehicleHistory节点,直接保留原内容 -->
    <xsl:template match="termVehicleHistory[1]">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!-- 匹配后续的termVehicleHistory节点,追加第一个节点的coverageData -->
    <xsl:template match="termVehicleHistory[position() > 1]">
        <xsl:copy>
            <!-- 复制当前节点的原有子节点 -->
            <xsl:apply-templates select="@*|node()"/>
            <!-- 插入第一个termVehicleHistory下的所有coverageData -->
            <xsl:copy-of select="/root//termVehicleHistory[1]/coverageData"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

示例输入XML

<root>
    <termVehicleHistory>
        <vehicleInfo>Car 1</vehicleInfo>
        <coverageData>
            <coverageType>Collision</coverageType>
            <limit>100000</limit>
        </coverageData>
        <coverageData>
            <coverageType>Comprehensive</coverageType>
            <limit>50000</limit>
        </coverageData>
    </termVehicleHistory>
    <termVehicleHistory>
        <vehicleInfo>Car 2</vehicleInfo>
    </termVehicleHistory>
    <termVehicleHistory>
        <vehicleInfo>Car 3</vehicleInfo>
    </termVehicleHistory>
</root>

预期输出XML

<root>
    <termVehicleHistory>
        <vehicleInfo>Car 1</vehicleInfo>
        <coverageData>
            <coverageType>Collision</coverageType>
            <limit>100000</limit>
        </coverageData>
        <coverageData>
            <coverageType>Comprehensive</coverageType>
            <limit>50000</limit>
        </coverageData>
    </termVehicleHistory>
    <termVehicleHistory>
        <vehicleInfo>Car 2</vehicleInfo>
        <coverageData>
            <coverageType>Collision</coverageType>
            <limit>100000</limit>
        </coverageData>
        <coverageData>
            <coverageType>Comprehensive</coverageType>
            <limit>50000</limit>
        </coverageData>
    </termVehicleHistory>
    <termVehicleHistory>
        <vehicleInfo>Car 3</vehicleInfo>
        <coverageData>
            <coverageType>Collision</coverageType>
            <limit>100000</limit>
        </coverageData>
        <coverageData>
            <coverageType>Comprehensive</coverageType>
            <limit>50000</limit>
        </coverageData>
    </termVehicleHistory>
</root>

内容的提问来源于stack exchange,提问作者user6186585

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:42:46