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

使用XSL对带field name属性的XML记录进行分组

我来帮你搞定这个从Taleo导出XML中提取指定字段并生成分组XML的需求~

从Taleo XML中提取字段并生成分组XML的实现方案

核心思路

你已经明确了通过field元素的name属性定位字段的方式(比如select="field[@name='EmployeeEmployeeID']"),结合补充的Score字段,我们可以用XSLT来实现提取和分组的需求,这是处理XML结构转换最直接高效的方式。

具体步骤示例

1. 先明确目标提取字段

假设你需要提取的核心字段包括:

  • EmployeeEmployeeID(作为分组依据)
  • Score(新增字段)
  • 其他业务字段(比如EmployeeName、Department等,可按需添加)

2. 编写XSLT转换脚本

下面是一个基础的XSLT示例,会提取指定字段并按EmployeeEmployeeID完成分组(你可以根据实际分组需求调整规则):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:taleo="http://www.taleo.com/ws/integration/toolkit/2005/07">
  <xsl:output method="xml" indent="yes" encoding="UTF-8"/>

  <!-- 定义分组键:以EmployeeEmployeeID的值作为分组依据 -->
  <xsl:key name="employeeGroupKey" match="taleo:Record" use="taleo:field[@name='EmployeeEmployeeID']"/>

  <xsl:template match="/">
    <GroupedEmployeeData>
      <!-- 遍历每个唯一的EmployeeEmployeeID分组 -->
      <xsl:for-each select="taleo:ExportXML/taleo:Record[count(. | key('employeeGroupKey', taleo:field[@name='EmployeeEmployeeID'])[1]) = 1]">
        <EmployeeGroup>
          <EmployeeID>
            <xsl:value-of select="taleo:field[@name='EmployeeEmployeeID']"/>
          </EmployeeID>
          <!-- 提取当前分组下的Score字段 -->
          <xsl:for-each select="key('employeeGroupKey', taleo:field[@name='EmployeeEmployeeID'])/taleo:field[@name='Score']">
            <ScoreValue>
              <xsl:value-of select="."/>
            </ScoreValue>
          </xsl:for-each>
          <!-- 可继续添加其他需要提取的字段 -->
          <EmployeeName>
            <xsl:value-of select="taleo:field[@name='EmployeeName']"/>
          </EmployeeName>
        </EmployeeGroup>
      </xsl:for-each>
    </GroupedEmployeeData>
  </xsl:template>
</xsl:stylesheet>

3. 关键细节说明

  • 原XML带有默认命名空间http://www.taleo.com/ws/integration/toolkit/2005/07,所以XSLT中必须定义对应的命名空间前缀(比如示例中的taleo:),否则无法正确匹配XML元素。
  • 如果你需要按其他字段分组,只需要修改xsl:key的use属性,以及后续的分组选择逻辑即可。
  • 输出XML的结构可以完全自定义,比如调整嵌套层级、字段标签名等,适配你的业务需求。

4. 执行转换的方式

你可以用任意支持XSLT的工具来执行转换:

  • 命令行工具:比如Linux/macOS下的xsltproc,Windows下的msxsl
  • 代码实现:比如Java的TransformerFactory、Python的lxml库

举个Python用lxml执行转换的示例:

from lxml import etree

# 加载输入XML和XSLT脚本
xml_input = etree.parse("your_taleo_export.xml")
xslt_transform = etree.parse("your_transform.xsl")

# 创建转换器并执行转换
transformer = etree.XSLT(xslt_transform)
result_xml = transformer(xml_input)

# 保存分组后的XML输出
with open("grouped_output.xml", "wb") as output_file:
    output_file.write(result_xml)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:53:03