where are we going, and why am i in this handbasket
xslt sample: factorial (named template)
Currently learning for an exam and freshing up my XSLT knowledge …
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!--
! Small XSLT prog that calculates the faculty of one or more
! numbers by recursively calling a named template
! numbers are expected to be in a tree:
! <nums><num>1</num><num>2</num>...</nums>
-->
<xsl:output method="text"/>
<xsl:template match="num">
<xsl:text>fak(</xsl:text>
<xsl:value-of select="."/>
<xsl:text>) is </xsl:text>
<xsl:call-template name="fak">
<xsl:with-param name="number" select="."/>
</xsl:call-template>
</xsl:template>
<xsl:template name="fak">
<xsl:param name="number"/>
<xsl:choose>
<xsl:when test="$number = 1">
<xsl:value-of select="$number"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="recursefak">
<xsl:call-template name="fak">
<xsl:with-param name="number" select="$number - 1"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$number * $recursefak"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Expected XML looks like this (with DTD even! ;P):
<?xml version="1.0" ?> <!DOCTYPE numbers [ <!ELEMENT nums (num+)> <!ELEMENT num (#PCDATA)> ]> <nums> <num>3</num> <num>12</num> </nums>
| Print article | This entry was posted by me on 2009/01/16 at 22:36, and is filed under english. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |