如何在 XSLT 中检查变量是 Null 还是空?

How to check if variable is Null or empty in XSLT?

我定义了以下变量:

<xsl:variable name="pica036E"
                        select="recordData/record/datafield[@tag='036E']" />
<xsl:variable name="pica036F"
                        select="recordData/record/datafield[@tag='036F']" />

现在我需要做一个条件,如果变量 pica036E 不为空且 pica036F 为空则显示以下消息,否则显示另一条消息。 那是我的代码,但我没有得到任何输出。 "null or empty"定义正确吗?

<xsl:choose>
                        <xsl:when test="$pica036E != '' and $pica036F = ''">
                        <xsl:message>
                         036F no 036E yes      
                            </xsl:message>
                        </xsl:when>

                         <xsl:otherwise>
                        <xsl:message>
                                036E no 036F yes
                            </xsl:message>  
                        </xsl:otherwise> 
                    </xsl:choose>  

检查以下代码。我认为你的输出得到

<xsl:when test="not($pica036E = '') and $pica036F = ''">

在 XPath 中,X=Y 表示(如果 X 中的某对 x,Y 中的 y 满足 x = y),而 X != Y 表示(如果 X 中的某对 x,Y 中的 y 满足 x != y).

这意味着如果 X 或 Y 是空序列,则 X=Y 和 X!=Y 都是假的。

例如,$pica036E != '' 测试 $pica036E 中是否存在非零长度字符串的值。如果 $pica036E 中没有值,则没有满足此条件的值。

因此,在 XPath 中使用 != 总是一种代码味道。通常,您应该写成 not(X = Y).

而不是 X != Y

在 XSLT 中,具有文本内容的变量也可以用作布尔变量。 非空内容表示true,空内容表示false.

所以条件也可以写成:

<xsl:when test="$pica036E and not($pica036F)">

请记住 not 是一个 函数 (不是运算符)。