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] Affichage des valeurs en fonction d'autres


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Par défaut [XSLT] Affichage des valeurs en fonction d'autres
    Bonjour tout le monde, voici ma question:

    J'ai un xml qui ressemble à ça:

    <tables>
    <label>11</label>
    <label>33</label>
    </tables>
    <variations>
    <variation ref="1">
    <label>11</label>
    <value>AA</value>
    <label>22</label>
    <value>BB</value>
    </variation>
    <variation ref="2">
    <label>22</label>
    <value>CC</value>
    <label>33</label>
    <value>DD</value>
    </variation>
    </variations>

    Comment afficher les "value" des variations en fonction de l'existance de leurs"label" dans "tables":

    c-à-d:

    ref 11 33
    1 AA
    2 DD

    Voici une partie de mon xslt:

    <xsl:template name="ligne">
    <table class="border">
    <xsl:for-each select="variations/variation">
    <tr>
    <td class="border">
    <xsl:value-of select="@ref"/>
    </td>
    <td>?????????</td>
    </tr>
    </xsl:for-each>
    </table>
    </xsl:template>

  2. #2
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Bonjour,

    Serait-il possible d'expliquer plus exactement ce que tu veux ? Tu veux rattacher toutes les variations (et plus exactement la valeur rattachée) pour chaque label ?

    En outre, comment se décompose ta sous structure de "variation" ? Aurais-tu un XSD ou une DTD correspondant à ton XML ?

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Par défaut
    J'ai pas le shema ni le dtd mais ce que je veux c'est afficher la valeur de la balise <value> de variation dans le cas ou la valeur de la balise <label> de variation existe dans la liste des "label" de <tables>:
    Exemple:
    Pour la variation de ref = 1 j'affiche que la valeur AA car son label = 11 existe dans les <label> de <tables>

  4. #4
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    OK. On peut donc partir sur un truc de ce style :
    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
     
    <xsl:template name="ligne">
    <xsl:variable name="listeLabel" value="tables/Label"/>
    <table class="border">
         <xsl:for-each select="variations/variation">
              <tr>
                   <td class="border">
                        <xsl:value-of select="@ref"/>
                   </td>
                   <td>
                        <xsl:for-each select="label">
                             <xsl:variable name="currentLabel">
                                  <xsl:value-of select="."/>
                             </xsl:variable>
                             <xsl:if test="exists($listeLabel[. = $currentLabel])">
                                  <xsl:value-of select="following-sibling::value[1]"/>
                             </xsl:if>
                        </xsl:for-each>
                    </td>
              </tr>
         </xsl:for-each>
    	</table>
    </xsl:template>
    Je ne garantis pas que ce code fonctionnera à coup sûr mais ca pourrait ressembler à cela.

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Par défaut
    Merci déja pour ton aide
    Le test <xsl:if test="exists($listeLabel[. = $currentLabel])"> ne marche pas, XMLspy déclare une erreur du genre: Unknown XPATH function

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Par défaut
    En fait C le mot exits qui pose problème sinon après adaptation ça marche nickel, grand merci à BizuR

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

Discussions similaires

  1. Afficher des valeurs en fonction d'une autre valeur
    Par flobos dans le forum Access
    Réponses: 2
    Dernier message: 15/06/2015, 08h03
  2. [XL-2010] Rechercher des valeurs en fonction d'une autre valeur
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/02/2015, 16h10
  3. Réponses: 2
    Dernier message: 19/04/2012, 14h02
  4. [XSLT] Normalisation des valeurs pour les URL
    Par camboui dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 10/01/2006, 12h33
  5. [xslt] filtrer des valeurs numériques
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 20/09/2005, 12h01

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