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 :

[XPATH] Quelle requête pour récupérer un noeud avec filtre sur ses enfants


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 53
    Points
    53
    Par défaut [XPATH] Quelle requête pour récupérer un noeud avec filtre sur ses enfants
    Bonjour à tous,

    Aprés avoir parcouru le forum sans trouver réponse à mon problème, voici la problématique que je vous soumets:
    Dans le code xml suivant, j'aimerai récupérer le noeud theme portant le nom Accueil, mais pas toutes les sections contenues dans ce theme. Je voudrai par exemple récupérer le noeud Accueil avec les sections du groupe 1.
    Si j'utilise cette requête xpath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ./menu/theme[@name='Accueil']
    Je récupère bien le noeud ainsi que tous ses enfants.
    Si j'utilise cette requête xpath:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./menu/theme[@name='Accueil']/section[@group=1]
    Je récupère bien les enfants avec l'attribut demandé, mais j'ai seulement les enfants sans le noeud parent.

    Je recherche donc le moyen d'effectuer une requête xpath qui produirait le résultat de la première mais en filtrant en même temps les enfants.

    Merci d'avance pour votre aide!

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?xml version="1.0" encoding="utf-8"?>
    <menu>
       <theme name='Accueil'>
                <section name='Menu Principal' group=1>
                    <bouton></bouton>
                    <bouton></bouton>
                    <bouton></bouton>
                </section>
                <section name='Autre section' group=1>
                    <bouton></bouton>
                    <bouton></bouton>
                    <bouton></bouton>
                </section>
                <section name='Et une autre section' group=2>
                    <bouton></bouton>
                    <bouton></bouton>
                    <bouton></bouton>
                </section>
       </theme>
       <theme name='Autre theme'>
                <section name='Menu Principal' group=1>
                    <bouton></bouton>
                    <bouton></bouton>
                    <bouton></bouton>
                </section>
       </theme>
    </menu>

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Points : 231
    Points
    231
    Par défaut
    Bonjour,

    Ce n'est pas possible. Si tu sélectionnes le parent, tu récupères tous ses enfants.

    En revanche, si tu sors dans un nouveau fichier XML, tu peux ne sélectionner que les enfants qui t'intéressent et reconstruire le parent.

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    joue avec les "mode"
    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
    17
    18
     
    	<xsl:template match="/">
    		<xsl:apply-templates select="./menu/theme[@name='Accueil']" mode="accueil"/>
    	</xsl:template>
     
    	<!-- ACCUEIL -->
    	<xsl:template match="theme" mode="accueil">
    		<xsl:apply-templates select="./section[@group='1']" mode="accueil"/>
    	</xsl:template>	
     
    	<xsl:template match="section" mode="accueil">
    		<xsl:value-of select="@name"/>
    	</xsl:template>	
     
    	<!-- OTHER -->
    	<xsl:template match="section">
    		<xsl:value-of select="@name"/>
    	</xsl:template>

  4. #4
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 53
    Points
    53
    Par défaut
    Merci pour vos réponses, j'avais laissé tombé.. désolé pour le non retour

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

Discussions similaires

  1. [JDOM] Problème pour lire les noeuds avec JDOM
    Par Eclix dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 26/05/2014, 18h11
  2. Réponses: 2
    Dernier message: 31/10/2011, 13h48
  3. [XPath] test d'existence de noeud avec conditions sur les enfants
    Par MasterOfChakhaL dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 11/04/2007, 10h42
  4. Réponses: 1
    Dernier message: 08/03/2007, 10h55
  5. Requête pour récupérer le nom des champs
    Par legillou dans le forum JDBC
    Réponses: 1
    Dernier message: 08/02/2006, 16h09

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