2012-02-15 10 views
4

私はECMA-262に基づいてJavaScriptパーサを書いています。私はそれをECMA-357と互換性を持たせるためにどれだけ変化させる必要があるか知りたいと思っています。ECMA-262とECMA-357の構文に違いはありますか?

構文的に違いはありますか?

+2

ブラウザではE4XはFirefoxのみでサポートされているので、ここでは非難されています。この時点でデッドテックのように見えます。 – duskwuff

+0

@duskwuff:おっと...あなたがhttps://bugzilla.mozilla.org/show_bug.cgi?id=389123#c9を見つけたと言った後、それは本当に静かに非難されたようです。私は、7年後に他のブラウザベンダーが実装していないことを考えると、彼らはただの結果に過ぎないと思う。 –

答えて

3

多くの構文拡張があります。最も重要なのは(セクション11.1.4および11.1.5を参照)XMLリテラルである:

var foo = <xml> 
    foo 
</xml>; 
var bar = <> 
    <tag attr={(1+2).toFixed(2)}/> 
    {foo} 
</>; 

上記の例のXMLコードに空のルートタグとJavaScript表現の特殊な場合を示しています。

あなたはまた、ECMA-262には有効ではない、いくつかの表現を持っている(11.2節を参照してください):

[email protected]   // get attribute attr 
xml.*    // get all child elements 
[email protected]*    // get all attributes 
xml..foo   // get all <foo> tags 
xml..foo.(@id == 1) // filter <foo> tags by id attribute 

がある名前空間が(セクション11.1.2を参照してください):あり

xml.soap::foo  // get <foo> child tags with namespace soap 
[email protected]::attr  // get attribute with namespace soap 

構文的には非常に珍しい構造です既定のXML名前空間のステートメントがある(12.1節を参照してください):

default xml namespace = new Namespace("http://foo/bar"); 

Fiを提供してナリーは、for .. inに似てfor each .. inループは(セクション12.3を参照)があります:私の知る限り、これらはすべての構文の違いを知っているよう

for each (var foo in xml) 
{ 

} 

- しかし、あなたはおそらくすでに十分以上のものを持っています。

+0

うわー。これは本当ですか? -/ – copy

+0

@copy:XMLデータを扱う必要がある場合は、通常のDOM呼び出しよりもはるかに優れています(よりきれいで読みやすい)。多くの場合、部分をフェッチするときにループと組み合わされるあなたが興味を持っているツリーの例です。ここでの例は、実際のコードで何をするのではなく、構文的に可能なものを示しています。 –

関連する問題