Source de hanoi.xsl
<?xml version="1.0" ?>
<!-- -*- coding: utf-8 -*- -->
<xsl:stylesheet version="1.0">
<xsl:output method="xml" indent="yes" />
<!-- Programme principal -->
<xsl:template match="/">
<hanoi_solution>
</xsl:template><xsl:call-template name="DéplacerPlateau">
</hanoi_solution><xsl:with-param name="nombre" select="hanoi/param[@name='nb']/@value" />
<xsl:with-param name="départ" select="hanoi/param[@name='départ']/@value" />
<xsl:with-param name="arrivée" select="hanoi/param[@name='cible']/@value" />
<xsl:with-param name="autre" select="hanoi/param[@name='auxiliaire']/@value" />
</xsl:call-template>
<!-- Résolution des Tours de Hanoï -->
<xsl:template name="DéplacerPlateau">
</xsl:stylesheet><xsl:param name="nombre" />
<xsl:param name="départ" />
<xsl:param name="arrivée" />
<xsl:param name="autre" />
<xsl:if test="$nombre > 0">
</xsl:template><xsl:call-template name="DéplacerPlateau">
<xsl:with-param name="nombre" select="$nombre - 1" />
<xsl:with-param name="départ" select="$départ" />
<xsl:with-param name="arrivée" select="$autre" />
<xsl:with-param name="autre" select="$arrivée" />
</xsl:call-template><move>
<xsl:attribute name="start">
<xsl:value-of select="$départ" />
</xsl:attribute><xsl:attribute name="end">
</move><xsl:value-of select="$arrivée" />
</xsl:attribute><xsl:call-template name="DéplacerPlateau">
</xsl:if><xsl:with-param name="nombre" select="$nombre - 1" />
<xsl:with-param name="départ" select="$autre" />
<xsl:with-param name="arrivée" select="$arrivée" />
<xsl:with-param name="autre" select="$départ" />
</xsl:call-template>