Recursion is a programming technique in which a function calls itself. And it is a very powerful technique especially in the world of markup structures. Obviously if a function calls itself it may never terminate therefore it is very important to have some terminating condition inside the function (often called "base case").
In this example the template "xxx" is instantiated with the value of parameter "i" set to 1, recursive calls to this function increase the value of this parameter by 1 and when the parameter reaches value 5 the processing is terminated.
|
XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> <xsl:template match="/*"> <xsl:call-template name="xxx"/> </xsl:template> <xsl:template name="xxx"> <xsl:param name="i" select="1"/> <xsl:choose> <xsl:when test="$i=5"> <end/> </xsl:when> <xsl:otherwise> <step> <xsl:value-of select="$i"/> </step> <xsl:call-template name="xxx"> <xsl:with-param name="i" select="$i+1"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> |
|
|
XML
<aaa/> |
Output
<step>1</step> <step>2</step> <step>3</step> <step>4</step> <end/> |
| Previous chapter: | Keys |
| Next chapter: | Date and Time |
| Previous page: | - - - |
| Next page: | Recursive xsl:apply-templates |