sum() 関数  
パラメータノードセットのすべてのノードを数値に変換し、それらの数値の合計を返します。ノードセットのいずれかのノードを数値に変換できない場合 (それらを number() 関数に渡すと NaN が返ります)、sum() 関数は NaN を返します。
 
入力

ノードセット。ノードセット内で数値でないノードは、number() 関数に渡されたかのように数値に変換され、すべてのノードの数値が合計されます。

 
出力

パラメータノードセットのすべてのノードの数値の合計。パラメータノードセットのいずれかのノードを数値に変換できない場合、sum() 関数は NaN を返します。

 
定義先

XPath 4.4 節「Number Functions」

 

次の XML ドキュメントに対する 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>

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>

このスタイルシートを使用して XML ドキュメントを処理すると、次の結果が生成されます。


A test of the sum() function:

Total miles flown this year:  84,059

Total miles earned this year: 236,452