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] fusionner une cellule sur deux lignes.


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut [XSL:FO] fusionner une cellule sur deux lignes.
    Bonjour,

    Je cherche un truc qui doit être simple, n'ayant pas trouvé où se cachait le FM sur le net, j'ai du mal à le lire (d'ailleurs si quelqu'un avait une bonne référence, et qui soit complète, sur le xsl:fo, je suis preneur.)

    Ce que je cherche à faire ressemblerait à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    +-----+---+---+
    |     |   |   |
    |     +---+---+
    |     |   |   |
    +-----+---+---+
    Il y a-t-il un moyen de spécifier que la premier cellule d'une ligne est partagée par plusieurs lignes, où bien dois-je obligatoirement imbriquer deux tableaux l'un dans l'autre ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Points : 199
    Points
    199
    Par défaut
    Bonjour,

    Il suffit d'ajouter l'attribut " number-rows-spanned='2' " sur ta première cellule.
    Il faudra peut être aussi ajouter l'attribut " column-number='2' " sur la "première" cellule de la seconde ligne.
    Pensez au tag quand votre problème est réglé !

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    OK merci. J'y suis presque.

    Si mes "petites" cellules ne contiennent qu'un seul bloc, cela marche au poil.

    Par contre, vu que je voulais y mettre 2 blocs dans chaque (pour émuler un saut de ligne), je me retrouve maintenant (sans trop que je sache pourquoi) avec une bordure tracée en plein milieu de la seconde ligne de tableau.

    Je sens qu'il va falloir éclater le tableau en 4 lignes en supprimant les bordures entre les lignes 1-2 et 3-4...
    J'ai la sale impression de mal m'y prendre
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Points : 199
    Points
    199
    Par défaut
    Je ne comprends pas trop ce que tu veux dire. Peut-être y a t il des bordures sur les blocs. Pourrais tu mettre la partie du code créant la table ?
    Pensez au tag quand votre problème est réglé !

  5. #5
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Cela ressemblait (je suis passé à 4 lignes maintenant) à ça:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <fo:table border-style='solid' border-width="1pt" border-collapse="collapse">
      <fo:table-body>
        <fo:table-row>
          <fo:table-cell display-align="center" number-rows-spanned='2'>
            <fo:block font-weight="bold" font-variant="small-caps" >
              <xsl:value-of select="/article/articleinfo/title|/book/bookinfo/title"/>
            </fo:block>
          </fo:table-cell>
     
          <fo:table-cell border-style='solid' border-width="1pt">
            <fo:block font-style="italic"> <xsl:text>date</xsl:text> </fo:block>
            <fo:block font-weight="bold">
              <xsl:value-of select="/article/articleinfo/date|/book/bookinfo/date"/>
            </fo:block>
          </fo:table-cell>
     
          <fo:table-cell border-style='solid' border-width="1pt">
            <fo:block font-style="italic"> <xsl:text>page</xsl:text> </fo:block>
            <fo:block font-weight="bold"> <fo:page-number/> </fo:block>
          </fo:table-cell>
        </fo:table-row>
     
        <fo:table-row>
          <fo:table-cell border-style='solid' border-width="1pt">
            <fo:block font-style="italic"> <xsl:text>référence</xsl:text> </fo:block>
            <fo:block font-weight="bold">
              <xsl:value-of select="/article/articleinfo/biblioid|/book/bookinfo/biblioid"/>
            </fo:block>
          </fo:table-cell>
     
          <fo:table-cell border-style='solid' border-width="1pt">
            <fo:block font-style="italic"> <xsl:text>version</xsl:text> </fo:block>
            <fo:block font-weight="bold">
              <xsl:value-of select="/article/articleinfo/productnumber|/book/bookinfo/productnumber"/>
            </fo:block>
          </fo:table-cell>
     
        </fo:table-row>
     
      </fo:table-body>
    </fo:table>
    Et au final, je me retrouvais avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    +----------+------+------+
    |          | date | page |
    | Titre    | 2008 |  42  |
    |          +------+------+
    |          | ref. | vers |
    +----------+------+------+
    |          | #id  | 1.0  |
    +----------+------+------+

    Alors soit j'avais foiré un truc, soit je suis tombé sur un bug de fop. Je ne sais pas.
    NB: cela spécialisait les en-tête de style docbook.xsl dispo sur sourceforge.

    (J'avoue que les gestion des bordures est encore un peu magique pour moi)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Points : 199
    Points
    199
    Par défaut
    Si je comprends bien, c'est la bordure entre "ref." et "#id", et entre "vers" et "1.0" qui est en trop ?

    D'après le code, elle ne devrait pas être présente : Il y a bien 2 lignes, avec 3 cellules.
    Eventuellement, sur la première cellule de la deuxième ligne, ajoute l'attribut "column-number = '2'", mais je ne pense pas que celà changera quelque chose.

    Etant donné que tu défini les bordures dans chaque cellule, essaie d'enlever celle définie dans la balise fo:table au cas où.
    Pensez au tag quand votre problème est réglé !

  7. #7
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    C'est bien ça (pour la ligne en trop).
    Et sinon, j'avais déjà bidouillé dans tous les sens.

    Sans bordure dans les cellules mais juste dans la table => plus de bordure du tout, IIRC.
    Sans bordure dans la table, aucun changement.

    J'en suis arrivé à la conclusion d'un effet de bord avec les feuilles de style docbook, ou un bug de fop.
    Du coup, je m'en suis sorti autrement.

    Merci.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fusionner des cellules sur plusieurs lignes
    Par pekka77 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/07/2008, 18h05
  2. Réponses: 4
    Dernier message: 22/01/2008, 16h59
  3. Réponses: 3
    Dernier message: 13/12/2007, 14h25
  4. Texte de la barre de titre d'une Jframe sur deux lignes
    Par radzar dans le forum Agents de placement/Fenêtres
    Réponses: 17
    Dernier message: 01/09/2007, 01h10
  5. [TStringGrid] Une cellule sur plusieurs lignes.
    Par Caine dans le forum Delphi
    Réponses: 15
    Dernier message: 28/03/2007, 12h53

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