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