Numbers
There are no pure integers in XPath. All numbers are
8-byte, IEEE 754 floating-point doubles, even if they don’t have an
explicit decimal point. This format is identical to Java’s double primitive type. In addition to
representing floating-point numbers ranging from
4.94065645841246544e-324 to 1.79769313486231570e+308 (positive or
negative) and 0, this type includes special representations of
positive and negative infinity and a special not a number (NaN)
value used as the result of operations like dividing zero by
zero.
XPath provides the five basic arithmetic operators that will be familiar to any programmer:
| + Addition |
| - Subtraction |
| * Multiplication |
div Division |
mod Taking the
remainder |
The more common forward slash couldn’t be used for division
because it’s already used to separate location steps in a location
path. Consequently, a new operator had to be chosen, div. The word mod was chosen instead of the more common
% operator to calculate the
remainder. Aside from these minor differences in syntax, all five
operators behave exactly as they do in Java. For instance, 2+2 is 4,
6.5 div 1.5 is 4.33333333, 6.5 mod 1.5 is 0.5, and so on. The
element <xsl:value-of select="6*7"/> inserts the string
42 into the output tree when the
template is instantiated. More often, a stylesheet performs some
simple arithmetic on numbers read from the input document. For
instance, this template rule calculates the century in which a
person was born:
<xsl:template match="person"> <century> <xsl:value-of ...