E4X
出典: MDC
ECMAScript for XML (E4X) は、ネイティブ XML サポートを JavaScript に追加するプログラミング言語拡張です。これは ECMAScript プログラマにとって違和感がない形で XML 文書にアクセスできるようにするものです。DOM インタフェースを介するよりも簡潔な、XML 文書にアクセスするための新しい構文を実現することが目標です。
E4X は ECMA-357 標準(2005 年 12 月現在、第二版)で Ecma International によって標準化されています。
E4X は SpiderMonkey(Gecko の 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 オブジェクトにアクセスすることができない (bug 270553)
- E4X は XML 宣言 (
<?xml version=...?>) のパースをサポートしていない (bug 336551)。(XML が文字列であっても) 構文エラー "xml is a reserved identifier" が起こるでしょう。
回避方法:
var response = xmlhttprequest.responseText; // bug 270553
response = response.replace('<?xml version="1.0"?>', ""); // bug 336551
var e4x = new XML(response);