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

如何基于公共键字段拼接不同XML节点中的字段?

按员工姓名合并城市字段

源XML结构

<Employees>
<Employee>
<Name>ABC</Name>
<City>Delhi</City>
</Employee>
<Employee>
<Name>ABC</Name>
<City>Mumbai</City>
</Employee>
<Employee>
<Name>KBC</Name>
<City>Kolkata</City>
</Employee>
</Employees>

注:原XML中存在标签闭合错误(</Delhi>应为</City>),已修正以保证XML有效性

现有XSLT代码

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="/root">
    <Employees> 
        <xsl:for-each-group select="row" group-starting-with="row[Name/text()]">
            <Employee>  
                <FIELD7>
                    <xsl:value-of select="City" separator="|"/>
                </FIELD7> 
            </Employee>
        </xsl:for-each-group>
    </Employees> 
</xsl:template>

</xsl:stylesheet>

预期输出

<Employees>
<Employee>
<Name>ABC</Name>
<City>Delhi|Mumbai</City>
</Employee>
<Employee>
<Name>KBC</Name>
<City>Kolkata</City>
</Employee>
</Employees>

修正后的XSLT方案

现有代码存在多处问题:匹配的根节点与源XML不符、分组逻辑错误、输出结构不符合预期,且separator是XSLT 2.0及以上版本特性,需指定对应版本。以下是正确实现:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

    <xsl:template match="/Employees">
        <Employees>
            <!-- 按Name字段分组 -->
            <xsl:for-each-group select="Employee" group-by="Name">
                <Employee>
                    <Name>
                        <xsl:value-of select="current-grouping-key()"/>
                    </Name>
                    <City>
                        <!-- 拼接当前组内所有City的值 -->
                        <xsl:value-of select="current-group()/City" separator="|"/>
                    </City>
                </Employee>
            </xsl:for-each-group>
        </Employees>
    </xsl:template>
</xsl:stylesheet>

关键说明

  1. 声明XSLT版本为2.0,确保separator特性正常生效
  2. 匹配源XML的根节点<Employees>,保证遍历路径正确
  3. 使用xsl:for-each-group按Name字段分组,current-grouping-key()获取当前组的姓名标识
  4. 通过current-group()获取当前组内所有<Employee>节点,提取<City>值并用|拼接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 04:35:55