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 :

Parcourir deux fois XML ?


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Par défaut Parcourir deux fois XML ?
    Bonjour,

    Je débute en XML/XSLT et je me pose une question : Peux t'on parcourir deux fois un fichier XML ou récupérer à deux endroit différent du fichier XSLT les valeurs d'un attribut ?

    Je m'explique, j'ai un fichier XML contenant un tarif et son arborescence (Chapitre, Sous chapitre, Article, Prix).
    Je parcours ce fichier pour mettre en forme ce tarif, jusque là pas de problème.

    Maintenant je souhaite faire un menu (à l'image des signets sous pdf). Ce menu doit contenir les Chapitres et Sous chapitre contenu dans le XML.

    J'ai trouvé sur le net un bout de code en javascript qui fonctionne, mais je n'arrive pas à récupérer une deuxième fois les valeur des attributs Chapitre et Sous chapitre.

    Quelqu'un à une idée ?

  2. #2
    Membre Expert 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
    Par défaut
    Pour qu'une transformation XSLT puisse être appliquée, il faut tout d'abord charger le document XML en mémoire : c'est comme une petite base de donnée et l'on peut accéder autant de fois que l'on veut à n'importe quel élément

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Par défaut
    Citation Envoyé par alain.couthures Voir le message
    Pour qu'une transformation XSLT puisse être appliquée, il faut tout d'abord charger le document XML en mémoire : c'est comme une petite base de donnée et l'on peut accéder autant de fois que l'on veut à n'importe quel élément
    J'ai pas tout compris alors !!!
    Je pensais que le programme XSLT pourcourait le fichier XML une fois en séquentiel et en générait un fichier HTML.

    J'ai essayé de mettre deux fois :
    <xsl:template match="chapitre">
    mais ça en fonctionne pas.

  4. #4
    Membre Expert 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
    Par défaut
    Un <xsl:template match=""> correspond à la déclaration de ce qu'il faut faire quand on traite tous les fils du noeud courant... Mettre 2 templates pour un même élément n'est pas interprété comme voulant dire d'abord le premier puis le second...

    Ce n'est pas facile à comprendre quand on débute et, pour commencer, quand on a ce qu'on peut appeler un arbre régulier (c.a.d. avec toujours le même niveau pour un type de noeud donné), il est plus simple de n'utiliser qu'un <xsl:template match="/"> et d'utiliser des <xsl:for-each> pour les boucles : comme cela on parcourt l'arbre presque comme avec un L3G (les variables sont constantes...)

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Par défaut
    Je me suis mal exprimé.

    Je vais prendre un exemple :
    Comment fait on pour mettre la valeur d'un attribut à la fois dans la section HEAD et dans la section BODY sans passer par une variable ?
    Dans la section BODY, j'ai un <xsl:value-of select="./attribut"/>.
    Mais comment est ce que je peux récupérer cette donnée une deuxième fois ?

  6. #6
    Membre Expert 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
    Par défaut
    Le plus simple pour s'en sortir est de poster un extrait de votre document en entrée et ce que cela doit être en sortie ...

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Par défaut
    Merci Alain

    Avec l'attribut mode ça fonctionne nikel.

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

Discussions similaires

  1. Parcourir un fichier texte deux fois
    Par edogawa dans le forum Général Java
    Réponses: 15
    Dernier message: 04/05/2011, 12h08
  2. Parcourir deux fois le même OracleDataReader
    Par DeveloppeurWeb dans le forum ASP.NET
    Réponses: 6
    Dernier message: 12/11/2010, 18h46
  3. [DOM] Lire deux fichiers xml à la fois
    Par n_adou dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/06/2008, 21h33
  4. Réponses: 14
    Dernier message: 30/03/2005, 21h50
  5. Sélectionner un même enregistrement deux fois...
    Par Manu0086 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 02/02/2004, 13h09

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