Converts all nodes in the argument node-set to numbers, and then returns the sum of all of those numbers.


[1.0] number sum(node-set)
[2.0] xs:anyAtomicType sum(xs:anyAtomicType)
[2.0] xs:anyAtomicType sum(xs:anyAtomicType, $empty as xs:anyAtomicType)


[1.0] A node-set. Any node in the node-set that is not a number is converted to a number as if it were passed to the number() function, after which the numeric values of all of the nodes are summed.

[2.0] A sequence of atomic values, plus an optional value that is returned when the first argument to sum() is the empty sequence.


[1.0] The sum of the numeric values of all of the nodes in the argument node-set. If any node in the argument node-set cannot be converted to a number, the sum() function returns NaN.

[2.0] Given a sequence of numeric values, sum() returns the sum of those values. Given a sequence of durations, sum() returns the sum of those durations. As you’d expect from XSLT 2.0, there are some complications to consider:

  • To calculate the sum of a sequence of durations, the durations must all be xs:dayTimeDurations, or they must all be xs:yearMonthDurations. You can’t mix the two types of durations; if you do, the XSLT processor raises an error.

  • If any of the items in the sequence are of type xs:untypedAtomic, the XSLT processor attempts to cast it to xs:double. If it can’t be converted to an xs:double, the XSLT processor raises an error.

  • If you pass a nonempty sequence to sum() and the sum is 0, the function ...

Get XSLT, 2nd Edition now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.