File: Data.xml <?xml version="1.0"?> <numbers> <x>4</x> <y>3.2</y> <z>11</z> </numbers> File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="text" /> <xsl:variable name="iterations" select="8" /> <xsl:template name="myFunction"> <xsl:param name="i">1</xsl:param> <xsl:param name="myValue">0</xsl:param> <xsl:choose> <xsl:when test="$i <= $iterations"> <xsl:call-template name="myFunction"> <xsl:with-param name="i" select="$i + 4" /> <xsl:with-param name="myValue" select="$myValue + (4 div $i)" /> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$myValue" /> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="/"> <xsl:call-template name="myFunction" /> </xsl:template> </xsl:stylesheet> Output: 4.8