Существует несколько расширений синтаксиса.Наиболее важными являются литералы XML (см. Разделы 11.1.4 и 11.1.5):
var foo = <xml>
foo
</xml>;
var bar = <>
<tag attr={(1+2).toFixed(2)}/>
{foo}
</>;
В приведенном выше примере показан особый случай пустого корневого тега и выражений JavaScript в коде XML.
У вас также есть некоторые выражения, которые недопустимы в ECMA-262 (см. Раздел 11.2):
xml.@attr // get attribute attr
xml.* // get all child elements
xml.@* // 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
xml.@soap::attr // get attribute with namespace soap
Существует оператор пространства имен XML по умолчанию, который синтаксически является очень необычной конструкцией (см. Раздел 12.1):
default xml namespace = new Namespace("http://foo/bar");
Наконец, существует цикл for each .. in
, который похож на for .. in
(см.раздел 12.3):
for each (var foo in xml)
{
}
Насколько я знаю, это все синтаксические различия - но вы, вероятно, уже получили более чем достаточно.