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émes avec un Xpath - noeud courant


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Points : 123
    Points
    123
    Par défaut [XSLT ]Problémes avec un Xpath - noeud courant
    Bonjour,

    c'est dans un code XSL, je travaille avec 2 fichiers XML , le fichier principal "projets.xml", toutes les lectures sont correctes, mais le 2eme fichier xml ("personnes.xml") que j'ouvre avec la fonction Document(), ca ne marche pas ...

    voici la structure du fichier personnes.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
    <mysql>
      <database name="personnes">
        <table>
            <fiche>
              <var name="id">..</var>
              <var name="nom">...</var>
              <var name="prenom">...</var>
              <var name="statut">...</var>
              <var name="formation">...</var>
              <var name="pageWebPerso" generation="auto"></var>
              <var name="photo"></var>
              <var name="distinctions" generation="none"></var>
              <var name="implicationprojet"><projet>projet1</projet><projet>projet2</projet></var>
              <var name="tel"></var>
              <var name="local"></var>
              <var name="courriel"></var>
              <var name="implicationlabo">5059<laboratoire>..</laboratoire></var>
            </fiche>
        </table>
      </database>
    </mysql>

    ce que je veux faire, c'est pour chaque projet du fichier projets.xml, je trouve la liste des personnes qui y sont impliquées, grace au champp <implicationprojet>

    voici mon code

    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="struct">
    <xsl:variable name="nomProjet" select="nom"/>
    <h3>
    <xsl:element name="a">
      <xsl:attribute name="href">
        <xsl:value-of select="pageWeb/francais" />
      </xsl:attribute>
      <xsl:value-of select="nom" />
    </xsl:element>
    </h3>
    <p> <xsl:value-of select="description/francais"/> </p>
    <p> État du projet: <xsl:value-of select="etat"/> </p>
    <p> la liste des personnes impliquées dans ce projet: </p>
    <p>
    	<xsl:for-each select="document('personnes.xml')/mysql/database/table/fiche">
    		<xsl:for-each select="var[@name='implicationprojet']/projet">
    			<xsl:if test="contains(var[@name='implicationprojet']/projet,$nomProjet)">
    				<li><xsl:value-of select="concat(var[@name='nom'],' ',var[@name='prenom'])"/></li>
    			</xsl:if>
    		</xsl:for-each>	
    	</xsl:for-each>
    </p>
    
    </xsl:template>
    c'est la partie du code en rouge que ca foire, cette ligne : <xsl:if test="contains(var[@name='implicationprojet']/projet,$nomProjet)"> , le test n'est jamais a true donc j'ai probléme avec mon expression Xpath

    help please


    merci.



    ...

  2. #2
    Membre éprouvé 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
    Points : 1 247
    Points
    1 247
    Par défaut
    C'est un problème de noeud courant : le xsl:for-each positionne le noeud courant comme étant un projet. A partir de là, il n'y a pas en dessous de noeud var !

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par alain.couthures Voir le message
    C'est un problème de noeud courant : le xsl:for-each positionne le noeud courant comme étant un projet. A partir de là, il n'y a pas en dessous de noeud var !
    je viens d'essayer ca à la place :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <p>
    	<xsl:for-each select="document('personnes.xml')/mysql/database/table/fiche">
    		<xsl:for-each select="var[@name='implicationprojet']/projet">
    			<xsl:if test="contains(projet,$nomProjet)">
    				<li><xsl:value-of select="concat(var[@name='nom'],' ',var[@name='prenom'])"/></li>
    			</xsl:if>
    		</xsl:for-each>	
    	</xsl:for-each>
    </p>

    mais ca n'a pas marché , le xsl:if est toujours false aussi! je ne vois pas comment je pourrais faire marcher ca ?


    merci


    ...

  4. #4
    Membre éprouvé 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
    Points : 1 247
    Points
    1 247
    Par défaut
    Il n'y a pas de "projet" sous "projet". Il faut utiliser "." pour indiquer le noeud courant.

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par alain.couthures Voir le message
    Il n'y a pas de "projet" sous "projet". Il faut utiliser "." pour indiquer le noeud courant.
    oui je l'avais deja essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <p>
    	<xsl:for-each select="document('personnes.xml')/mysql/database/table/fiche">
    		<xsl:for-each select="var[@name='implicationprojet']/projet">
    			<xsl:if test="contains(.,$nomProjet)">
    				<li><xsl:value-of select="concat(var[@name='nom'],' ',var[@name='prenom'])"/></li>
    			</xsl:if>
    		</xsl:for-each>	
    	</xsl:for-each>
    </p>

    ça na rien changé


    ...

  6. #6
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Points : 123
    Points
    123
    Par défaut
    ah noooooon c'etait cette ligne qui ne marchait pas :<li><xsl:value-of select="concat(var[@name='nom'],' ',var[@name='prenom'])"/></li>

    et en les stockant juste aprés le premier for-each dans des variables, ca marché!


    merci beaucoup


    ...

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

Discussions similaires

  1. [XSLT]problème avec for-each incompréhensible
    Par trotters213 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 21/02/2006, 10h31
  2. [XSLT] Problème avec la portée des variables
    Par sheura dans le forum XSL/XSLT/XPATH
    Réponses: 17
    Dernier message: 10/01/2006, 12h49
  3. [XSLT] Problème avec apply-templates
    Par NeoMan dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/12/2005, 14h45
  4. [xslt]Problème avec la fonction name()
    Par djangers dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 14/11/2005, 17h11
  5. [XSLT]Problème de séléction du noeud courrant
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/08/2005, 07h51

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