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

JavaScript Discussion :

Xpath - balise XML


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 22
    Points : 20
    Points
    20
    Par défaut Xpath - balise XML
    Bonjour,

    Je me suis remis depuis peu à la programmation web, et je débute en xml ainsi qu'en xpath. J'ai regardé le tuto http://jerome.developpez.com/xmlxsl/xpath/ pour filtrer mon xml en fonction de certaines conditions.

    Dans ma page web, j'ai une balise xml comme en dessous ( je l'ai simplifié pour le message ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <xml id="caracteristiques">
    	<addperso>
    		<carac Race="test1" value="valeur"></carac>
                    <carac Race="test2" value="velur2"></carac>
    	</addperso>
    </xml>
    Je souhaite récupérer en xpath toutes mes balises carac de mon xml ayant l'id caractéristiques en fonction de plusieurs paramètres (au début j'utilisais document.getElementsByTagName mais j'ai préféré essayer le xpath pour éviter de parcourir chaque balise carac, et tester chaque attribut)

    Néanmoins, firefox / IE me dit comme quoi la fonction xml.XMLDocument n'existe pas, je pense avoir oublié un truc tout bête mais je ne vois pas quoi J'ai cherché sur la FAQ, mais je n'ai trouvé aucun code ne chargeant pas un fichier xml.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var xml = document.getElementById("caracteristiques");
    var node = xml.XMLDocument.selectNodes("//carac[(@Race='test1')]");
    Merci d'avance.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 205
    Points : 285
    Points
    285
    Par défaut J'ai un doute
    Par expérience je sais qu'un navigateur comme IE6 perd tous ces moyens si tu lui envois un xml de ce type dans le navigateur.

    Pour les autres navigateurs la situation est plus complexe en ce qui concerne le xpath qui n'est pas implémenté par défaut. J'ai déjà essayer de faire ce que tu cherches et je ne suis pas arriver (cela ne veux pas dire que c'est impossible ...) .

    Je pourrais te conseiller de parser ton xml cote serveur (en php si c'est ton cas) et de le transformer en html. Pour faire ensuite des recherches cote client dans le navigateur je te conseillerai d'utiliser la bibliothèque jquery qui propose des fonctions (mais pas le xpath) assez poussées pour résoudre ce type de problème.

    Voili si cela a pu t'éclairer ....

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Mince je ne savais pas pour ie6.

    Pour accéder à la propriété selectNodes(), a t on besoin de quelque chose d'autres que XMLDocument ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    En fait j'ai réussi mais cela ne fonctionne que sous ie6 & ie7 (bizarre hein , c'est encore du 'crosoft)

    En fait, je suis en train de chercher pour surcharger la méthode selectNodes() juste pour firefox & les autres navigateurs mais j'y connais absolument rien est ce que quelqu'un aurait une idée ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut pourquoi ne pas parser par xslt
    Bonsoir,

    Je me trompes peut être, mais il serait peut être plus facile de parser ton xml avec du xslt.

    code xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/xsl" href="add_perso.xsl"?>
    <add_perso>
    	<perso id="1" race='nain'>gimli</perso>
    	<perso id="2" race='elfe'>legolas</perso>
    </add_perso>
    code xslt
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <html>
    <head>
    </head>
    <body>
    <xsl:for-each select="add_perso">
    <h1><xsl:value-of select="perso[@id='1']"></xsl:value-of></h1>
    </xsl:for-each>
    </body>
     
    </html>
    </xsl:template>
    </xsl:stylesheet>
    d'autant que tu peux mettre du javascript sur ta page xslt de la même manière que sur une page html.Tu peux donc passer n'importe quoi en paramètre et avoir une réponse dynamique.

    Moi, cela me permet de contourner les problèmes de liaisons xml/xsl posés par les différents navigateurs.

    Si ce n'est pas pour le test du Xpath sur un attribut, je te conseille plutôt d
    'utiliser le xml de cette façon.

    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/xsl" href="add_perso.xsl"?>
    <add_perso>
    	<perso id="1">
    	  <nom>gimli</nom>
    	  <race>nain</race>
    	  <caractere>bonne pate</caractere>
    	</perso>
    	<perso id="2"> 
    	 <nom>legolas</nom>
    	  <race>elfe</race>
    	  <caractere>un peu pretentieux</caractere>
    	</perso> 
    </add_perso>
    le fichier xsl devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <body>
    <xsl:for-each select="add_perso/perso[@id='1']">
    <h1><xsl:value-of select="nom"></xsl:value-of></h1><br/>
    <h1><xsl:value-of select="race"></xsl:value-of></h1>
    </xsl:for-each>
    </body>
    J'espère que c'est quelque chose dans ce gout là que tu souhaites obtenir et que je ne fais pas un hors sujet magistral.

    Bonne prog

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    wahou, merci pour ta réponse

    En fait, j'avais besoin d'un xml pour garder des données dans ma page pour intéragir dynamiquement avec son contenu. J'aurais pu le faire en ajax, et donc recharger mais je voulais éviter de me connecter à la bdd à chaque interaction.

    Par contre, en xsl ça pourrait être pas mal (je comprend mieux le fonctionnement maintenant) mais il faut pour ça que je génère ma page dès le début je pense.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Content d'avoir pu répondre à ton problème , toutefois pour xslt, je te conseille les excellents tutoriels du site ainsi que la faq et le forum qui y sont consacrés.

    En revanche, si ça ne concerne plus javascript, continue le post sur le forum concerné. Histoire de ne pas t'attirer les foudres des modos et des admins.(Ils ont déjà du boulot !)

    Bonne Soirée et @+

    cinmot

Discussions similaires

  1. [XML] string et balise XML <??>
    Par Royd938 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/10/2005, 16h51
  2. [Configuration] Confusion de balises XML / PHP
    Par teto dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 10/09/2005, 13h40
  3. [JDOM] données un attribut à une balise xml
    Par noobiewan kenobi dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 09/07/2004, 15h54
  4. [Balise XML] Comment récupérer le contenu entre 2 balise?
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/03/2004, 16h36
  5. Requete XPath: neoud XML et string
    Par alexandre54 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/06/2003, 13h02

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