在 XSLT 中比较字符串时,如何指定 "不等于"?
目前,我有一个 xsl,其中包含以下代码,我试图仅在不等于 N/A
时打印出 "count",但"!="
似乎不起作用。
<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">
谁能告诉我:如果我想比较字符串,可以用什么方法?
60
2
正如 Filburt 所说,但也要注意,通常最好写成
如果只有一个 Count 元素,它们的意思是一样的,但如果没有 Count 元素或有多个 Count 元素,它们的意思就不同了。
六年后
由于这个答案似乎很受欢迎,但对一些读者来说可能有点含糊不清,让我来扩展一下。
XPath 中的"="和"!="运算符可以比较两个值集。一般来说,如果 A 和 B 是值集,那么如果 A 和 B 中有任何一对值相等,"=" 返回 true,而如果有任何一对值不相等,"!=" 返回 true。
在常见的情况下,A 选择零或一节点,而 B 是一个常数(例如 "NA"),这意味着如果 A 不存在或其值不等于 "NA",
not(A = "NA")
返回 true。相反,如果 A 存在且不等于 "NA",A != "NA"
返回 true。通常,您希望将 "absent" 情况视为 "不等于",这意味着not(A = "NA")
是合适的表述。如果要与一个字符串字面进行比较,则需要将其放在(单)引号中: