Re: mise en page différentes pour des éléments de même type

julien TOUCHE <[email protected]>
Newsgroups gmane.text.xml.french.tech
Message-ID <[email protected]>
Bonjour

Robin Berjon wrote on 22/04/2006 22:05:
> <xsl:template match='images'> <table> <xsl:apply-templates
> select='image'/> </table> </xsl:template>
> 
> <xsl:template match='image[position() mod 3 == 1]'> <tr> <td><img
> src='{@href}'.../></td> <td><img
> src='{following-sibling::image[1]/@href}'.../></td> <td><img
> src='{following-sibling::image[2]/@href}'.../></td> </tr> 
> </xsl:template>
> 
> <xsl:template match='image[position() mod 3 != 1]'/>
> 
> Le principe de base est toujours le même pour ce genre de groupage:
>  sélectionner le premier élément de chaque groupe, puis depuis lui 
> sélectionner les autres (et les ignorer activement pour le reste du
>  code).
j'ai un problème pour ignorer les images dans cette optique.

je pensais utiliser le code suivant:

  <xsl:template name="...">
[...]
                        <xsl:call-template name="affiche1photoEn3parPage">
                          <xsl:with-param name="image" select="image"/>
                          <xsl:with-param name="positionPage"
select="position() mod 3"/>
                        </xsl:call-template>

                        <xsl:call-template name="affiche1photoEn3parPage">
                          <xsl:with-param name="image[1]" select="image"/>
                          <xsl:with-param name="positionPage"
select="position() mod 3"/>
                        </xsl:call-template>
                        <xsl:variable name="skip_counter"
select="$skip_counter + 1" />

                        <xsl:call-template name="affiche1photoEn3parPage">
                          <xsl:with-param name="image[2]" select="image"/>
                          <xsl:with-param name="positionPage"
select="position() mod 3"/>
                        </xsl:call-template>
                        <xsl:variable name="skip_counter"
select="$skip_counter + 1" />
[...]
  </xsl:template>

dans

      <xsl:for-each select="image">
        <xsl:choose>
          <xsl:when test="skip_counter > 0">
            <xsl:variable name="skip_counter" select="$skip_counter - 1" />
          </xsl:when>
          <xsl:otherwise>
            <xsl:call-template name="p3parPage">
              <xsl:with-param name="image" select="image"/>
              <xsl:with-param name="positionPage" select="position() mod
3"/>
            </xsl:call-template>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:for-each>

problème ...
a priori, en xsl, une variable n'est pas modifiable cf.
http://sourceware.org/ml/xsl-list/2000-02/msg00279.html
http://sourceware.org/ml/xsl-list/2001-04/msg00585.html

ce qui me fait dire ... comment gérer ce genre de situation: j'ai mon
listing de fichiers, chaque fichier avec une note, et je veux par
exemple, ceux avec la note 1 soit affiché 1 seul par page, les autres 3
par page.

je ne vois pas comment faire sans variable ou alors en dehors du xml/xsl
(mais bon ...)

merci
Cordialement

		Julien Touche
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.