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