<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="xml" />

  <!-- Template principal : appel ŕ Factorielle avec n et 1-->

  <xsl:template match="/">
    <xsl:call-template name="factorielle">
      <xsl:with-param name="n" select="factorielle/@n" />
      <xsl:with-param name="f" select="1" />
    </xsl:call-template>
  </xsl:template>


  <!-- Template récursif pour calculer factorielle -->

  <xsl:template name="factorielle">

      <xsl:param name="n" />
      <xsl:param name="f" />

      <xsl:choose>

	<xsl:when test="$n = 1">

	  <resultat>
	    <xsl:attribute name="value">
	      <xsl:value-of select="$f" />
	    </xsl:attribute>
	  </resultat>

	</xsl:when>

	<xsl:otherwise>

	  <xsl:call-template name="factorielle">
	    <xsl:with-param name="n" select="$n - 1" />
	    <xsl:with-param name="f" select="$f * $n" />
	  </xsl:call-template>

	</xsl:otherwise>

      </xsl:choose>
  </xsl:template>




</xsl:stylesheet>

