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 :

[débutant] de xml vers tableau en pdf


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 39
    Points : 19
    Points
    19
    Par défaut [débutant] de xml vers tableau en pdf
    pour ceux qui connaissent pas mon problème , j'essaye de transformer un fichier xml vers un pdf avec fop , mon fichier xml à 3 niveaux ( tableau à 3 colones )mais le nombre des noeuds dans chaque niveau est variable et je veux que mon tableau soit de la façon décrite dans l'image en pièce
    jointe


    j'utilise fop 0.93

    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
     
    <fo:table table-layout="fixed">
    <fo:table-column column-width="130pt"/>
    <fo:table-column column-width="80pt"/>
    <fo:table-column column-width="250pt"/>
     
     
    <fo:table-body>
     
    <fo:table-row>
    <fo:table-cell border-style="solid" border-color="black" border-width="2pt" padding-before="2pt" padding-after="2pt" padding-start="4pt" padding-end="4pt">
     
    <fo:block><xsl:value-of select="./child::*"/></fo:block>
    </fo:table-cell>
     
    <fo:table-cell border-style="solid" border-color="black" border-width="2pt" padding-before="2pt" padding-after="2pt" padding-start="4pt" padding-end="4pt">
     
     
    <fo:block><xsl:value-of select="N1/child::*"/> </fo:block>
     
    </fo:table-cell>
     
    <fo:table-cell border-style="solid" border-color="black" border-width="2pt" padding-before="2pt" padding-after="2pt" padding-start="4pt" padding-end="4pt">
     
    <fo:block><xsl:value-of select="N1/N2.1/child:: *"/> </fo:block>
    </fo:table-cell>
     
    </fo:table-row>
     
     
     
    </fo:table-body>
    </fo:table>
    mais vous pouvez remarquer que ce code ne permet pas d'afficher tous les noeuds ( car il y a pas de boucles ) mais même pour affichier une 1ere ligne de tableau j'ai des problèmes
    la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <fo:block><xsl:value-of select="entry/linked-hash-map/child::*"/> </fo:block>
    m'affiche tjr tous les fils et les petit fils et même si j'ajoute position() = 1 poutant j'utilise child :: qui normalement affiche que le fils du noeud
    alors si vous pouvez m'aider je vous serais reconnaissant
    n'oubliez pas l'image explicative en pièce jointe
    merci
    Images attachées Images attachées  

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Points : 56
    Points
    56
    Par défaut
    tu formates ton tableau
    <fo:table
    <fo:table-column
    <fo:table-body

    ensuite pour chaque element de niveau supérieur (tous sauf le niveau le plus bas) tu regardes combien tu as d'élément au plus bas


    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <xsl:template match="niveau1"><!-- N1  N2 -->
    <xsl:variable name="nbrNiveauX"><!-- tu comptes le nombre d'élements niveau3 dans ce niveau1-->
    <xsl:value-of select="count(descendant::niveau3)"/>
    </xsl:variable>
    <fo:table-row><!-- tu crées la ligne -->
    <fo:table-cell><!-- tu crées la cellule N1 -->
    <xsl:variable name="number-rows-spanned"></xsl:variable><!-- tu fais un rowspan du nombre d'élément au niveau3 -->
    <xsl:value-of select="."/><!-- tu affiches ta valeur-->
    <fo:table-cell>
    <xsl:apply-templates select="niveau2"/><!-- tu descends dans les niveaux inférieurs -->
    <fo:table-row>
    au niveau 2
    tu compres le nombre de niveau3
    tu crées une cellule
    tu fais un rowspan du nombre de niveau3


    etc...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    merci pour ta réponse mais peut tu m'expliquer d'avantage
    et ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:value-of select="count(descendant::niveau3)"/>
    t'es sure cc'est pas niveau2 , c'est pour compter le nombre de fils du niveau courant non ?
    c'est vraiment des questions de débutant non ?? !
    merci d'avance

Discussions similaires

  1. [XSLT]XML vers tableau html
    Par lcdDEV dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 27/10/2006, 16h55
  2. [Débutante][XSL-FO]Flux XML vers HTML puis vers PDF
    Par norkius dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 03/05/2006, 14h29
  3. [débutant]XML vers XML avec XSL
    Par tokamak dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 11/07/2005, 10h27
  4. [XSL-FO] xml vers xsl-fo (pour generation PDF ou RTF)
    Par dams50 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 13/12/2003, 21h07

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