Re: variable & récursivité
Herve AGNOUX <[email protected]>
| Newsgroups | gmane.text.xml.french.tech |
|---|---|
| Organization | SARL diaam informatique |
| Message-ID | <[email protected]> |
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 "[email protected]" (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 [email protected] > (mailto:[email protected]?Subject=unsubscribe) -- SARL diaam informatique - 04 77 25 43 28 Ingenierie, développements de systèmes d'information http://www.diaam-informatique.com