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

XSLT新手求助:如何将基于fieldName字段的重复record节点转换为独立字段

解决XSLT将重复record节点转为独立字段的问题

嘿,作为XSLT新手遇到这种需求太正常了,我给你写个简单易懂的方案,一步步来拆解:

你的输入XML

<root>
  <record>
    <fieldName>B</fieldName>
    <fieldValue>apple</fieldValue>
  </record>
  <record>
    <fieldName>A</fieldName>
    <fieldValue>mango</fieldValue>
  </record>
  <record>
    <fieldName>C</fieldName>
    <fieldValue>orange</fieldValue>
  </record>
</root>

对应的XSLT代码

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- 匹配根节点,作为转换入口 -->
  <xsl:template match="/root">
    <root>
      <!-- 遍历所有record节点逐个处理 -->
      <xsl:for-each select="record">
        <!-- 动态生成以fieldName值为标签的元素 -->
        <xsl:element name="{fieldName}">
          <!-- 填入对应的fieldValue内容 -->
          <xsl:value-of select="fieldValue"/>
        </xsl:element>
      </xsl:for-each>
    </root>
  </xsl:template>
</xsl:stylesheet>

输出结果(和你期望的完全一致)

<root>
  <B>apple</B>
  <A>mango</A>
  <C>orange</C>
</root>

关键逻辑解释

  • <xsl:template match="/root">:指定从根节点<root>开始处理,是整个转换的起点。
  • <xsl:for-each select="record">:循环遍历根节点下的每一个<record>,确保每个字段都被处理。
  • <xsl:element name="{fieldName}">:这是核心!用{}这种属性值模板语法,把当前record里的<fieldName>值直接作为新元素的标签名,实现动态创建元素。
  • <xsl:value-of select="fieldValue"/>:把对应record里的<fieldValue>内容提取出来,作为新元素的文本内容。

这个写法是XSLT 1.0版本的,兼容性拉满,适合大部分只支持基础XSLT的应用。如果你的工具支持2.0+,还能简化,但这个版本足够解决你的问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:12:48