<xslTutorial creator="nicmila@idoox.com">
<index keywords='sum() position() last() mod true()'/>

<description>Function sum() sums all numbers in selected nodes. <stylesheet id='id2'/> sums all numbers, <stylesheet id='id3'/> only odd ones.</description>

<xmlSource id="id1">
<number>1</number>
<number>3</number>
<number>4</number>
<number>17</number>
<number>8</number>
<number>11</number>
</xmlSource>

<attValues>
<value match=''></value>
</attValues>

<xslStylesheet id="id2">
<xsl:template match="/">
<xsl:for-each select="//number">
<xsl:value-of select="."/>
<xsl:choose>
<xsl:when test='position()=last()'>
<xsl:text> = </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> + </xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:value-of select="sum(//number)"/>
</xsl:template>
</xslStylesheet>

<xslStylesheet id="id3">
<xsl:template match="/">
<xsl:for-each select="//number">
<xsl:variable name="number" select="."/>
<xsl:if test="$number mod 2">
<xsl:value-of select="."/>
<xsl:choose>
<xsl:when test='position()=last()'>
<xsl:text> = </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> + </xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:for-each>
<xsl:value-of select="sum(//number[text()  mod 2 = true()])"/>
</xsl:template>
</xslStylesheet>

</xslTutorial>