| Nic Miloslav Example 37 | KEYWORDS EXAMPLES AUTHORS |
|---|
Function sum() sums all numbers in selected nodes. Stylesheet 1 sums all numbers, Stylesheet 2 only odd ones.
| XML | HOME XSL 1 XSL 2 |
|---|
| <xslTutorial > |
| <number>1</number> |
| <number>3</number> |
| <number>4</number> |
| <number>17</number> |
| <number>8</number> |
| <number>11</number> |
| </xslTutorial> |
| XSL 1 | HOME XML HTML 1 OUTPUT 1 |
|---|
| <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' > |
| <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> |
| </xsl:stylesheet> |
| HTML 1 | HOME XML XSL 1 OUTPUT 1 |
|---|
| <HTML> |
| <HEAD> </HEAD> |
| <BODY> 1 + 3 + 4 + 17 + 8 + 11 = 44 </BODY> </HTML> |
| OUTPUT 1 | HOME XML XSL 1 HTML 1 |
|---|
| XSL 2 | HOME XML HTML 2 OUTPUT 2 |
|---|
| <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' > |
| <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> |
| </xsl:stylesheet> |
| HTML 2 | HOME XML XSL 2 OUTPUT 2 |
|---|
| <HTML> |
| <HEAD> </HEAD> |
| <BODY> 1 + 3 + 17 + 11 = 32 </BODY> </HTML> |
| OUTPUT 2 | HOME XML XSL 2 HTML 2 |
|---|