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

XSLT按External Payroll Code汇总peci:Units值的需求

解决方案:用XSLT汇总XML中指定Payroll Code的Units值

要解决这个问题,我们可以用XSLT来处理你的XML数据,按员工ID和Addtl_TO_Unpaid这个External Payroll Code分组,汇总对应的Units数值,输出合并后的单行结果。

下面是完整的XSLT代码:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:peci="urn:com.workday/peci">
    <xsl:output method="text" encoding="UTF-8"/>
    
    <!-- 创建分组键:按员工ID + External_Payroll_Code组合 -->
    <xsl:key name="payrollGroup" match="peci:Time_Off_Earnings_and_Deductions[peci:External_Payroll_Code='Addtl_TO_Unpaid']"
             use="concat(../../peci:Worker_Summary/peci:Employee_ID, '|', peci:External_Payroll_Code)"/>

    <xsl:template match="/">
        <!-- 遍历所有唯一的分组 -->
        <xsl:for-each select="peci:Workers_Effective_Stack/peci:Worker/peci:Effective_Change/peci:Time_Off_Earnings_and_Deductions[peci:External_Payroll_Code='Addtl_TO_Unpaid']
                              [generate-id() = generate-id(key('payrollGroup', concat(../../peci:Worker_Summary/peci:Employee_ID, '|', peci:External_Payroll_Code))[1])]">
            <!-- 获取员工ID -->
            <xsl:value-of select="../../peci:Worker_Summary/peci:Employee_ID"/>
            <xsl:text> </xsl:text>
            <!-- 获取Payroll Code -->
            <xsl:value-of select="peci:External_Payroll_Code"/>
            <xsl:text> </xsl:text>
            <!-- 汇总该分组下的所有Units值 -->
            <xsl:value-of select="sum(key('payrollGroup', concat(../../peci:Worker_Summary/peci:Employee_ID, '|', peci:External_Payroll_Code))/peci:Time_Off_Entry/peci:Units)"/>
            <xsl:text>&#10;</xsl:text> <!-- 换行 -->
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

代码关键说明:

  • 命名空间同步:原XML使用了peci命名空间,XSLT必须同步声明才能正确匹配所有节点。
  • 分组逻辑:通过<xsl:key>将同一个员工、同一个目标Payroll Code的所有记录绑定为一组,避免重复处理。
  • 去重遍历:用generate-id()判断当前节点是否为分组的首个节点,确保每个分组只输出一行结果。
  • 数值汇总:使用sum()函数对分组内所有peci:Units的值求和,得到最终的汇总总数。

将你的XML与上述XSLT配合处理后,会得到正确的单行输出:

412548 Addtl_TO_Unpaid 4

(注:你的示例XML里有4个Units值为1的节点,总和应为4,推测你之前的期望输出是笔误~)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:38:36