| Nic Miloslav Example 77 | KEYWORDS EXAMPLES AUTHORS |
|---|
While XSLT does not define while and for loops, their behavior can be simulated. Stylesheet 1 simulates for and Stylesheet 2 while behavior.
| XML | HOME XSL 1 XSL 2 |
|---|
| <xslTutorial > |
| <AAA repeat="3"/> |
| <BBB repeat="2"/> |
| <CCC repeat="5"/> |
| </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="/xslTutorial/*"> |
| <p> |
| <xsl:call-template name="for"> |
| <xsl:with-param name="stop"> |
| <xsl:value-of select="@repeat"/> |
| </xsl:with-param> |
| </xsl:call-template> |
| </p> |
| </xsl:template> |
| <xsl:template name="for"> |
| <xsl:param name="start">1</xsl:param> |
| <xsl:param name="stop">1</xsl:param> |
| <xsl:param name="step">1</xsl:param> |
| <xsl:value-of select="name()"/> |
| <xsl:text> </xsl:text> |
| <xsl:if test="$start < $stop"> |
| <xsl:call-template name="for"> |
| <xsl:with-param name="stop"> |
| <xsl:value-of select="$stop"/> |
| </xsl:with-param> |
| <xsl:with-param name="start"> |
| <xsl:value-of select="$start + $step"/> |
| </xsl:with-param> |
| </xsl:call-template> |
| </xsl:if> |
| </xsl:template> |
| </xsl:stylesheet> |
| HTML 1 | HOME XML XSL 1 OUTPUT 1 |
|---|
| <p>AAA AAA AAA </p> |
| <p>BBB BBB </p> |
| <p>CCC CCC CCC CCC CCC </p> |
| OUTPUT 1 | HOME XML XSL 1 HTML 1 |
|---|
AAA AAA AAA
BBB BBB
CCC CCC CCC CCC CCC
| 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="/xslTutorial/*"> |
| <p> |
| <xsl:call-template name="while"> |
| <xsl:with-param name="test"> |
| <xsl:value-of select="@repeat"/> |
| </xsl:with-param> |
| </xsl:call-template> |
| </p> |
| </xsl:template> |
| <xsl:template name="while"> |
| <xsl:param name="test"/> |
| <xsl:value-of select="name()"/> |
| <xsl:text> </xsl:text> |
| <xsl:if test="not($test = 1)"> |
| <xsl:call-template name="while"> |
| <xsl:with-param name="test"> |
| <xsl:value-of select="$test - 1"/> |
| </xsl:with-param> |
| </xsl:call-template> |
| </xsl:if> |
| </xsl:template> |
| </xsl:stylesheet> |
| HTML 2 | HOME XML XSL 2 OUTPUT 2 |
|---|
| <p>AAA AAA AAA </p> |
| <p>BBB BBB </p> |
| <p>CCC CCC CCC CCC CCC </p> |
| OUTPUT 2 | HOME XML XSL 2 HTML 2 |
|---|
AAA AAA AAA
BBB BBB
CCC CCC CCC CCC CCC