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

Taglibs Java Discussion :

xml : quelle syntaxe XPath ?


Sujet :

Taglibs Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut xml : quelle syntaxe XPath ?
    Salut,

    J'ai un document XML de forme relativement simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <news>
      <article id="1">
        <auteur></auteur>
        <titre></titre>
        <contenu></contenu>
      </article>
      <article id="2">
        <auteur></auteur>
        <titre></titre>
        <contenu></contenu>
      </article>
      ...
    </news>
    Et je souhaite simplement récupérer tous les nœuds "auteur".
    En XPath, je pense que c'est ainsi que cela se fait : //news/article/auteur
    Mais lorsque j'utilise la JSTL pour parser mon document, je procède grosso modo ainsi :

    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
    <x:parse var="doc">
    <news>
      <article id="1">
        <auteur></auteur>
        <titre></titre>
        <contenu></contenu>
      </article>
      <article id="2">
        <auteur></auteur>
        <titre></titre>
        <contenu></contenu>
      </article>
      ...
    </news>
    </x:parse>
    <x:out select="$doc/news/article/auteur" />
    Et là se pose le problème : comment je fais pour utiliser la propriété // du langage XPath ici, avec cette variable $doc qui doit marquer le début de mon expression ? J'ai essayé un tas de trucs différents, mais au final je ne parviens à récupérer que le premier auteur du premier article...

    Help !
    Merci.

  2. #2
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut
    Bonjour,

    l'expression XPath que tu cherche est :

    après, pour la variable, je crois qu'il faut utiliser {$doc}.

  3. #3
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut
    Non pour la variable, c'est bien $doc. La syntaxe ${} est réservée aux EL.

    Le problème, c'est que lorsque je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <x:out select="$doc//auteur" />
    Je ne récupère qu'un seul auteur, le premier : "Pierre".
    Et non pas : "Pierre Paul Jaques".

    Comment récupérer tous les nœuds "auteur" du document ?

    J'ai tenté de placer le // avant la variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <x:out select="//$doc/news/article/auteur" />
    Mais ça ne marche pas :
    javax.servlet.ServletException: javax.servlet.jsp.JspTagException: javax.xml.xpath.XPathExpressionException
    Merci !

  4. #4
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut
    Est-ce que je suis obligé d'utiliser une boucle pour obtenir la liste des auteurs ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <x:forEach var="news" select="$doc/news/article">
    	<x:out select="$news/auteur" />
    </x:forEach>
    Il n'est pas possible de faire autrement ?
    Impossible d'utiliser directement la fonctionnalité // du langage XPath dans mon expression et ainsi éviter de devoir faire une boucle ?

Discussions similaires

  1. xml listbox et xpath
    Par Dargos30 dans le forum C#
    Réponses: 1
    Dernier message: 16/08/2007, 22h18
  2. system.xml.Xsl et xpath?
    Par samir dans le forum C#
    Réponses: 1
    Dernier message: 29/03/2007, 17h38
  3. Réponses: 8
    Dernier message: 02/05/2006, 16h07
  4. quelle syntaxe svp pour ce code ?
    Par man123 dans le forum Langage
    Réponses: 10
    Dernier message: 16/11/2005, 00h05
  5. Cours en Français sur XML-XSL et XPath
    Par Community Management dans le forum XSL/XSLT/XPATH
    Réponses: 0
    Dernier message: 25/04/2002, 15h46

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