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

XML XSLT转换:将子节点地址元素归组到Address父节点

解决方案:批量将child节点内的地址元素包裹到Address父节点

以下是实现需求的XSLT代码,它会保留原XML的所有结构,仅对每个child节点内的地址相关元素进行重组:

<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>

    <!-- 处理child节点的自定义模板 -->
    <xsl:template match="child">
        <xsl:copy>
            <!-- 先复制child下所有非地址类型的子元素 -->
            <xsl:apply-templates select="*[not(local-name()='AddressLine1' or local-name()='AddressLine2' or local-name()='City' or local-name()='Postcode')]"/>
            
            <!-- 创建Address父节点,并将所有地址元素移入 -->
            <Address>
                <xsl:apply-templates select="AddressLine1 | AddressLine2 | City | Postcode"/>
            </Address>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

代码说明

  1. 身份模板:作为基础规则,会原样复制XML中所有未被自定义模板匹配的节点、属性和文本,保证原结构(如root、id、name以及child下的a/b/c元素)完全保留。
  2. child节点模板:
    • 先复制child下所有不属于地址范畴的子元素(即排除AddressLine1、AddressLine2、City、Postcode);
    • 生成<Address>父节点,再将child下的四个地址元素复制到该节点内部,完成重组。
  3. 批量处理支持:模板会匹配XML中所有的child节点,不管数量多少,都会逐个处理。

验证效果

将上述XSLT与你提供的原XML结合转换后,会生成你预期的目标XML结构,每个child内的地址元素都会被正确包裹到<Address>节点中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 03:16:04