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 - XPATH?] Deux for-each, une variable et un noeud


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
    Inscrit en
    Décembre 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 56
    Par défaut [XSL - XPATH?] Deux for-each, une variable et un noeud
    Bonjour!

    Je suis bloqué au point de vue syntaxe sur un template xsl.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsl:for-each select="xml/request/list/*">
    		[...]
    	    	<xsl:variable name="nodeName" select="." />
    	    	<xsl:for-each select="/xml/filter/page/filterList/filter/fieldList/field">
    	    		<xsl:if test="visible = 'TRUE'">
    					    <xsl:value-of select="$nodeName/name"/>
    				</xsl:if>
    			</xsl:for-each>
    	</xsl:for-each>
    Voila, donc je sauvegarde le nœud du premier for-each dans une variable, j'en lance un second sur un autre chemin, j'effectue un petit test sur un noeud du for-each actuel, et si il est bon, je veux me servir de ma variable "noeud" et lui ajouter le noeud "name" du for-each en cours... mais ça ne marche pas!

    Pour une exemple de xml :

    xml/request/list/* (A savoir que selon ma page, ce ne sont pas les mêmes noms de balise, d'où l'utilité de l'étoile)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <request>
       <list>
         <elt>
           <id>9</id> 
           <name>R08006</name> 
           <dBegin>02/01/2008</dBegin> 
           <dEnd>02/01/2008</dEnd> 
           <intervalDay>0</intervalDay> 
           <ageBegin>18</ageBegin> 
           <ageEnd>67</ageEnd> 
         </elt>
    [...]

    /xml/filter/page/filterList/filter/fieldList/field
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <filterList>
    		<filter>
    			<fieldList>
    				<field>
    					<name></name>
    					<as></as>
    					<display></display>
    					<visible></visible>
    					<enabled></enabled>
    					<order></order>
    				</field>
    Quelqu'un saurait-il m'aider s'il vous plait ?

  2. #2
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    Essayez plutôt quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select="*[name()=$nodeName]/name"

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 56
    Par défaut
    Merci de votre aide, malheureusement cela ne fonctionne pas plus (c'est à dire pas du tout).

  4. #4
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="nodeName" select="." />
    ne doit pas faire ce que vous voulez car cela ne remplit pas la variable avec le nom de l'élément. Il faudrait faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="nodeName" select="name()"/>

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 56
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <xsl:for-each select="xml/request/list/*">
    	    	<xsl:variable name="nodeName" select="name()" />
    	    	<xsl:for-each select="/xml/filter/page/filterList/filter/fieldList/field">
    	    		<xsl:if test="visible = 'TRUE'">
    			       <xsl:value-of select="*[name()=$nodeName]/name"/>
    			</xsl:if>
    		</xsl:for-each>
    	</xsl:for-each>
    Ceci ne fonctionne toujours pas. La seule chose dont je suis certain c'est qu'il passe le bon nombre de fois dans les boucles.

    Mais je sens qu'on se rapproche, en effet je devais récupérer le contenu du nœud au lieu du nom de la balise, ce qui était faux.

  6. #6
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    Sans valeurs pour la partie filter, je ne peux qu'imaginer qu'il vous faut ceci...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:for-each select="/xml/filter/page/filterList/filter/fieldList/field[visible='TRUE' and name=$name]">
      <xsl:value-of select="name"/>
    </xsl:for-each>

Discussions similaires

  1. [XSL] For each avec variables imbriquées
    Par Wells dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 13/05/2008, 19h28
  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] utilisation du mode avec une variable
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 20/04/2006, 10h12
  4. [xsl] Problème avec for-each
    Par VolaiL dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 22/03/2006, 11h28
  5. [XSL] for-each et variable
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 12/01/2006, 11h42

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