当比较 XSLT < xsl: if > 中的字符串时,如何指定“ not equals to”?

目前,我有一个 xsl 与下面的代码,我试图打印出“计数”,只有当它不等于 N/A。但似乎 "!="不起作用。

<xsl:for-each select="Directory/Match">
<xsl:if test = "Count != N/A">
<tr>
<td><xsl:value-of select="@bookName" /></td>
<td><xsl:value-of select="@AuthorName" /></td>
<td><xsl:value-of select="Count" /></td>
</tr>
</xsl:if>
</xsl:for-each>

但是,如果我尝试将它与数值进行比较,它就可以工作。

例如:

<xsl:if test = "Occurrances != 0">

有人能告诉我: 如果我想比较字符串,我可以使用什么?

183946 次浏览

如果你想比较一个字符串文字,你需要把它放在(单)引号:

<xsl:if test="Count != 'N/A'">

正如费尔伯特所说,但也要注意,通常写作更好

test="not(Count = 'N/A')"

如果只有一个 Count 元素,它们的意思是相同的,但是如果没有 Count,或者有几个 Count,那么它们的意思就不同了。

6年后

由于这个答案似乎已经变得流行,但可能有点神秘的一些读者,让我扩大它。

“ =”和“”!XPath 中的 =”运算符可以比较两组值。一般来说,如果 A 和 B 是一组值,那么如果 A 和 B 中有任何一对值相等,则“ =”返回 true,而“ !”!=”如果有任何对不等则返回 true。

在一般情况下,A 选择0或1个节点,而 B 是一个常量(比如“ NA”) ,这意味着如果 A 不存在,或者其值不等于“ NA”,not(A = "NA")返回 true。相比之下,如果 A 存在且不等于“ NA”,则 A != "NA"返回 true。通常,您希望将“缺席”情况视为“不相等”,这意味着 not(A = "NA")是适当的表达式。