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] for-each : probleme !


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué Avatar de Sarrus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 138
    Points
    138
    Par défaut [XSL] for-each : probleme !
    Bonjour,

    voici mon fichier XML source (en partie) :

    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
    - <DOC>
    - <ISUPARTNER KEY="0300000671" CLUSTER_TYPE="PARTNER">
        <attributes>
          <TITLE>MLLE</TITLE> 
          <NAME_FIRST>Paris</NAME_FIRST> 
          <NAME_LAST>Morency</NAME_LAST> 
          <ADDRNUMBER>0000018416</ADDRNUMBER> 
          <HOUSE_NUM>100</HOUSE_NUM> 
          <STREET>Avenue CDG</STREET> 
          <POSTE_CODE>92000</POSTE_CODE> 
          <CITY>Neuilly</CITY> 
          <TEL_DOM>01222222222</TEL_DOM> 
          <TEL_PORT>0615121611</TEL_PORT> 
          <REGION>R2 - Région IDF Sud et Centre</REGION> 
        </attributes>
      <RELAT_PARTN PARTNER="0300000671">
           <RELATION>A le payeur divergent 0300000068</RELATION> 
           <RELATION>Est le destinataire de la facture de 0300000070</RELATION> 
      </RELAT_PARTN>
    - <CRMCONTRATS>
    -     <CONTRAT KEY="5500000556">
            <NUMCC>000500000099</NUMCC> 
            <DATEDEBUT>14/03/2006</DATEDEBUT> 
            <DATEFIN>29/03/2006</DATEFIN> 
            <STATUT>Resil. en cours</STATUT> 
            <PRODUIT>Tarif gaz histo - B0</PRODUIT> 
            <SYN_ADR>Synthèse Adresse</SYN_ADR> 
          </CONTRAT>
          <CONTRAT KEY="5500000508">
            <NUMCC>000500000099</NUMCC> 
            <DATEDEBUT>15/03/2006</DATEDEBUT> 
            <DATEFIN>19/03/2006</DATEFIN> 
            <STATUT>Activé</STATUT> 
            <PRODUIT>Tarif gaz histo - Base</PRODUIT> 
            <SYN_ADR>Synthèse Adresse</SYN_ADR> 
         </CONTRAT>
      </CRMCONTRATS>
    </ISUPARTNER>
    je fais un :

    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
     
     <xsl:template match="ISUPARTNER" mode="disp">
     
      ....
     
                <xsl:for-each select="CRMCONTRATS/CONTRAT">
     
                <tr>
     
                  <td class="table2" nowrap="x" align="left" width="100%"><xsl:value-of  select="KEY"/></td>
                  <td class="table2" nowrap="x" align="left" width="100%"><xsl:value-of  select="NUMCC"/></td>
                  <td class="table2" nowrap="x" align="left" width="100%"><xsl:value-of  select="DATEDEBUT"/></td>
                  <td class="table2" nowrap="x" align="left" width="100%"><xsl:value-of  select="DATEFIN"/></td>
                  <td class="table2" nowrap="x" align="left" width="100%"><xsl:value-of  select="STATUT"/></td>
                  <td class="table2" nowrap="x" align="left" width="100%"><xsl:value-of  select="PRODUIT"/></td>
                  <td class="table2" nowrap="x" align="left" width="100%"><xsl:value-of  select="SYN_ADR"/></td>
                </tr>
     
               </xsl:for-each>
    Pourquoi ne m'affiche t'il aucune donnée ??

    merci d'avance

  2. #2
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    1- ton template nécessite la spécification d un mode
    donc quelque part tu as un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates mode="disp"/>
    2- KEY est un attribut donc c est @KEY

  3. #3
    Membre habitué Avatar de Sarrus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    Merci, alors tu veux dire qu'il faut que j'ai un apply-templates avant mon for-each ? (j'ai du mal à saisir le role du apply-templates en fait)

    Et quelle est la différence entre le mode disp et sel ?

    merci

  4. #4
    Membre habitué Avatar de Sarrus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    pourquoi le for-each n'est pas du tout interpreté ?
    je parviens tres bien à récuperer des attributes, mais des que je veux passer à d'autres balises, je ne peux plus lire aucune données.

    Merci de m'aider !

  5. #5
    Membre habitué Avatar de Sarrus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    Bon je reexplique mon probleme différement :

    Je voudrais à partir du fichier XML ci dessus pouvoir :

    - afficher à un endroit des données de <attributes> (ce que j'arrive à faire : NAME_LAST, NAME_FIRST sont repris sans probleme)

    - faire un tableau de contrats avec une ligne par occurence de <CONTRAT>

    La méthode que j'emploie ne marche pas, je pense qu'un concept m'échappe.

    Merci

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Comme tiscars te l'a dit il y a 2 problemes. Je sais pas si c'est ca que tu veux mais voila ton code sans mode et avec un @. Normalement ca marche.
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
        <xsl:template match="ISUPARTNER">
     
            <xsl:for-each select="CRMCONTRATS/CONTRAT">
     
                <tr>
     
                    <td class="table2" nowrap="x" align="left" width="100%"><xsl:value-of  select="@KEY"/></td>
                    <td class="table2" nowrap="x" align="left" width="100%"><xsl:value-of  select="NUMCC"/></td>
                    <td class="table2" nowrap="x" align="left" width="100%"><xsl:value-of  select="DATEDEBUT"/></td>
                    <td class="table2" nowrap="x" align="left" width="100%"><xsl:value-of  select="DATEFIN"/></td>
                    <td class="table2" nowrap="x" align="left" width="100%"><xsl:value-of  select="STATUT"/></td>
                    <td class="table2" nowrap="x" align="left" width="100%"><xsl:value-of  select="PRODUIT"/></td>
                    <td class="table2" nowrap="x" align="left" width="100%"><xsl:value-of  select="SYN_ADR"/></td>
                </tr>
     
            </xsl:for-each>  
            </xsl:template>
    </xsl:stylesheet>
    A moins que je n'ai rien compris et que ce n'est pas ca que tu veuilles

  7. #7
    Membre habitué Avatar de Sarrus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    c'est pourtant ce que je fais, mais cela n'affiche rien...

    le placement de la balise xsl:template match a-til une influence sur le résultat ? Ma balise template match est placée beaucoup plus haut dans le code, et je fais d'autres choses entre.

  8. #8
    Membre habitué Avatar de Sarrus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    en effet mon template match a un mode "disp".. mais j'ai du mal à comprendre à quoi ça sert. à quel moment dois-je faire un apply-templates ?

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par la_unge
    Ma balise template match est placée beaucoup plus haut dans le code, et je fais d'autres choses entre.
    Verifie que tu ne modifies pas le noeud courant entre temps...

  10. #10
    Membre habitué Avatar de Sarrus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    non

  11. #11
    Membre habitué Avatar de Sarrus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    de même si je fais un for-each sur attributes, il me trouve des lignes, et me crée mes <tr>, si je fais un for-each sur CONTRAT, il ne me trouve plus rien...

  12. #12
    Membre habitué Avatar de Sarrus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    Question :

    Si je fais un for-each sur une balise qui comporte un attribut (CONTRAT KEY='00000'), ya til une règle spéciale pour boucler sur tous les contrats indépendamment de l'attribut key ?

  13. #13
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    ben comme t'as fait dans ton premier post...

    si tu veux une condition:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="CRMCONTRATS/CONTRAT[@key='00000']">
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

Discussions similaires

  1. xsl:for-each avec un parametre pour select
    Par arnog dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 26/08/2008, 13h09
  2. [XSL] for-each et variable
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 12/01/2006, 11h42
  3. xsl:for-each
    Par ashurai dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 10/01/2006, 11h54
  4. [XSL] for-each + sort, et comparaison current previous value
    Par johan_barbier dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/11/2005, 16h46
  5. [XML/XSL] for-each imbriqués
    Par grome dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/11/2005, 12h44

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