sum

A soma dos valores de uma sequência

Descrição

A função fn:sum soma os valores de uma sequência. A sequência $arg pode misturar valores numéricos e sem tipo. Os valores numéricos são promovidos quando preciso para ficarem todos do mesmo tipo. Valores sem tipo são convertidos em xs:double.

A função também serve para durações: a sequência $arg pode ter só valores xs:yearMonthDuration ou só valores xs:dayTimeDuration (mas não uma mistura dos dois).

O argumento $zero define outro valor para a soma da sequência vazia. Se $arg for a sequência vazia e $zero for informado, a função devolve $zero. $zero pode ser a sequência vazia, o inteiro 0, o valor NaN, uma duração de zero segundo ou qualquer outro valor atômico.

Parâmetros

Descrição

arg:numeric()

a sequência de valores a somar

zero:numeric()

o valor devolvido quando a sequência é vazia; opcional, 0 por padrão

Exemplos

Os exemplos abaixo usam este documento de entrada:

<xsl:variable name="ordDoc" select="doc('http://www.functx.com/input/order.xml')"/>

<!-- content of order.xml -->
<order num="00299432" date="2006-09-15" cust="0221A">
  <item dept="WMN" num="557" quantity="1" color="beige"/>
  <item dept="ACC" num="563" quantity="1"/>
  <item dept="ACC" num="443" quantity="2"/>
  <item dept="MEN" num="784" quantity="1" color="blue/white"/>
  <item dept="MEN" num="784" quantity="1" color="blue/red"/>
  <item dept="WMN" num="557" quantity="1" color="sage"/>
</order>

XPath

Resultado

sum( (1, 2, 3) )

6

sum($ordDoc//item/@quantity)

7

sum($ordDoc//item/@dept)

Error FORG0001

sum( (xs:yearMonthDuration('P1Y2M'), xs:yearMonthDuration('P2Y3M')) )

P3Y5M

sum( (1, 2, 3, () ) )

6

sum( (1, 2, xs:yearMonthDuration('P1Y')) )

Error FORG0006

sum( () )

0

sum( (), () )

()

Veja também