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] Sélection multiple?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 10
    Points
    10
    Par défaut [XPath] Sélection multiple?
    Bonjour à tous,

    J'aimerai savoir si il est possible de récupérer plusieurs éléments avec du XPath.

    En gros, j'ai actuellement un fichier comme celui-ci :

    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
    	<articles>
    	   <article nom="XPath">   
    		<auteurs>
    		 <auteur>
    		  <nom>Dupont</nom>
    		 </auteur>
    		 <auteur>
    		  <nom>Dubois</nom>
    		 </auteur>
    		</auteurs>
    	   </article>
    	   <article nom="TestoXpath">   
    		<auteurs>
    		 <auteur>
    		  <nom>Testoman1</nom>
    		 </auteur>
    		 <auteur>
    		  <nom>Testoman2</nom>
    		 </auteur>
    		</auteurs>
    	   </article>
    	</articles>
    J'aimerai pouvoir récupérer une liste de tout les auteurs (ici : [Dupont, Dubois, Testoman1, Testoman2])

    J'ai tenté "//auteur/text()" mais cela ne me renvoi que le premier terme, y'a t'il une solution à mon problème? Je n'ai pas franchement une grande expérience du Xpath et je ne sais pas très bien ce qu'il est possible de faire ou non avec.

    Merci d'avance,

    Yod

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Prendre un chemin plus simple en ne pensant que des éléments.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <xsl:template match="/">
        <xsl:apply-templates select="articles/article/auteurs" />
    </xsl:template>
    <xsl:template match="auteurs">
        <xsl:for-each select="auteur">
            <nom><xsl:value-of select="nom" /></nom>
        </xsl:for-each>
    </xsl:template>
    Comme ça, c'est plus simple à comprendre.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 633
    Points
    21 633
    Par défaut
    Oui, mais la question porte sur XPath, pas sur XSLT.
    Si c'est bien pour faire une transformation XSLT simple, tsuji a raison.

    Sinon :

    avec l'exemple donné, //auteur/text() renvoie 8 nœuds, pas un. Et ils sont entièrement composés de fins de ligne et d'espace, aucun d'entre eux ne contient de nom. Ce sont les text() qui sont directement enfants des balises <auteur>, autrement dit les textes frères des balises <nom>.

    Donc, je le répète :
    - avec l'exemple donné, ce XPath donne 8 nœuds, pas un.
    - avec l'exemple donné, ce XPath ne donne que de l'espacement, et rien d'utile, même pas un.

    Pour obtenir tous les noms, il fallait faire ceci : //auteur/nom et on y préfèrera ceci : /articles/article/auteurs/auteur/nom, qui est bien plus explicite et rapide.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    En effet, j'ai oublié le nom quand j'ai fait mon exemple sur le forum .

    J'ai pas contre toujours le problème du retour unitaire mais en fouillant un peu je pense que cela ne vient pas du XPath en lui même mais de la fonction que j'utilise pour l'interpréter.
    (J'utilise la fonction java d'un logiciel Open source appelé Bonita mais j'ai l'impression qu'elle est un peu limitée)



    Merci quand même à vous je vais chercher dans une autre direction

Discussions similaires

  1. [XPATH] sélection multiple de noeuds en même temps
    Par ely85 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/02/2008, 22h01
  2. créer un [ComboBox ??? ] à sélection multiple ?
    Par chasseur37 dans le forum Bases de données
    Réponses: 7
    Dernier message: 20/07/2005, 08h52
  3. [XPATH] Addition, multiplication binaire
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/04/2005, 08h32
  4. [XPATH] Sélection Dates
    Par cloogy dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 05/04/2005, 17h33
  5. [JList] bloquer la sélection multiple
    Par soad dans le forum Composants
    Réponses: 2
    Dernier message: 05/08/2004, 23h28

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