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

时间:2012-05-10 13:19:44

标签: xslt

目前我有一个带有以下代码的xsl,我正在尝试打印出“count”,只要它不等于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">

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

2 个答案:

答案 0 :(得分:80)

正如Filburt所说;但另请注意,编写

通常会更好
test="not(Count = 'N/A')"

如果只有一个Count元素,它们的意思相同,但如果没有Count,或者有几个,则意义不同。

6年后

由于这个答案似乎已经变得流行,但对某些读者来说可能有点神秘,让我扩展它。

XPath中的“=”和“!=”运算符可以比较两组值。通常,如果A和B是值集,那么如果A和B中的任何一对值相等,则“=”返回true,而如果存在任何不相等的对,则“!=”返回true。 / p>

在A选择零或一个节点并且B是常量(比如“NA”)的常见情况下,这意味着如果A不存在或者值不是,则not(A = "NA")返回true等于“NA”。相反,如果A存在且不等于“NA”,则A != "NA"返回true。通常,您希望将“缺席”案例视为“不相等”,这意味着not(A = "NA")是适当的表述。

答案 1 :(得分:32)

如果要与字符串文字进行比较,则需要将其放入(单个)引号中:

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