O'Reilly logo

XSLT, 2nd Edition by Doug Tidwell

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Name

sum()

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

Syntax

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

Inputs

[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.

Output

[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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required