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] Identifier une feuille d'un arbre


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [XSLT] Identifier une feuille d'un arbre
    Bonjour,

    J'ai un doc XML qui à la structure suivante:
    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
    <task id="1">
      <task id="1.1">
        <task id="1.1.1"/>
        <task id="1.1.2"/>
      </task>
    <task id="1.2"/>
    </task>
      <task id="2">
        <task id="2.1"/>
        <task id="2.2">
        <task id="2.2.1"/>
        <task id="2.2.2"/>
        <task id="2.2.3"/>
      </task>
    </task>
    </tasks>
    J'arrive à parcourrir mon arbre mais je n'arrive pas à identifier les feuilles c'est à dire dans l'exemple ci-dessus les tâches:
    1.1.1
    1.1.2
    1.2
    2.1
    2.2.1
    2.2.2
    2.2.3

    Je voudrais leur appliquer une apparence différente lorsque j'affiche l'ensemble de l'arbre dans une table HTML.

    La XSLT dans l'état actuel se trouve en attachment.

    Quelqu'un a-t-il une idée?

    Merci d'avance,

    NB
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Tu identifies pourtant bien à la fin du <xsl:template match="task"> si tu as un sous-noeud <task> avant de faire l'appel récursif. Si tu n'as pas de sous-noeud c'est que tu es sur une feuille.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai trouvé une solution au problème.
    Il suffit d'utiliser:
    <xsl:value-of select='count(task)'/>

    Si count retourne 0 alors le noued est une feuille.

    Merci à tous ceux qui ont planché sur le sujet et j'espère que cette solution aidera ceux qui ont rencontré le même problème

    NB

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Une feuille est un élément sans fils, en xpath cela se code par

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 15/04/2010, 22h41
  2. Exception lors d'un clic sur une feuille d'un arbre
    Par gerudo dans le forum Langage
    Réponses: 4
    Dernier message: 24/04/2009, 09h59
  3. Réponses: 1
    Dernier message: 22/07/2008, 17h05
  4. [XSLT] créer une feuille de style
    Par Robert32 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 21/12/2006, 10h31
  5. [XSLT]utiliser une feuille xsl pour traiter différents xml
    Par pistache42 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/05/2006, 18h19

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