How to get the modulus of a number in XPath/XSLT?
Question
I want to calculate the modulus of a number in the XPath, but this is not working:
<xsl:if test="(count()%8)">
How would I do it? I Looked at the XPath function reference here, but didn't see anything like that.
Solution
try "mod"
see http://www.w3.org/TR/xpath#numbers
Details from that link:
The mod operator returns the remainder from a truncating division. For example,
5 mod 2 returns 1
5 mod -2 returns 1
-5 mod 2 returns -1
-5 mod -2 returns -1
NOTE: This is the same as the % operator in Java and ECMAScript.
OTHER TIPS
Try
<xsl:if test="(count() mod 8)">
as in XSL you have to use "mod" to get modulus
Also watch out when doing addition/subtraction. When doing addition all should be good with $var1+$var2. But in Subtraction, since a dash (-) is valid in a variable name $var1-$var2 does not work. But $var1 - $var2 should, and number($var1) - number($var2) always should work and you can see an article I wrote about in relation to the use of XPATH in Novell's Identity Manager product.