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

XSL脚本条件判断异常:节点不存在仍输出标签求助

XSL节点非空判断失效问题排查与解决

问题原因

你的判断条件not(Payee/RemitAdviceEmail='')存在逻辑漏洞。在XPath规则中:

  • 当Payee/RemitAdviceEmail节点不存在时,Payee/RemitAdviceEmail=''的比较结果为false(空节点集与空字符串不相等)
  • 因此not(false)返回true,触发<xsl:if>执行,最终输出了包含空<RmtLctnElctrncAdr>的<RltdRmtInf>结构。

解决方案

要实现“节点存在且文本非空才输出”的逻辑,需修正判断条件,以下两种方式均可:

方式1:显式判断节点存在+内容非空

直接同时校验节点存在和文本不为空:

<xsl:if test="Payee/RemitAdviceEmail and not(Payee/RemitAdviceEmail='')">

方式2:使用normalize-space()简化判断

normalize-space()函数会自动处理三种情况:节点不存在、文本为空、文本仅含空格,只要其中一种情况成立,函数返回false,否则返回true:

<xsl:if test="normalize-space(Payee/RemitAdviceEmail)">

修改后的完整代码示例

<xsl:if test="normalize-space(Payee/RemitAdviceEmail)">
<RltdRmtInf>
<RmtLctnMtd>
<xsl:text>EMAL</xsl:text>
</RmtLctnMtd>
<RmtLctnElctrncAdr>
<xsl:value-of select="Payee/RemitAdviceEmail"/>
</RmtLctnElctrncAdr>
</RltdRmtInf>
</xsl:if>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 06:43:27