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]Tableau dynamique et variable


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut [xsl-fo]Tableau dynamique et variable
    Bonjour,

    Je souhaiterai avoir une variable qui prend une valeur donnée dans le XML.
    Jusqu'à là pas de pb...

    Ensuite, je voudrais que cette variable soit utilisée dans mon XSL dans une propriété...

    Je voudrais que mon texte1 se trouve sur 3 colonnes...

    Voici mon XML :
    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
    <Ligne1>
      <Cellule1>
        <Texte1>1.58.05.01.053</Texte1>
      </Cellule1>
      <Cellule1 >
        <Texte1>M.</Texte1>
      </Cellule1>
      <Cellule1  var="3" >
        <Texte1>Busch</Texte1>
      </Cellule1>
      <Cellule1>
        <Texte1>Armand </Texte1>
      </Cellule1>
    </Ligne1>
    Dans mon XSL :
    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
    <xsl:template match="Cellule1">
    
    <xsl:if test="count(ancestor::Ligne1/Cellule1) = 1">
    	<fo:table-cell text-align="center" number-columns-spanned="{$var}" border-left-color="black" border-left-style="solid" border-left-width="0.5pt" >
    	<fo:block color="{$bleu}" padding-top="2pt" padding-bottom="2pt" >
    	  <xsl:value-of select="Texte1"/>
    	</fo:block>
    	</fo:table-cell>
    </xsl:if>
    
    <xsl:if test="count(ancestor::Ligne1/Cellule1) > 1 and position()!=last()">
    	<fo:table-cell text-align="center"  number-columns-spanned="{$var}" border-left-color="black" border-left-style="solid" border-left-width="0.5pt">
    	<fo:block color="{$bleu}" padding-top="2pt" padding-bottom="2pt" >
    	  <xsl:value-of select="Texte1"/>
    	</fo:block>
    	</fo:table-cell>
    </xsl:if>
    
    <xsl:if test="count(ancestor::Ligne1/Cellule1) > 1 and position()=last()">
    	<fo:table-cell text-align="center" number-columns-spanned="{$var}" border-left-color="black" border-left-style="solid" border-left-width="0.5pt"  border-right-color="black" border-right-width="0.5pt" border-right-style="solid">
    	<fo:block color="{$bleu}" padding-top="2pt" padding-bottom="2pt" >
    	  <xsl:value-of select="Texte1"/>
    	</fo:block>
    	</fo:table-cell>
    </xsl:if>
    
    </xsl:template>
    Mon pb principal est que mon tableau soit dynamique et je voudrais optimiser la saisie du XML pour ne pas kon doive compter a chaque fois le nombre de colone :

    Ex:

    A- Age-------------------------B- Nom
    C- Prenom----D- Adresse-------E- LKFJ

    Donc voila j'aimerai que dans mon XML lorsque l'on veut saisr la première ligne on rentre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <ligne>
      <cellule var="2">
        <texte>45 ans</texte>
      </cellule>
      <cellule>
        <texte> Nom de famille </texte>
      </cellule>
    </ligne>
    et grâce à var=2 on fusionnera 2 cellules...

    J'espère avoir été un minimum compréhensible...

    Merci d'avance !!!

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par Little_flower

    J'espère avoir été un minimum compréhensible...
    Désolé mais non Un exemple un peu plus clair ?

    et merci de penser au balise code j'ai été obligé d'editer tous vos messages precedents


  3. #3
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut
    Rebonjour,

    Je tenvoie mon PDF avec mes tableaux pour que tu comprenne un peu mieu...

    Mon problème est de récupérer une variable que je trouve dans une balise XML et de la récupérer dans mon fichier XSL.

    Si tu regarde mes tableaux, pour la première partie, ils sont constitués de 8 colonnes avec certaines que j'ai dû fusionner. (Notamment la partie D- Nom de naissance)

    Voila mon XSL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <fo:table-cell  number-columns-spanned="3" border-top-color="black" border-top-style="solid" border-top-width="0.5pt" >
    							<fo:block text-align="left" margin-left="0.5cm" padding-top="0.05cm" font-size="5pt">D- Nom de naissance
    							</fo:block>
    							</fo:table-cell>
    							<fo:table-cell  number-columns-spanned="3" border-top-color="black" border-top-style="solid" border-top-width="0.5pt" >
    							<fo:block margin-left="0.5cm" text-align="left" padding-top="0.05cm" font-size="5pt">E- Prenom
    							</fo:block>
    							</fo:table-cell>
    Or lorsque je rentre les données dans mon XML pour remplire mon tableau, je suis obligée de rajouter des balises vides pour pouvoir adapter mon contenu...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <Cellule1  var="3" name="D" >
    			<Texte1>Busch</Texte1>
    		</Cellule1>
    		<Cellule1>
    			<Texte1> </Texte1>
    		</Cellule1>
    		<Cellule1>
    			<Texte1> </Texte1>
    		</Cellule1>
    		<Cellule1 name="E">
    			<Texte1>Armand</Texte1>
    		</Cellule1>
    Je ne sais pas si tu vas mieux comprendre...

    Mais je suis obligée d'optimiser un maximum mon XML car ce n'est pas moi qui vais remplir les données et il ne faut pas que se soit trop compliqué...

    J'aurai donc voulu avoir un attribut var situé dans ma balise cellule de mon XML qui déterminerai le nombre de colonne à fusionner (dans ce cas présent 3 colonnes) et le récupérer afin de l'insérer dans mon code XSL lorsque j'affiche mon tableau...

    XSL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	<fo:table-cell  number-columns-spanned="{$var}">
    			<fo:block margin-left="0.5cm" color="{$bleu}" padding-top="2pt" text-align="justify" text-decoration="underline" padding-bottom="2pt" >
    			  <xsl:value-of select="Texte1"/>
    			</fo:block>
    		</fo:table-cell>
    Voila j'espère que tu trouveras ca plus clair...
    Images attachées Images attachées

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par Little_flower

    J'aurai donc voulu avoir un attribut var situé dans ma balise cellule de mon XML qui déterminerai le nombre de colonne à fusionner (dans ce cas présent 3 colonnes) et le récupérer afin de l'insérer dans mon code XSL lorsque j'affiche mon tableau...
    Et la c'est quoi la question ?
    Comment l'inserer dans le xml?comment recupere la valeur de l'attribut? Comment la stocker dans une variable ?
    Toujours pas très clair pour moi ce point

  5. #5
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut
    Re Bonjour,

    Je sais écrire ma variable dans le XML, la récupére grâce à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="var" select="@var"/>
    dans le XSL mais je n'arrive pas à l'appliquer dans le XSL.

    C'est à dire que lorsque je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:if test="count(ancestor::Ligne1/Cellule1) > 1 and position()!=last()">
    <fo:table-cell  number-columns-spanned="{$var}">
    <fo:block margin-left="0.5cm" color="{$bleu}" padding-top="2pt" text-align="justify" text-decoration="underline" padding-bottom="2pt" >
      <xsl:value-of select="Texte1"/>
    </fo:block>
    </fo:table-cell>
    </xsl:if>
    il me dit :
    GRAVE: Ignoring property: number-columns-spanned="" (No conversion defined ; property:'number-columns-spanned')

    Il n'arrive pas, je pense, à appliquer la valeur de var à number-columns-spanned...

    A moins que je m'y prenne de la mauvaise façon...

  6. #6
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    ca pourrait être du à l'endroit ou tu décalre ta variable ces dernieres sont locale au noeud déclaré et disparaissent ensuite
    voir http://erwy.developpez.com/cours/langage/xslt/variable/

  7. #7
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut
    Merci !!!

    Je voudrai avoir ton avis sur un autre pb qui me tient à coeur !!!


    Comment faire pour qu'un titre soit dynamique mais apparraisse sut toute les pages d'un document ???

    Merci d'avance pour tout !!!

  8. #8
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par Little_flower
    Comment faire pour qu'un titre soit dynamique mais apparraisse sut toute les pages d'un document ???

    Merci d'avance pour tout !!!
    désolé , je n'ai que des très faibles connaissances en xsl-fo , les miennes sont localisé xslt/xpath, sans code je ne suis d'aucune utilité.

  9. #9
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut
    En tout cas je te remercie pour ton aide précieuse !!!


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

Discussions similaires

  1. Réponses: 20
    Dernier message: 06/02/2013, 00h17
  2. [XSL-FO]Tableau dynamique et mise en page
    Par Little_flower dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 24/05/2007, 16h02
  3. [XSL~FO] tableau à colonnes variables
    Par matts21 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 18/09/2006, 15h47
  4. [XSL~FO]tableau de taille dynamique
    Par sozie9372 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 13/07/2006, 17h57
  5. Création d'un tableau dynamique avec XSL-FO
    Par lionelbrizuela dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/01/2006, 11h04

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