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

XSL如何实现isnull逻辑:变量为空时隐藏对应标签并使用备用变量

XSLT实现空值判断切换输出标签的解决方案

你可以通过XSLT内置的条件判断语句实现该需求,核心是判断目标字段是否为有效值,按需输出对应的标签块。

方案1:二选一输出(仅显示身份证/护照其中一组)

符合你描述的「身份证号为空时完全隐藏对应标签,仅输出护照标签」的需求,使用<xsl:choose>实现分支判断:

<ExternalIdentifier>
  <!-- Id number -->
  <xsl:choose>
    <!-- normalize-space用于过滤全空格等空白无效值 -->
    <xsl:when test="normalize-space(idy_nbr) != ''">
      <TypeCode>IdentityDocumentId</TypeCode>
      <Id>
        <xsl:value-of select="idy_nbr"/>
      </Id>
    </xsl:when>
    <!-- 身份证号为空时走该分支输出护照信息 -->
    <xsl:otherwise>
      <TypeCode>Passport Number</TypeCode>
      <Id>
        <xsl:value-of select="ppo_nbr"/>
      </Id>
    </xsl:otherwise>
  </xsl:choose>
</ExternalIdentifier>

方案2:多值共存输出(身份证有值时同时显示两类信息)

如果需要身份证号存在时两类信息都展示,仅在身份证号为空时隐藏对应标签,使用<xsl:if>单独判断即可:

<ExternalIdentifier>
  <!-- Id number -->
  <xsl:if test="normalize-space(idy_nbr) != ''">
    <TypeCode>IdentityDocumentId</TypeCode>
    <Id>
      <xsl:value-of select="idy_nbr"/>
    </Id>
  </xsl:if>
  <TypeCode>Passport Number</TypeCode>
  <Id>
    <xsl:value-of select="ppo_nbr"/>
  </Id>
</ExternalIdentifier>

补充说明

  • normalize-space()函数会自动去除字段值前后的空格、换行等空白字符,避免仅含空白的无效值被误判为有值
  • 如果你使用XSLT 2.0及以上版本,也可以用empty(idy_nbr[normalize-space(.)!=''])来判断字段是否为空,语义更清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:36:02