E4X

廃止

警告: E4X は廃止されました。 この機能は、Firefox 17 において content 向けにはデフォルトで無効となり、Firefox 20 では chrome 向けにもデフォルトで無効となる予定です。 そして、Firefox 21 において削除される予定となっています。 代わりに、DOMParser/DOMSerializer や非ネイティブの JXON アルゴリズムを使用してください。

ECMAScript for XML (E4X) は、ネイティブ XML サポートを JavaScript に追加するプログラミング言語拡張です。これは ECMAScript プログラマにとって違和感がない形で XML 文書にアクセスできるようにするものです。DOM インタフェースを介するよりも簡潔な、XML 文書にアクセスするための新しい構文を実現することが目標です。

E4X は ECMA-357 標準(2005 年 12 月現在、第二版)で Ecma International によって標準化されています。

E4X は SpiderMonkeyGecko の JavaScript エンジン)および Rhino (Java で書かれた JavaScript エンジン) で(少なくとも部分的に)実装されています。

注意:Firefox 1.5 など、Gecko 1.8 ベースのブラウザでは、既にウェブページ作者向けに E4X が部分的に有効化されています。E4X を完全に有効化するには <script> 要素に "text/javascript;e4x=1" という MIME タイプを持たせる必要があります(すなわち type="text/javascript;e4x=1" という形式の属性を持たせる)。2 つのモードの違いは、"e4x=1" がない MIME タイプではあらゆるステートメントレベルの XML/HTML コメントリテラル (<!--...-->) が、スクリプト部分をコメントアウトする手法との後方互換性のために無視されることです。さらに CDATA セクション (<![CDATA[...]]>) は CDATA リテラルとしてパースされません(HTML の <script> 要素は暗黙の CDATA セクションを作りますが、そこには明示的な CDATA セクションを含めることができないため、これは HTML において JS 構文エラーを引き起こします )。

既知のバグと制限

  • 今のところ E4X を通じて DOM オブジェクトにアクセスすることができない (バグ 270553)
  • E4X は XML 宣言 (<?xml version=...?>) のパースをサポートしていない (バグ 336551)。(XML が文字列であっても) 構文エラー "xml is a reserved identifier" が起こるでしょう。

回避方法:

var response = xmlhttprequest.responseText; // bug 270553

response.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>/, ""); // bug 336551

var e4x = new XML(response);

資料

関連情報

Document Tags and Contributors

Contributors to this page: Taken, nobuoka, ethertank, Marsf, Electrolysis, Mgjbot, Okome, yyss
最終更新者: yyss,