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]Test sur le noeud fils suivant?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut [XSL]Test sur le noeud fils suivant?
    Bonjour,

    J'aimerais arriver à tester la valeur de la balise suivante par rapport à une position donnée dans mon ficher XML.
    Mon fichier XML ressemble à ça:

    <a></a>
    <a></a>
    <a></a>
    <b></b>
    <b></b>
    <b></b>
    <b></b>
    <a></a>
    ...

    En fait, lors de l'application de ma règle sur le noeud a, j'aimeraiss avoir si le noeud suivant est un fils b et executer un traitement ou alors si je passe à un frère a et executer un autre traitement.

    Du coup, pour mon <xsl:when='' ">, je cherche une condition qui va bien...
    je pensais à un following-sibling mais ça n'a pas l'air de focntionner!

    Merci d'avance pour votre aide!

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    following-sibling::*[1]
    devrait être bon ensuite il te faut tester name() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    following-sibling::*[1]/name() = 'a'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    following-sibling::*[1]/name() = 'b'

  3. #3
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par Swoög
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    following-sibling::*[1]
    devrait être bon ensuite il te faut tester name() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    following-sibling::*[1]/name() = 'a'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    following-sibling::*[1]/name() = 'b'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    following-sibling::*[1][name() = 'a']
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name(following-sibling::*[1]) = 'a'

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Oui en effet Grandfather, name() semble réclamer un besoin d'un noeud en argument!

    Je vais tester, merci!

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    toute mes excuse, j'ai l'habitude de l'utiliser dans les prédicats donc j'en ai déduis que ça fonctionnais comme ça... de plus il me semblait l'avoir déjà utiliser ainsi, mais je dois me tromper...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Euh, de toute façon il semblerait que ça ne fonctionne pas!
    En effet, quoi qu'il arrive, le nom est tjs egal à "a" et jamais à "b", chose qui m'échappe...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    <xsl:template match="a">      
    <tr name="tr_tertiaire" style="display:none" class="ligne3">
    <xsl:if test="name(following-sibling::*[1])= 'b'"><td>/</td></xsl:if>
    Avec le xml que je vous ai mis en exemple, le test ne passe jamais...

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    essaye avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <xsl:template match="a">
    <xsl:param name="current" select="."/>      
    <tr name="tr_tertiaire" style="display:none" class="ligne3">
    <xsl:if test="name($current/following-sibling::*[1])= 'b'"><td>/</td></xsl:if>

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Visiblement, ça ne fonctionne pas...

    En fait, si j'affiche "name($current)" j'ai "a" (normal!) mais si j'affiche "name($current/following-sibling::*[1])", j'ai toujours "a" aussi, même s'il y a un "b" juste en dessous!

  9. #9
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    dans ce cas envoi ton fichier xml (avec l'element racine) et ta feuille xsl au complet (s'il n'est pas grande).

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Ok merci, je t'ai envoyé ça par mp

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/07/2009, 11h11
  2. [XSL] Test sur un xsl-if qui semble ignoré
    Par Shadow aok dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 18/04/2006, 19h23
  3. Test sur le noeud frère suivant (XSLT, XPath)
    Par rprom1 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/02/2006, 17h04
  4. [XSL] Test sur le nom d'une balise
    Par KibitO dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 18/12/2005, 14h44
  5. xsl : test sur les chaine de caractère
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 13/07/2005, 16h43

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