Skip to main content
XMLDir

Search 169 pages — formats, namespaces, parser messages, schema errors and tools.

XPath function

sum()

Adds the numeric values of every node in a set. One non-numeric node makes the whole result NaN.

sum() converts each node in the set to a number and adds them. It is the only aggregate in XPath 1.0 — there is no avg(), min() or max().

Conversion is strict: a node whose string-value is not a number becomes NaN, and NaN plus anything is NaN. A single stray value therefore destroys the entire total rather than being skipped.

Syntax
sum(node-set) → number
Returns
number
Kind
Function
Version
XPath 1.0 (libxml2)

Worked examples

Each result below is what the evaluator returned, asserted on every test run. An empty result means an empty node-set — which is an answer, not an error.

  • sum(//price)on order.xmlRun
    53.5
  • sum(//line/@qty)on order.xmlRun
    4
  • sum(//line[contains(@sku,'WIDGET')]/price)on order.xmlRun
    53.5

Run your own expression

What catches people out

  • One non-numeric node makes the result NaN, with no indication which node caused it.
  • Currency symbols, thousands separators and whitespace all make a value non-numeric. Use translate() to strip them first.
  • There is no avg() — divide sum() by count().

The sample documents

Every example on this page runs against this document. The sitemap one is namespaced on purpose — almost every real XML document is, and that changes which expressions match.

order.xml
<?xml version="1.0" encoding="UTF-8"?>
<order id="A-1001" tier="gold">
  <customer country="NO">Ada Lovelace</customer>
  <lines>
    <line sku="WIDGET-1" qty="2"><price>14.50</price></line>
    <line sku="WIDGET-2" qty="1"><price>39.00</price></line>
    <line sku="GIFT-WRAP" qty="1"><price>0.00</price></line>
  </lines>
  <note>  Deliver after 09:00  </note>
</order>

Related

All 34 XPath entries

Get started

Bring order to the XML your team can't afford to ignore.

Create a free account and get a private workspace to search, validate, diff, and monitor your XML feeds, sitemaps, schemas, and vendor integrations.