Pourriez-vous faire des exemples plus courts ?... Je n'ai pas le temps
d'analyser le vôtre.
Peut être pourriez-vous vous inspirer de
http://www.dpawson.co.uk/xsl/sect2/recursion.html (Recursion Examples).
Vous verrez que dans le premier ils utilisent la variable en jeu dans la
récursion pour la stopper éventuellement :
<xsl:template name="KMFDM">
<xsl:param name="counter" />
<xsl:if test="$counter < 11">
...
</xsl:if>
</xsl:template>
Si donc counter est "<" que 11, la récursion continue, sinon elle s'arrête.
Etc.
Le Mardi 9 Mai 2006 17:15, julien TOUCHE a écrit :
> Bonjour
>
> j'ai un problème d'algorithme appliqué au xsl. j'ai les fonctions
> suivantes (pseudo-code)
>
> generate-fo:
> <xsl:choose>
> <xsl:when test="image/note < 3">
> <xsl:call-template name="p3parPage">
> </xsl:when>
> <xsl:otherwise>
> <xsl:call-template name="p1parPage">
> </xsl:otherwise>
> </xsl:choose>
>
> p1parPage
> [...]
> <xsl:if test="string($image[$cur_position+1]/path)">
> <xsl:choose>
> <xsl:when test="$image[$cur_position+1]/note < 3">
> <xsl:call-template name="p3parPage" select-into="retval">
> </xsl:when>
> <xsl:otherwise>
> <xsl:call-template name="p1parPage">
> </xsl:otherwise>
> </xsl:choose>
> </xsl:if>
>
> p3parPage
> [...]
> traite première photo
> [...]
> <xsl:if test="string($image[$cur_position+1]/path) and
> ($cur_position+1 < $nbPhotos)">
> <xsl:choose>
> <xsl:when test="$image[$cur_position+1]/note < 3">
> <xsl:call-template name="Affiche1photoSur3">
> </xsl:when>
> <xsl:otherwise>
> <xsl:call-template name="p1parPage" select-into="retval">
> </xsl:otherwise>
> </xsl:choose>
> </xsl:if>
>
> <xsl:if test="string($image[$cur_position+2]/path) and
> ($cur_position+2 < $nbPhotos) and $retval!='end'">
> <xsl:choose>
> <xsl:when test="$image[$cur_position+2]/note < 3">
> <xsl:call-template name="Affiche1photoSur3">
> </xsl:when>
> <xsl:otherwise>
> <xsl:call-template name="p1parPage">
> </xsl:otherwise>
> </xsl:choose>
> </xsl:if>
>
> <xsl:if test="string($image[$cur_position+3]/path) and
> ($cur_position+3 < $nbPhotos) and $retval!='end'">
> <xsl:choose>
> <xsl:when test="$image[$cur_position+3]/note < 3">
> <xsl:call-template name="p3parPage" select-into="retval">
> </xsl:when>
> <xsl:otherwise>
> <xsl:call-template name="p1parPage">
> </xsl:otherwise>
> </xsl:choose>
> </xsl:if>
> <xsl:if test="($cur_position+3 < $nbPhotos)"><xsl:return
> select="end" /></xsl:if>
>
>
> le "programme" sert à faire un album photo et selon les notes des
> photos, les afficher soit 3 par page, soit 1 par page. En l'absence de
> variable modifiable, le programme se fait en récursif.
> Problème dont je ne me suis pas aperçu initialement, utilisation de cas
> particuliers (toutes la mêmes notes ou placement des notes).
> maintenant, quand j'applique la feuille xsl sur un grand nombre, cela
> s'exécute correctement mais lorsqu'il "dépile" la récursion, il traite
> plusieurs fois une même photo ...
> en l'absence de variable modifiable, j'ai essayé xsl:return mais
> celui-ci est bloqué dans le contexte du xsl:when/otherwise et n'est donc
> pas utilisable ...
>
> qq un aurait une idée pour réussir à dire que c'est fini ?
>
> merci
> @+
>
> --
> Devenez redacteur <XML>fr et contribuez au developpement du
> xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
> Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
>
> Cette liste est a votre disposition pour discuter en francais de
> tout sujet technique lie a XML.
>
> Pour resilier votre abonnement, envoyez un message contenant
> la commande "unsubscribe" a xml-tech-request@xmlfr.org
> (mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
--
SARL diaam informatique - 04 77 25 43 28
Ingenierie, développements de systèmes d'information
http://www.diaam-informatique.com
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Thu May 11 09:50:36 2006