E4X

  • Raccourci de la révision : E4X
  • Titre de la révision : E4X
  • ID de la révision : 184317
  • Créé :
  • Créateur : Chbok
  • Version actuelle ? Non
  • Commentaire Mise à jour faite

Contenu de la révision

ECMAScript pour XML (E4X) est une extension de langage de programmation ajoutant un support XML natif à JavaScript. Cela se fait en fournissant un accès aux documents XML dans une forme qui semblera naturelle aux programmeurs ECMAScript. Son but est de proposer une syntaxe alternative et plus simple que les interfaces DOM pour accéder aux documents XML.

E4X est standardisé par l'Ecma International dans le standard ECMA-357 (actuellement dans sa première édition, de juin 2004).

E4X est implémenté (au moins partiellement) dans SpiderMonkey (le moteur JavaScript de Gecko) et dans Rhino.

Note : Dans les navigateurs basés sur Gecko 1.8 comme Firefox 1.5, E4X est déjà partiellement activé pour les auteurs de pages Web. Pour activer complètement E4X, l'élément <script> doit avoir le type MIME « text/javascript;e4x=1 » (c'est-à-dire avoir un attribut de la forme type="text/javascript;e4x=1"). La différence entre les deux modes est que sans le type MIME indiquant « e4x=1 », tous les littéraux de commentaires XML/HTML au niveau déclaratif (<!--...-->) sont ignorés afin d'assurer une rétro-compatibilité avec les astuces de masquage des scripts dans des commentaires, et les sections CDATA (<![CDATA{{mediawiki.external('...')}}]>) ne sont pas analysées comme des littéraux CDATA (ce qui mènerait à une erreur de syntaxe JS en HTML puisque l'élément <script> génère une section CDATA implicite, et de ce fait ne peux pas contenir des sections CDATA explicites).

Bogues connus et limitations

  • Il n'est actuellement pas possible d'accéder à un objet DOM depuis E4X ({{template.Bug(270553)}})
  • E4X ne supporte pas le traitement d'une déclaration XML (<?xml version=...?>) (voir {{template.Bug(336551)}}). Vous obtiendrez une erreur SyntaxError "xml is a reserved identifier" (même si le XML est une chaîne de caractères).

Solution :

var response = xmlhttprequest.responseText; // bug 270553
response = response.replace('<?xml version="1.0"?>', ""); // bug 336551
var e4x = new XML(response);

Ressources

{{ wiki.languages( { "en": "en/E4X", "it": "it/E4X", "ja": "ja/E4X", "ko": "ko/E4X" } ) }}

Source de la révision

<p><b>ECMAScript pour XML</b> (<b>E4X</b>) est une extension de langage de programmation ajoutant un support <a href="fr/XML">XML</a> natif à <a href="fr/JavaScript">JavaScript</a>. Cela se fait en fournissant un accès aux documents XML dans une forme qui semblera naturelle aux programmeurs ECMAScript. Son but est de proposer une syntaxe alternative et plus simple que les interfaces <a href="fr/DOM">DOM</a> pour accéder aux documents XML.
</p><p>E4X est standardisé par l'Ecma International dans <a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-357.htm">le standard ECMA-357</a> (actuellement dans sa première édition, de juin 2004).
</p><p>E4X est implémenté (au moins partiellement) dans <a href="fr/SpiderMonkey">SpiderMonkey</a> (le moteur JavaScript de <a href="fr/Gecko">Gecko</a>) et dans <a href="fr/Rhino">Rhino</a>.
</p><p><b>Note :</b> Dans les navigateurs basés sur Gecko 1.8 comme Firefox 1.5, E4X est déjà partiellement activé pour les auteurs de pages Web. Pour activer complètement E4X, l'élément <code>&lt;script&gt;</code> doit avoir le type MIME « text/javascript;e4x=1 » (c'est-à-dire avoir un attribut de la forme <code>type="text/javascript;e4x=1"</code>). La différence entre les deux modes est que sans le type MIME indiquant « e4x=1 », tous les littéraux de commentaires XML/HTML au niveau déclaratif (<code><span class="plain">&lt;!--...--&gt;</span></code>) sont ignorés afin d'assurer une rétro-compatibilité avec les astuces de masquage des scripts dans des commentaires, et les sections CDATA (<code>&lt;![CDATA{{mediawiki.external('...')}}]&gt;</code>) ne sont pas analysées comme des littéraux CDATA (ce qui mènerait à une erreur de syntaxe JS en HTML puisque l'élément <code>&lt;script&gt;</code> génère une section CDATA implicite, et de ce fait ne peux pas contenir des sections CDATA explicites).
</p>
<h3 name="Bogues_connus_et_limitations"> Bogues connus et limitations </h3>
<ul><li> Il n'est actuellement pas possible d'accéder à un objet DOM depuis E4X ({{template.Bug(270553)}})
</li><li> E4X ne supporte pas le traitement d'une déclaration XML (<code>&lt;?xml version=...?&gt;</code>) (voir {{template.Bug(336551)}}). Vous obtiendrez une erreur SyntaxError "xml is a reserved identifier" (même si le XML est une chaîne de caractères).
</li></ul>
<p>Solution :
</p>
<pre class="eval">var response = xmlhttprequest.responseText; // bug 270553
response = response.replace('&lt;?xml version="1.0"?&gt;', ""); // bug 336551
var e4x = new XML(response);
</pre>
<h3 name="Ressources"> Ressources </h3>
<ul><li> Consultez la liste des <a href="Special:Tags?tag=E4X&amp;language=fr">pages concernant E4X</a> sur Mozilla Developer Center.
</li><li> <a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-357.htm">Le standard ECMA-357</a>
</li><li> <a class="external" href="http://www.faqts.com/knowledge_base/index.phtml/fid/1762">E4X sur faqts.com</a>
</li></ul>
{{ wiki.languages( { "en": "en/E4X", "it": "it/E4X", "ja": "ja/E4X", "ko": "ko/E4X" } ) }}
Revenir à cette révision