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 |
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( (), () ) |
() |