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]problème avec for-each incompréhensible


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut [XSLT]problème avec for-each incompréhensible
    à tous.
    J'ai un souci avec une boucle for-each dans mon document XSLT : j'ai un bout de code qui marche hors de la boucle (et qui m'affiche quelquechose à l'écran) mais si je l'insère dans la boucle alors il ne s'affiche plus:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsl:value-of select="exam[$num_exam]/sujet[$num_sujet]/libellé_quest"/> <!--cette ligne s'affiche correctement-->
     
    <xsl:for-each select="exam[$num_exam]/sujet[$num_sujet]/reponse">
       <xsl:value-of select="exam[$num_exam]/sujet[$num_sujet]/libellé_quest"/> <!--cette ligne n'affiche rien-->
       <xsl:if test="exam[$num_exam]/sujet[$num_sujet]/reponse[position()]/@score &gt; 0">
          <xsl:value-of select="exam[$num_exam]/sujet[$num_sujet]/reponse[position()]"/>
       </xsl:if>
       <xsl:value-of select="exam[$num_exam]/sujet[$num_sujet]/reponse[1]"/>
    </xsl:for-each>
    J'ai l'impression que cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exam[$num_exam]/sujet[$num_sujet]/reponse
    fonctionne correctement hors de la boucle mais pas à l'intérieur car le test que je fais renvoie toujours faux (entre autre).
    J'ai fait des test sur mes $num_exam et $num_sujet, ils sont bon.
    J'ai essayé d'afficher une reponse particulière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exam[$num_exam]/sujet[$num_sujet]/reponse[1]
    mais rien ne s'affiche également...

    J'aimerais comprendre pourquoi et trouver une solution à ce problème sur lequel e bute depuis hier.
    Toues les idées sont les bienvenues
    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
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="exam[$num_exam]/sujet[$num_sujet]/libellé_quest"/>
    essaie ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:value-of select="parent::*/libellé_quest"/>

  3. #3
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    merci beaucoup ça marche nickel
    par contre j'ai un nouveau problème et pourtant tout me parait bon, le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:if test="parent::*/reponse[position()]/@score &gt; 0">
    me renvoie toujours vrai même quand @score est inférieur à 0 (je suis sur qu'il est inférieur à 0 vu que je l'affiche et qu'il m'affiche -1). Il n'y aurait pas un problème de caste ou un truc du style?
    encore.

  4. #4
    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
    je pense que ton problème n 'est pas sur la valeur de @score mais sur l attribut @score que tu testes...
    essaie d afficher position() et peut etre que tu auras des surprises...
    de plus si tu es déja dans le noeud qui vaut bien...il suffit de faire référence directement à l attribut
    donc <xsl:value-of select="@score"/>

  5. #5
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    C'est bon tu m'as mis sur la bonne voie, dans la boucle il faut faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:if test="./@score &gt; 0">
    	<xsl:value-of select="concat(./@score,' ')"/>
    </xsl:if>
    et ça marche comme sur des roulettes
    bien pour ton précieux aide.

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

Discussions similaires

  1. [XSLT] problème avec for-each
    Par aziziti dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/06/2007, 10h23
  2. [XML/XSL]problème avec for-each
    Par mavina dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/06/2006, 15h28
  3. [xsl] Problème avec for-each
    Par VolaiL dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 22/03/2006, 11h28
  4. [XML][XSLT] Débutant {Probléme avec For-each-group}
    Par Silvia12 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 29/01/2006, 21h38
  5. [VB.NET] Problème avec For Each...
    Par cyrcroix dans le forum Windows Forms
    Réponses: 5
    Dernier message: 15/06/2005, 10h49

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