Fonction sum()  
Convertit tous les nœuds de l'ensemble de nœuds en nombres, puis renvoie la somme de tous ces nombres. Si l'un des nœuds de l'ensemble ne peut être converti en nombre (lui appliquer la fonction number() renvoie la valeur NaN), la fonction sum() renvoie la valeur NaN.
 
Entrées

Un ensemble de nœuds. Tout nœud de l'ensemble de nœuds qui n'est pas un nombre est converti en nombre comme si la fonction number() lui avait été appliquée, les valeurs numériques de tous les nœuds sont ensuite additionnées.

 
Sortie

La somme des valeurs numériques de tous les nœuds de l'ensemble de nœuds de l'argument. Si un nœud de l'ensemble de nœuds de l'argument ne peut être converti en nombre, la fonction sum() renvoie la valeur NaN.

 
Définie dans

XPath section 4.4, Fonctions Nombre.

 
Exemple

Le document XML suivant permet d'illustrer le fonctionnement de la fonction sum() :

<?xml version="1.0"?>
<report>
  <title>Miles Flown in 2001</title>
  <month sequence="01">
    <miles-flown>12379</miles-flown>
    <miles-earned>35215</miles-earned>
  </month>
  <month sequence="02">
    <miles-flown>32857</miles-flown>
    <miles-earned>92731</miles-earned>
  </month>
  <month sequence="03">
    <miles-flown>19920</miles-flown>
    <miles-earned>76725</miles-earned>
  </month>
  <month sequence="04">
    <miles-flown>18903</miles-flown>
    <miles-earned>31781</miles-earned>
  </month>
</report>

La feuille de style suivante utilise la fonction sum() :

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="text"/>

  <xsl:variable name="newline">
<xsl:text>
</xsl:text>
  </xsl:variable>

  <xsl:template match="/">
    <xsl:value-of select="$newline"/>
    <xsl:text>A test of the sum() function:</xsl:text>

    <xsl:value-of select="$newline"/>
    <xsl:value-of select="$newline"/>
    <xsl:text>Total miles flown this year:  </xsl:text>
    <xsl:value-of
      select="format-number(sum(/report/month/miles-flown), '###,###')"/>
    <xsl:value-of select="$newline"/>
    <xsl:value-of select="$newline"/>
    <xsl:text>Total miles earned this year: </xsl:text>
    <xsl:value-of
      select="format-number(sum(/report/month/miles-earned), '###,###')"/>
    <xsl:value-of select="$newline"/>
    <xsl:value-of select="$newline"/>
  </xsl:template>

</xsl:stylesheet>

Traiter le document XML à l'aide de la feuille de style génère les résultats suivants :


A test of the sum() function:

Total miles flown this year:  84,059

Total miles earned this year: 236,452