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 :

[XSLT]Tableau dynamique xslt


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Archi
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Archi

    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Par défaut [XSLT]Tableau dynamique xslt
    Bonjour tout le monde,
    J'arrive à parcourir correctement mon xslt mais j'ai encore du mal à géré les fichiers xml ou le nombre de noeuds fils fluctue... je m'explique

    Code XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <noeud_1>
         <noeud_2 age=20>
                    <noeud_3 name=titi></noeud_3>
                    <noeud_3 name=tata></noeud_3>
                    <noeud_3 name=toto></noeud_3>
          </noeud_2>
    </noeud_1>
    Code XSLT que j'ai réalisé pour parcourir ce 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <xsl:template match="/">
    <table>
       <tr>
          <th>name_1</th>
          <th>name_2</th>
          <th>name_3</th>
       </tr>
    <xsl:apply-templates select="noeud_2" />
    </table>
    xsl:template match="noeud_2">
      <tr><td rowspan=3>
      <xsl:value-of select="@age" />
      </td>
      <td>
      <xsl:value-of select="noeud_2/noeud_3/@name" />
      </td></tr>
      <tr><td>
      <xsl:value-of select="noeud_2/noeud_3[position()=2]/@name" />
      </td></tr>
      <tr><td>
      <xsl:value-of select="noeud_2/noeud_3[position()=3]/@name" />
       </td></tr>
    </table>
    Alors j'ai 1 problèmes:
    Les données j'arrive correctement à les récupérer mais c pour l'affichage que j'ai du mal.... Comme on peut le voir dans mon code j'ai mis des positions alors que mon code xml peut varier.. cad que le noeud_2 peut avoir 2 noeud_3 ou 4 noeud_3... ainsi mon code devient faux .
    Il faudrait rendre mon code dynamique.. pour pouvoir changer le rowspan et la position quant le noeud nexiste pas ...
    Mais j'ai vu que ce n'était pas évident d'utiliser des variables en xslt ...
    je vous remercie de votre aide .......

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Faut faire une boucle for-each dans ce cas la, et un count() sur le rowspan juste avant.

  3. #3
    Membre averti
    Profil pro
    Archi
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Archi

    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Par défaut
    je dois créer un for-each à l'interieur du <xsl:template match=="noeud_2"> pour les noeud fils ? (noeud_3)
    Le count je le fais sur quoi ? j'écris juste count () et il s'incrémente tout seule ?
    j'vais allé voir mon ami google ... j'ai quelques lacunes la ..
    Mais si tu pouvais etres plus explicite ds ta réponse ... merciii encore

  4. #4
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    je te propose une autre solution, e, gros on utilise count et on abandonne les for-each
    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
     
    <xsl:template match="/">
    <table>
       <tr>
          <th>name_1</th>
          <th>name_2</th>
          <th>name_3</th>
       </tr>
    <xsl:apply-templates select="noeud_2" />
    </table>
    </xsl:template>
     
     
    <xsl:template match="noeud_2">
      <tr>
      <xsl:element name = "td">
       <xsl:attribute name = "rowspan" ><xsl:value-of select="count(./noeud_3)" /></xsl:attribute>
      </xsl:element>
      <xsl:value-of select="@age" />
      </td>
      <xsl:apply-templates select="noeud_3" />
      </tr>
    </xsl:template>
     
     
    <xsl:template match="noeud_3">
      <td>
      <xsl:value-of select="@name" />
       </td><
    </xsl:template>

  5. #5
    Membre averti
    Profil pro
    Archi
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Archi

    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Par défaut
    Merci pour cette réponse, j suis en train d'essayer ton code .. mais t'as tout mis sur 1 ligne ... le rowspan ne sert à rien la... j'suis en train de voir comment afficher sur plusieurs ligne ...
    Merci quand même...

  6. #6
    Membre averti
    Profil pro
    Archi
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Archi

    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Par défaut
    C'est bon ca fontionne nikel merci pour ton aide encore ...

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

Discussions similaires

  1. [XSLT] Tableau dynamique
    Par DanDigiMan dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/04/2008, 10h23
  2. [XSLT] tableau dynamique
    Par bwwilly dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 09/07/2007, 15h25
  3. [XSLT]de xml vers un tableau dynamique
    Par bwwilly dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 26/06/2007, 10h59
  4. [XSLT] Test dynamique
    Par Capt. Flame dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 04/11/2005, 09h53
  5. [XSLT]tableau double entrée avec cellule manquante
    Par nferay dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 08/03/2005, 15h07

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