aboutsummaryrefslogtreecommitdiff
path: root/files/fr/utilisation_de_xpath
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/fr/utilisation_de_xpath
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/fr/utilisation_de_xpath')
-rw-r--r--files/fr/utilisation_de_xpath/index.html84
1 files changed, 84 insertions, 0 deletions
diff --git a/files/fr/utilisation_de_xpath/index.html b/files/fr/utilisation_de_xpath/index.html
new file mode 100644
index 0000000000..315d2d814d
--- /dev/null
+++ b/files/fr/utilisation_de_xpath/index.html
@@ -0,0 +1,84 @@
+---
+title: Utilisation de XPath
+slug: Utilisation_de_XPath
+tags:
+ - AJAX
+ - DOM
+ - Extensions
+ - Transformations_XML_avec_XSLT
+ - XML
+ - XPath
+ - XSLT
+translation_of: Web/XPath/Introduction_to_using_XPath_in_JavaScript
+---
+<p> </p>
+<p><a href="/fr/XPath" title="fr/XPath">XPath</a> est un langage de conversion des éléments d'un document XML. C'est une <a class="external" href="http://www.w3.org/TR/xpath">recommandation du W3C (en)</a>.</p>
+<p>Cet article décrit les interfaces de Mozilla qui exposent les fonctionnalités <a href="/fr/XPath" title="fr/XPath">XPath</a> au code JavaScript. Elles sont décrites dans <a class="external" href="http://www.w3.org/TR/DOM-Level-3-XPath/">DOM Level 3 XPath (en)</a> (qui est une note du groupe de travail du W3C pour le moment).</p>
+<p>Cet article n'a pas vocation à enseigner XPath. Si vous n'êtes pas familier avec cette technologie, veuillez vous référer au <a class="external" href="http://www.w3schools.com/xpath/">tutoriel XPath de W3Schools (en)</a>.</p>
+<h3 id="Fonction_Wrapper">Fonction Wrapper</h3>
+<p>La fonction suivante peut être utilisée pour évaluer des expressions XPath de nœuds XML donnés. Le premier argument est un nœud DOM ou un objet de Document, le second est une chaîne définissant l'expression XPath.</p>
+<pre class="eval">// Évalue une expression XPath aExpression par rapport à un nœud DOM donné
+// ou un objet de document (aNode), puis retourne les résultats en table
+// Merci à wanderingstan at morethanwarm dot mail dot com pour le
+// travail initial.
+function evaluateXPath(aNode, aExpr) {
+ var xpe = new XPathEvaluator();
+ var nsResolver = xpe.createNSResolver(aNode.ownerDocument == null ?
+ aNode.documentElement : aNode.ownerDocument.documentElement);
+ var result = xpe.evaluate(aExpr, aNode, nsResolver, 0, null);
+ var found = [];
+ var res;
+ while (res = result.iterateNext())
+ found.push(res);
+ return found;
+}
+</pre>
+<p>Cette fonction utilise <code>new XPathEvaluator()</code>. Ce constructeur est spécifique à Mozilla. Les scripts utilisés dans des pages Web qui seront affichées par les différents navigateurs existant devraient remplacer l'appel à <code>new XPathEvaluator()</code> avec le fragment de code suivant :</p>
+<pre class="eval"> // XPathEvaluator est implémenté sur les objets qui implémente Document
+ var xpe = aNode.ownerDocument || aNode;
+</pre>
+<p>Dans ce cas, la création de <a href="/fr/DOM/document.createNSResolver" title="fr/DOM/document.createNSResolver">XPathNSResolver</a> peut être simplifiée avec :</p>
+<pre class="eval"> var nsResolver = xpe.createNSResolver(xpe.documentElement);
+</pre>
+<p>Notez cependant, que <code>createNSResolver</code> ne doit être utilisé que si vous êtes sûr que les préfixes de l'espace de noms correspondent à ceux du document « interrogé ». Autrement, vous devrez fournir votre propre implémentation de XPathNSResolver.</p>
+<p>Si vous utilisez <a href="/fr/XMLHttpRequest" title="fr/XMLHttpRequest">XMLHttpRequest</a> pour un fichier XML local ou distant dans un arbre DOM (comme décrit dans <a href="/fr/Analyser_et_sérialiser_XML" title="fr/Analyser_et_sérialiser_XML">Analyser et sérialiser XML</a>), le premier argument de <code>evaluateXPath()</code> devrait être <code>req.responseXML</code>.</p>
+<h3 id="Exemple_d.27utilisation">Exemple d'utilisation</h3>
+<p>Supposons que l'on ait le document XML suivant (voir également <a href="/fr/Création_d'un_arbre_DOM" title="fr/Création_d'un_arbre_DOM">Création d'un arbre DOM</a> et <a href="/fr/Analyser_et_sérialiser_XML" title="fr/Analyser_et_sérialiser_XML">Analyser et sérialiser XML</a>):</p>
+<pre class="eval">&lt;?xml version="1.0"?&gt;
+&lt;people&gt;
+ &lt;person first-name="eric" middle-initial="H" last-name="jung"&gt;
+ &lt;address street="321 south st" city="denver" state="co" country="usa"/&gt;
+ &lt;address street="123 main st" city="arlington" state="ma" country="usa"/&gt;
+ &lt;/person&gt;
+
+ &lt;person first-name="jed" last-name="brown"&gt;
+ &lt;address street="321 north st" city="atlanta" state="ga" country="usa"/&gt;
+ &lt;address street="123 west st" city="seattle" state="wa" country="usa"/&gt;
+ &lt;address street="321 south avenue" city="denver" state="co" country="usa"/&gt;
+ &lt;/person&gt;
+&lt;/people&gt;
+</pre>
+<p>Vous pouvez « interroger » le document à l'aide d'expressions XPath. Bien que parcourir l'arbre DOM donnera des résultats similaires, l'utilisation d'expressions XPath est bien plus rapide et puissante. Si vous avez la possiblité d'utiliser des attributs <code>id</code>, <code>document.getElementById()</code> est encore puissant, mais toujours moins que XPath. Voici quelques exemples.</p>
+<pre class="eval">// affiche le nom de famille de toutes les personnes du document
+var results = evaluateXPath(people, "//person/@last-name");
+for (var i in results)
+ alert("la nom de famille de la personne #" + i + "est" + results[i].value);
+
+// recupère le nœud de la seconde personne
+results = evaluateXPath(people, "/people/person[2]");
+
+// récupère les nœuds de toutes les personnes vivant à Denver
+results = evaluateXPath(people, "//person[address/@city='denver']");
+
+// Récupère les adresses contenant "south" dans le nom de voie
+results = evaluateXPath(people, "//address[contains(@street, 'south')]");
+alert(results.length);
+</pre>
+<h3 id="Ressources">Ressources</h3>
+<ul> <li><a href="/fr/XPath" title="fr/XPath">XPath</a></li> <li><a class="external" href="http://www.topxml.com/code/default.asp?p=3&amp;id=v20021221025528">Visualiseur XPath pour Mozilla et Firefox (en)</a></li> <li><a class="external" href="http://www.w3schools.com/xpath/">Tutoriel XPath (en)</a></li> <li><a class="external" href="http://forums.mozillazine.org/viewtopic.php?t=229106">Forum de discussion sur l'utilisation de XPath (en)</a></li> <li><a class="external" href="http://zeus.jesus.cam.ac.uk/~jg307/mozilla/xpath-tutorial.html">Utiliser l'interface JavaScript de Mozilla avec XPath (en)</a> - brouillon d'un tutoriel sur l'utilisation de XPath avec JavaScript</li>
+</ul>
+<p><span>Interwiki Language Links</span></p>
+<p> </p>
+<p> </p>
+
+<p>{{ languages( { "en": "en/Using_XPath", "ja": "ja/Using_XPath", "ko": "ko/Using_XPath", "zh-cn": "cn/Using_XPath" } ) }}</p>