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] Comment sélectionner un élément ? [Débutant(e)]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Par défaut [XPath] Comment sélectionner un élément ?
    Bonjour,
    Je suis débutant dans tout ce qui concerne XML: voici mon document

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <?xml version="1.0" encoding="ISO-8859-2"?>
    <accountingAttributes>
    <element>
    <name>CHARGING.SESSION.TIME</name>
    <value>time disable</value>
    </element>
    <element>
    <name>CALLED-STATION-ID</name>
    <value>APN_t</value>
    </element>
    <element>
    <name>SERVICE-TYPE</name>
    <value>1</value>
    </element>
    <element>
    <name>NAS-IDENTIFIER</name>
    <value>mcad7p32</value>
    </element>
    <element>
    <name>USER-NAME</name>
    <value>123456789</value>
    </element>
    <element>
    <name>ACCT-SESSION-ID</name>
    <value>123456789</value>
    </element>
    <element>
    <name>CALLING-STATION-ID</name>
    <value>123456789</value>
    </element>
    <element>
    <name>FRAMED-IP-ADDRESS</name>
    <value>155.132.215.51</value>
    </element>
    <element>
    <name>ACCT-STATUS-TYPE</name>
    <value>1</value>
    </element>
    </accountingAttributes>
    En utilisant XPath je voudrais récupérer la valeur de l'élement "value" contenu dans l'element "element" et dont la valeur de l'élément "name" est "CHARGING.SESSION.TIME".

    Merci pour votre aide

  2. #2
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    //element/name[.='CHARGING.SESSION.TIME']/parent::*/value
    code non testé mais bon il doit y avoir de l'idée

  3. #3
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    je viens de tester
    fichier essai.xml
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <?xml version="1.0" encoding="ISO-8859-15"?>
    <accountingAttributes>
      <element>
        <name>CHARGING.SESSION.TIME</name>
        <value>time disable</value>
      </element>
      <element>
        <name>CALLED-STATION-ID</name>
        <value>APN_t</value>
      </element>
      <element>
        <name>SERVICE-TYPE</name>
        <value>1</value>
      </element>
      <element>
        <name>NAS-IDENTIFIER</name>
        <value>mcad7p32</value>
      </element>
      <element>
        <name>USER-NAME</name>
        <value>123456789</value>
      </element>
      <element>
        <name>ACCT-SESSION-ID</name>
        <value>123456789</value>
      </element>
      <element>
        <name>CALLING-STATION-ID</name>
        <value>123456789</value>
      </element>
      <element>
        <name>FRAMED-IP-ADDRESS</name>
        <value>155.132.215.51</value>
      </element>
      <element>
        <name>ACCT-STATUS-TYPE</name>
        <value>1</value>
      </element>
    </accountingAttributes>
    fichier essai.xsl
    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
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:output 
      encoding="ISO-8859-15"
      method="html"
      doctype-public="-//W3C//DTD HTML 4.01//EN"
      doctype-system="http://www.w3.org/TR/html4/strict.dtd"
      indent="yes" />
     
    <xsl:template match="/">
      <res>
          <xsl:apply-templates select="//element/name[.='CHARGING.SESSION.TIME']/parent::*/value" />
      </res>
    </xsl:template>
     
    <xsl:template match="value">
      <val>
        <xsl:value-of select="." />
      </val>
    </xsl:template>
     
    </xsl:stylesheet>
    fichier résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <res>
    <val>time disable</val>
    </res>

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Par défaut
    Merci bcp, c'est exactment ce dont j'avais besoin..

  5. #5
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    si cela a put t'aider
    @+

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Par défaut Sélection du nom d'un élement
    Bonjour,
    J'ai maintenant besoin de sélectionner le nom d'un élement en XPath, j'ai utilisé la fonction "name()" mais elle ne me retourne aucun résultat
    voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="ISO-8859-2"?>
    <chargingRecord>
    <userContext>
    <triggerPoint>
    <accountingType><stop/></accountingType>
    </triggerPoint>
    </userContext>
    </chargingRecord>
    Je voudrais récupérer le nom de l'élement fils de "accountingType" qui est "stop"

    Est ce qu'il y a une bonne référence que je pourrais utiliser pour trouver mes requette XPath?

    Merci d'avance

  7. #7
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    name s'utilise de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:template match = "*" >
                   <xsl:value-of select = "name()" />
    </xsl:template>
    et cela fonctionne très bien
    peux tu nous fournir ton code pour qu'on jète un coup d'oeil

  8. #8
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Par défaut
    En fait, moi j'utilise XPath soit dans Java avec un parseur SAX, ou bien avec la commande Linux "xmllint"
    La requette que j'utilise : "//accountingType/*[name()]" avec SAX elle ne me retourne aucun résultat, tandis que la requete XPath que tu m'avais donné l'autre fois marche parfaitement.

    Merci

  9. #9
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Par défaut
    coucou, , J'ai vraiment besoin d'une réponse je suis dans la merde... si XPath ne perment pas d'avoir ce que je veux, juste dites le mois comme ça je m'aventurerai sur d'autre piste , ( désolé j'ai vraiment pas le temps pr terminer la documentation de XPath c'est pkoi je pose des question de Novice)

    Merci d'avance

  10. #10
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name(/chargingRecord/userContext/triggerPoint/accountingType/*)
    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

  11. #11
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Par défaut
    Merci bcp...

  12. #12
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Par défaut
    Re,
    Voici mon sample :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="ISO-8859-2"?> 
    <chargingRecord> 
    <userContext> 
    <triggerPoint> 
    <accountingType><stop/></accountingType> 
    </triggerPoint> 
    </userContext>
    </chargingRecord>
    Là j'ai utilisé la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name(/chargingRecord/userContext/triggerPoint/accountingType/*)
    pour avoir le résultat "stop"

    Je me demande est ce qu'il y a moyen d'utiliser une requete Xpath qui ne commence pas par une fonction Xpath, car quand j'ai utilisé la requete ci dessus elle n' a pas marché dans un autre interpreteur Xpath (J'utilise le Xpath extractor de Apache Jmeter).

    Merci pour votre aide.

  13. #13
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Citation Envoyé par oumokhtar
    Je me demande est ce qu'il y a moyen d'utiliser une requete Xpath qui ne commence pas par une fonction Xpath, car quand j'ai utilisé la requete ci dessus elle n' a pas marché dans un autre interpreteur Xpath (J'utilise le Xpath extractor de Apache Jmeter).
    Dans cas, utilise l'expression sans name(), et utilise l'API (DOM) pour retrouver le nom du noeud retrouvé.
    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

  14. #14
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Par défaut
    Le problème c'est que je suis obligé d'utiliser Apache Jmeter pour automatiser les tests de validation du produit sur lequel je boss. Apache Jmeter dispose d'un composant qui s'appel "XPath Extractor" à qui on donne une requete XPath, et il nous retourne le resultat de la requete.
    Donc est ce qu'il y a moyen de reformuler ma requete pour qu'elle marche (eventuellement),
    sinon, je vais signaler un Bug dans l'application Jmeter.

    Merci GrandFather pour tes réponses, ça me rassure

  15. #15
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Par défaut
    En fait ce n'est pas un problème de Jmeter, c'etait un BUG dans une application développé en interne et qui se base sur Jmeter, Là j'ai pu résoudre mon problème, et je vous remercie tous pour vos réponse.

    A bientôt

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

Discussions similaires

  1. [Débutant] Comment sélectionner les éléments d'une liste ?
    Par kheironn dans le forum Entity Framework
    Réponses: 2
    Dernier message: 17/05/2013, 11h36
  2. Réponses: 3
    Dernier message: 12/04/2010, 18h57
  3. Réponses: 6
    Dernier message: 10/08/2007, 17h38
  4. [VB6][ListView]Comment sélectionner un élément à partir de sa clé ?
    Par exclusif dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 08/08/2007, 15h41
  5. [TTreeview] Comment sélectionner un élément de l'arbre ?
    Par altahir007 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/04/2005, 13h44

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