variable & récursivité

julien TOUCHE <[email protected]>
Newsgroups gmane.text.xml.french.tech
Message-ID <[email protected]>
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 &lt; 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 &lt; 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 &lt; $nbPhotos)">
         <xsl:choose>
           <xsl:when test="$image[$cur_position+1]/note &lt; 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 &lt; $nbPhotos) and $retval!='end'">
         <xsl:choose>
           <xsl:when test="$image[$cur_position+2]/note &lt; 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 &lt; $nbPhotos) and $retval!='end'">
         <xsl:choose>
           <xsl:when test="$image[$cur_position+3]/note &lt; 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 &lt; $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
@+
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.