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

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:dayTimeDuration`s, or they must all be `xs:yearMonthDuration`s. 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.

No credit card required