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] algo pour creer arborescence


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut [XSL] algo pour creer arborescence
    bonjour,
    j ai une liste d elements du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <xml>
    <el niveau="1">
    </el>
    <el niveau="1">
    </el>
    <el niveau="2">
    </el>
    <el niveau="3">
    </el>
    <el niveau="3">
    </el>
    <el niveau="2">
    </el>
    </xml>
    ...des éléments à pplat. Mon but est de reconstruire l arborescence en respectant les niveaux. le resultat attendu devrait etre ceci:
    <xml>
    <el niveau="1">
    </el>
    <el niveau="1">
    <el niveau="2">
    <el niveau="3">
    </el>
    <el niveau="3">
    </el>
    </el>
    <el niveau="2">
    </el>
    </el>
    </xml>

    je suis en train de réfléchir en utilisant des bornes se limitant a des morceaux de niveau avec position mais je suis sur qu il est possible de faire qq chose de plus efficace avec le preceding-sibling par exemple.

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    c'est maintenant pratiquement un cas d'école : http://www.developpez.net/forums/vie...354931#1354931
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    vais regarder ça mais à premiere c est exactement ce cas là.
    Vraiment merci Grand father.
    Et toujours à premiere vue, qd je vois le niveau du xsl...je risquais pas de trouver bien vite!

    Je ne sais pas si ça va fonctrionner mais merci encore...vais pouvoir étudier ça!

  4. #4
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    ça marche super avec qq modifs évidemment.
    par contre je suis en train de le lire et j ai bcp de mal à le comprendre ce qui m ennui beaucoup.
    En particulier ce qui me dérange vraiment beaucoup c 'est l utilisation du generate-id() ...je ne vois pas bien en quoi il peut servir pour le tri.

    Peut etre qq lumieres pourraient etre apportées sur le sujet (en particulier ds le thread concerné)... moi ça m interesse de comprendre en tout cas

    Merci encore cela dit

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par tiscars
    En particulier ce qui me dérange vraiment beaucoup c 'est l utilisation du generate-id() ...je ne vois pas bien en quoi il peut servir pour le tri.
    generate-id() renvoie un id unique (deux noeuds de la même source XML ne peuvent pas avoir le même id) désignant le noeud passé en paramètre. On utilise generate-id() le plus fréquemment (en tout cas je ne ne lui connais pas beaucoup d'autres utilisations) pour vérifier si deux noeuds renvoyés par des expressions XPath différentes désignent en fait le même noeud.

    Dans l'exemple que je t'ai donné, le traitement des éléments <texte> se fait de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="following-sibling::texte[generate-id(preceding-sibling::section[1]) = generate-id(current())]"/>
    Décomposons la requête XPath :
    • On part d'un élément <section>, le noeud courant
    • On sélectionne tous les éléments <texte> frères du noeud courant, jusqu'à la fin de la source XML ; on ne veut cependant que les noeuds <texte> compris entre le noeud courant et le noeud <section> suivant, c'est ce que le prédicat qui suit va nous permettre d'établir
    • Dans la liste des noeuds <texte> sélectionnés précedemment, on ne va retenir que ceux dont l'id attribué à la première section les précédant est le même que celui du noeud courant (il s'agit donc du même noeud). Ca va donc exclure tous les noeuds <texte> qui suivent le premier noeud <section> venant après le noeud courant (qui est un <section>, je le rappelle), puisque les id de ces <section> sont différents.

    C'est plus clair comme cela ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  6. #6
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    g besoin de relire et de réfléchir...
    honnêtement c est chaud ^o^;

Discussions similaires

  1. Probleme de lecture d'algo pour creer un labyrinthe
    Par Flow_75 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 15/01/2009, 19h16
  2. [XSLT]Algo pour créer une arborescence
    Par Yudala dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/03/2007, 14h49
  3. [XSL] aide pour lire un id de noeud enfant.
    Par stebar dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 01/07/2004, 13h38
  4. [xsl] xsl juste pour faire copie d'un xml
    Par peppena dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/02/2004, 16h17
  5. [XSL-FO] xml vers xsl-fo (pour generation PDF ou RTF)
    Par dams50 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 13/12/2003, 21h07

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