如何指定“不等于”比较时串在XSLT ?(How do I specify “not equa

2019-06-24 07:38发布

目前,我有下面的代码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">

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

Answer 1:

作为Filburt说; 还要注意,通常最好写

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

如果有一个准确计数元素,他们的意思是一样的东西,但如果没有计数,或者如果有好几种,那么意义是不同的。

6年后

由于这个答案似乎已经成为流行,但可能是一个有点神秘一些读者,让我展开它。

该“=”和“!=”运算符的XPath可以比较两组值。 一般情况下,如果A和B是值的集合,则“=”,如果有任何一对从A是相等的值和B的,而“!=”如果有任何一对不相等,则返回true,则返回true。

在通常情况下,其中A选择零或一节点,和B是一个常数(比如说“NA”),这意味着not(A = "NA")如果A为无返回true,或具有值不等于“NA”。 相比之下, A != "NA"如果A存在并且不等于“NA”返回true。 通常你想要的“不存在”的情况下为“不相等”,这意味着被处理not(A = "NA")是合适的制剂。



Answer 2:

如果你要比较一个字符串,你需要把它放在(单)报价:

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


文章来源: How do I specify “not equals to” when comparing strings in an XSLT ?
标签: xslt