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

如何在XSLT 1.0中用"/"分隔符拼接多个节点值?

解决方案:用XSLT合并多个value节点为带分隔符的文本

针对你需要将多个<value>节点的内容用/分隔并包裹到<g:color>标签的需求,这里提供两种适配不同XSLT版本的实现方式:

方法1:XSLT 2.0+(推荐,更简洁)

直接使用<xsl:value-of>的separator属性,无需手动遍历:

<g:color>
  <xsl:value-of select="parameter[@name='color']/value" separator="/"/>
</g:color>

这个方法会自动把所有value节点的文本用/拼接,不管节点数量是1个还是多个,都能正确输出。

方法2:XSLT 1.0(兼容旧版本环境)

如果你的环境只能用XSLT 1.0,可以通过<xsl:for-each>结合position()判断来避免最后一个节点后多加分隔符:

<g:color>
  <xsl:for-each select="parameter[@name='color']/value">
    <xsl:value-of select="."/>
    <!-- 只有当前节点不是最后一个时,才输出分隔符 -->
    <xsl:if test="position() != last()">
      <xsl:text>/</xsl:text>
    </xsl:if>
  </xsl:for-each>
</g:color>

你之前遇到的错误大概率是没有判断节点位置,直接在每个value后都加了/,导致最后多出来一个分隔符,或者语法写错(比如<xsl:text>的闭合问题)。上面的代码通过position() != last()的判断,只会在非最后一个节点后输出/,完全符合需求。

测试示例

输入XML:

<parameter name='color'>
   <value>black</value>
   <value>white</value>
   <value>gray</value>
</parameter>

输出结果:

<g:color>black/white/gray</g:color>

如果只有一个value节点,输出会是<g:color>black</g:color>,不会出现多余的分隔符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:52:41