IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSL-FO] tableaux: fusion de cellules


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Par défaut [XSL-FO] tableaux: fusion de cellules
    Bonjour à tous,

    Je construit un tableau dont je connais à l'avance le nombre de colonnes mais pas le nombre de lignes.

    J'utilise l'instruction de contrôle "For-each select=x'" où x est une requête xpath.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <xsl:for-each select="x"> <!-- où x est une requête xpath -->
       <fo:table-row>
          <fo:table-cell>
             <xsl:value-of select="y" <!-- où y est une requête xpath -->
          </fo:table-cell>
          <fo:table-cell>
             <xsl:value-of select="y" <!-- où y est une requête xpath -->
          </fo:table-cell>
          <fo:table-cell>
             <xsl:value-of select="y" <!-- où y est une requête xpath -->
          </fo:table-cell>
       </fo:table-row>
    </xsl:for-each>
    Je ne parviens pas à fusionner les cellules qui contiennent la même valeur (sorte de regroupement). Je crois savoir qu'il faut utiliser la propriété "number-rows-spanned" pour "fo:table-cell" mais je ne parviens pas à l'utilser vu que le tableau n'a pas des dimension fixes.

    J'amerais faire quelque chose qui ressemblee à ceci:

    x--------x--------x----------x
    l-------- l-------- l---------- l
    l-------- l-------- l---------- l
    l-------- l-------- l---------- l
    l-------- l-------- l---------- l
    l-------- l-------- l---------- l
    l-------- l-------- l---------- l
    l-------- l-------- l---------- l
    x--------x--------x----------x

    Merci pour vos éventuelles réponses,

    P. Crespin

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Par défaut auto-réponse
    Je répond à ma propre question:

    J'avais mal interprété la propriété "number-rows-spanned".
    Pour les cellules qui peuvent être fusionnées, je fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
    <xsl:for-each select="Licence">
    <xsl:variable name="typeCourant"  select="@Type"></xsl:variable>
    <fo:table-row keep-together="always">
       <xsl:choose>
         <xsl:when test="not(preceding-sibling::Licenc[@Type=$typeCourant])">
           <fo:table-cell padding="6pt" border="0.5pt solid black" display-align="center" >
              <xsl:attribute name="number-rows-spanned">
                 <xsl:value-of select="count(//Licence[@Type=$typeCourant])"/>
               </xsl:attribute>
               <fo:block display-align="center" font-size="8" >
                  <xsl:value-of select="./@Type"/>
                </fo:block>
             </fo:table-cell>
          </xsl:when>
       </xsl:choose>
    </xsl:for-each>
    nb: dans ce cas, j'aurais pu tout aussi bien utiliser if.

    Dans ce code, je fais deux choses dont j'avais besoin:

    - je teste si c'est la première fois que je rencontre un élément
    - je compte le nombre d'éléments identiques à l'élément sélectionné

    Ainsi, je peux fusionner les cellules selon les besoins.

    Pierre

  3. #3
    Invité de passage
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 1
    Par défaut
    Bonjour,
    Un très grand merci d'avoir écrie la solution malgré tout, j'ai enfin réussi grâce a toi !

    Mathieu

Discussions similaires

  1. Réponses: 11
    Dernier message: 25/07/2011, 13h34
  2. [Swing][JTable]Fusion des cellules d'un tableau
    Par LordBlaize dans le forum Composants
    Réponses: 1
    Dernier message: 23/03/2006, 18h48
  3. [JTable]Fusion de cellules
    Par vincent63 dans le forum Composants
    Réponses: 6
    Dernier message: 13/02/2006, 14h28
  4. [VB6] Problème MsFlexgrid et Fusion des cellules
    Par dubidon dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/02/2006, 09h00
  5. [VBA-E] Fusion de cellule
    Par Nicos77 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2004, 13h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo