如何在 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
是一个 函数 (不是运算符)。
我定义了以下变量:
<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
是一个 函数 (不是运算符)。