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 > Acceder un élement du noeud suivant


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut XSLT > Acceder un élement du noeud suivant
    Bonjour !

    Je cherche depuis plusieurs heures deja comment accéder a un element du noeud suivant mon noeud courant, et je crois toucher au but... j'aurais besoin d'un dernier petit coup de pouce !

    Voici mon xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ...
    <ligne>
       <num>123<num>
       ...
    </ligne>
    <ligne>
       <num>123<num>
       ...
    </ligne>
    <ligne>
       <num>345<num>
       ...
    </ligne>
    Mon probleme est simple: Je parcours et affiche chaque ligne, et j'aimerai tester si le num de ma ligne en cours est le meme que celui de la ligne suivante (ou précédente, peu importe), de maniere a les regrouper.

    L'element "following-sibling" me permet d'acceder au noeud suivant, mais impossible de récupérer seulement l'element num qui m'interresse ! Voici mon xsl:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:for-each select="ligne">
        <xsl:if test="num != following-sibling::num">...</xsl:if>
        ...
    </xsl:for-each>
    Je m'escuse d'avance de la simplicité de cette question, je ne suis pas vraiment a l'aise avec le xsl et je commence a perdre patience a chercher !

    Merci d'avance,

    Soisik

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !!

    en effet, tu est très proche du but !

    analysons un peu la situation, à l'endroit où se situe le following-sibiling, le noeud courant est un <ligne> (et tu souhaites avoir le num de la ligne, dans ce cas, suivante)

    following-sibiling va faire référence à tous les noeuds frères de notre noeud ligne qui sont situés après celui-ci, il te faut donc effectuer un premier tri : ne prendre que les <ligne>s, donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    following-sibiling::ligne
    Maintenant, il te faut spécifier que c'est le noeud <ligne> juste suivant que tu veux, il faut alors jouer avec la propriété position :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    following-sibiling::ligne[position()=1]
    là, j'ai un petit doute : est-ce qu'il faut mettre =1, =0 ou =last(), à toi de voir, tu feras les tests

    ensuite, il te faut indiquer que c'est le fils num du ligne suivant que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    following-sibiling::ligne[position()=1]/num
    personellement, j'ai pris pour habitude de toujours faire partir mes chemins du noeud courant : ./ ainsi, on n'oublie pas que nous sommes, non pas dans le noeuds qu'on veut atteindre, mais bien dans son parent, ce qui nous donne donc pour test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./num = ./following-sibiling::ligne[position()=1]/num
    le seul point à voir est vérifier à quoi il faut comparer position(), si c'est à 0, 1 ou last(), je ne sais plus exactement, je te laisserais faire les tests si cela ne te dérange pas...

    Bonne chance, Bon Courage et Bonne continuation,
    Swoög
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup, en effet ca marche !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./following-sibling::ligne[position()=1]/num

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

Discussions similaires

  1. [XSLT] Template sur le noeud suivant
    Par cris83500 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 06/01/2011, 11h28
  2. [XSLT] Afficher un attribut d'un noeud pere
    Par Oberown dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/10/2006, 11h10
  3. [XSLT] Obtenir la position d'un noeud
    Par zoubidaman dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/09/2006, 09h34
  4. [XSLT] remplacer le contenu d'un noeud
    Par casgr1 dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 29/06/2006, 09h50
  5. [XSLT] Connaitre le chemin d'un noeud
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 02/03/2006, 13h48

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