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?
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.
I would probably check for not(starts-with(substring-after(link, '://'), 'www.msdn.com')) , to make the match unambiguous. You could do add something like count(blog[not(contains(following-sibling::link, 'msdn'))]) to get the number of matching blog nodes and use an xsl:choose for the different sections.
!= path-expression value is not equal to literal . A string or number used to compare against the path-expression node or attribute value. Enclose the string in single or double quotation marks.
The <xsl:if> Element To put a conditional if test against the content of the XML file, add an <xsl:if> element to the XSL document.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With