How do I specify "not equals to" when comparing strings in an XSLT <xsl:if>?
xpath, xslt
Solution
As Filburt says; but also note that it's usually better to write
test="not(Count = 'N/A')"
If there's exactly one Count element they mean the same thing, but if there's no Count, or if there are several, then the meanings are different.
6 YEARS LATER
Since this answer seems to have become popular, but may be a little cryptic to some readers, let me expand it.
The "=" and "!=" operator in XPath can compare two sets of values. In general, if A and B are sets of values, then "=" returns true if there is any pair of values from A and B that are equal, while "!=" returns true if there is any pair that are unequal.
In the common case where A selects zero-or-one nodes, and B is a constant (say "NA"), this means that `not(A = "NA")` returns true if A is either absent, or has a value not equal to "NA". By contrast, `A != "NA"` returns true if A is present and not equal to "NA". Usually you want the "absent" case to be treated as "not equal", which means that `not(A = "NA")` is the appropriate formulation.
Problem
Currently i have a xsl with following code where I'm trying print out "count" only if it is not equal to `N/A`. but seems like `"!="` is not working. ``` <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> ``` However, it works if I try to compare it with numeric value. Example: ``` <xsl:if test = "Occurrances != 0"> ``` Can someone please tell me: If I would like to compare strings what can I use?