2012-02-15 3 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

많은 구문 확장이 있습니다.

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

위의 예제는 XML 코드에서 빈 루트 태그와 자바 스크립트 표현의 특별한 경우를 보여줍니다 가장 중요한 하나는 XML 리터럴 (섹션 11.1.4 및 11.1.5 참조)이다.

당신은 또한 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 each (var foo in xml) 
{ 

} 

을 -하지만 당신은 아마 이미 충분있어 : nally는, for .. in 유사하다 for each .. in 루프가 (12.3 절 참조).

+0

와우. 이게 진짜야? -/ – copy

+0

@copy : XML 데이터로 작업해야한다면 일반적인 DOM 호출보다 훨씬 낫고 (더 깔끔하고 읽기 쉽다), 종종 부분을 가져올 때 루프와 결합된다. 여기에있는 예제는 실제 코드에서 수행 할 수있는 것이 아니라 구문 적으로 가능한 것을 설명합니다. –