<?xml version="1.0" ?><!-- -*- coding: utf-8 -*- -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


<xsl:output method="xml" indent="yes" />




<!-- Programme principal -->

<xsl:template match="/">

  <hanoi_solution>
    <xsl:call-template name="DéplacerPlateau">
      <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>
  </hanoi_solution>

</xsl:template>




<!-- Résolution des Tours de Hanoï -->

<xsl:template name="DéplacerPlateau">

  <xsl:param name="nombre" />
  <xsl:param name="départ" />
  <xsl:param name="arrivée" />
  <xsl:param name="autre" />

  <xsl:if test="$nombre > 0">

    <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">
	<xsl:value-of select="$arrivée" />
      </xsl:attribute>
    </move>

    <xsl:call-template name="DéplacerPlateau">
      <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>

  </xsl:if>
</xsl:template>

</xsl:stylesheet>


