首页 > 解决方案 > 如何在 XSLT 中检查 Parameter 的值为 null

问题描述

我想对 XML 进行检查并执行一些转换。下面是我用过的片段。

<xsl:param name="code" />

<xsl:if test="$code != ''">
<xsl:template match="partner/configuration/flags">
    <value><xsl:value-of select="$code"/></value>
</xsl:template>
  </xsl:if>

尝试使用 '!=' 进行条件检查并没有给出预期的结果。任何人都可以帮助解决这个错误吗?

标签: xmlxslt

解决方案


首先,你的代码没有意义,因为你不能xsl:templatexsl:if.

其次,在 XSLT/XPath 数据模型中不存在“null”之类的东西。您需要更清楚地解释您要测试的内容。返回空节点集的表达式?没有子节点的元素节点?其字符串值是零长度字符串的节点?在这种情况下,精度至关重要。

第三,如果您要使用“!=”,您需要准确理解它的含义。如果 A 是一个节点集(或在 2.0 中,一个序列),则A != ""如果 A 中有一个节点的值不是零长度字符串,则返回 true。如果 A 是空集,则表达式返回 false。大多数时候,你可能想要not(A="")而不是A!=""——它们的意思不同。


推荐阅读