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

XSLT如何为有效输出变量加括号且空值不输出空括号

实现方案

你可以通过添加节点存在性判断来避免输出空括号,以下是两种常用实现方式:

1. XSLT 1.0/2.0 通用写法(适用于所有版本)

使用xsl:if先判断目标节点存在且值非空,再输出带括号的内容:

<xsl:if test="sbf[@cd = 'a'] and normalize-space(sbf[@cd = 'a']) != ''">
  <xsl:text>(</xsl:text>
  <xsl:value-of select="sbf[@cd = 'a']"/>
  <xsl:text>)</xsl:text>
  <!-- 可选:如果需要多个值之间加空格,可在后面补<xsl:text> </xsl:text> -->
</xsl:if>

2. XPath 2.0及以上简化写法

可以直接在属性值模板中嵌入条件表达式,写法更简洁:

{if (exists(sbf[@cd = 'a']) and normalize-space(sbf[@cd = 'a']) != '') then concat('(', sbf[@cd = 'a'], ')') else ''}

如果不需要严格校验空格,仅判断节点是否存在,可以简化为:

{if (sbf[@cd = 'a']) then concat('(', sbf[@cd = 'a'], ')') else ''}

原写法问题说明

你原来的({sbf[@cd = 'a']})写法是固定输出左右括号,仅中间内容动态填充,当目标节点不存在时中间内容为空,自然就会输出空括号。加上判断逻辑后,只有节点有有效值时才会输出整段带括号的内容,即可符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:06:04