맨위로가기

ECMAScript for XML

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

ECMAScript for XML(E4X)은 ECMAScript(JavaScript) 언어에 XML 데이터를 처리하기 위한 기능을 추가하는 확장 사양이다. E4X는 XML 데이터를 자바스크립트 내에서 직접 조작할 수 있도록 하여, XML 데이터를 파싱하고 처리하는 과정을 간소화한다. 과거에는 모질라의 Rhino, Tamarin, OpenOffice.org 등에서 지원되었으나, 브라우저 지원은 점차 중단되어 파이어폭스 21에서 완전히 제거되었다. E4X는 ActionScript 3에서도 지원되었으며, Flex, Flash Player, Adobe AIR 등에서 사용되었다. JSON, DOMParser와 같은 경쟁 기술이 존재한다.

더 읽어볼만한 페이지

  • XML - 오피스 오픈 XML
    오피스 오픈 XML은 마이크로소프트에서 개발한 XML 기반의 파일 포맷으로, 문서, 스프레드시트, 프레젠테이션 등의 사무용 전자 문서를 표현하기 위해 사용되며 마이크로소프트 오피스 2007부터 기본 파일 형식으로 채택되어 ECMA 인터내셔널 및 ISO/IEC 국제 표준으로도 표준화되었다.
  • XML - 자원 기술 프레임워크
    자원 기술 프레임워크(RDF)는 웹 상의 메타데이터를 표현하기 위한 표준 모델로, URI 기반의 리소스와 트리플 구조의 속성을 사용하여 정보 자원 간의 관계를 명확하게 기술하며, 시맨틱 웹 구축의 핵심 기술로서 다양한 분야에서 활용된다.
  • Ecma 표준 - ISO/IEC 646
    ISO/IEC 646는 ASCII 기반의 7비트 문자 인코딩 표준으로, 국가별 변형이 존재했으나, 최종 개정판은 ASCII와 호환되도록 정의되었고, 현재는 ITU-T 권고 T.50 IRA가 현행 표준으로 유지되고 있다.
  • Ecma 표준 - 유니버설 미디어 디스크
    유니버설 미디어 디스크(UMD)는 소니 PSP에 사용된 60mm 광 디스크로, 게임, 영상, 음악 콘텐츠를 최대 1.8GB까지 저장하며, DVD와 유사한 지역 코드와 AES 128 비트 암호화를 사용했지만, PSP 외 다른 기기에서 사용 불가 및 디지털 미디어의 발달로 인해 2010년대 초반에 지원이 중단되었다.
ECMAScript for XML
일반 정보
이름ECMAScript for XML
약칭E4X
종류프로그래밍 언어 확장
개발ECMA 인터내셔널
표준ECMA-357, ISO/IEC 22537
상태철회됨
관련ECMAScript
기술 정보
목적XML 처리를 위한 ECMAScript 확장
특징XML을 직접 다루는 기능 제공
구문XML 리터럴, XML 속성 접근 등
지원 언어Mozilla Firefox, Rhino (과거 지원)
역사
최초 표준화2005년 12월 8일 (ECMA-357)
ISO 표준화2006년 (ISO/IEC 22537)
철회2015년 (ECMA-357)
이유웹 브라우저 지원 부족, 대안 기술 등장

2. 브라우저 지원

E4X는 모질라의 라이노, 플래시 가상 머신에 사용되는 타마린(Tamarin) 등 일부 자바스크립트 엔진에서 지원되었다. 파이어폭스선더버드에서 사용되는 스파이더몽키 엔진에서도 지원되었으나, 파이어폭스 10부터 사용 중단되기 시작하여[11] 파이어폭스 21에서 완전히 제거되었다.[12]

Nitro(Safari), V8(구글 크롬), Carakan(Opera), Chakra(Internet Explorer 및 크로미움 기반 이전 Edge) 등 다른 주요 자바스크립트 엔진에서는 지원되지 않는다.[10]

2. 1. 지원 중단 배경

E4X는 모질라라이노플래시 가상 머신에 사용되는 자바스크립트 엔진인 타마린(Tamarin)에서 지원된다.[10] OpenOffice.org에서도 지원되었다. 그러나 Nitro(Safari), V8(Google Chrome), Carakan(Opera), Chakra(Internet Explorer 및 Chromium Edge 이전)와 같은 다른 일반적인 엔진에서는 지원되지 않는다.[10]

스파이더몽키(파이어폭스선더버드)에서도 지원되었지만 제거되었다. 브렌던 아이크에 따르면, 파이어폭스 10[11]에서 ECMAScript 5 "엄격 모드"가 활성화되면 E4X 구문이 스파이더몽키에서 더 이상 허용되지 않으며, "이것은 스파이더몽키에서 E4X에 대한 지원 중단이 시작되었음을 알리는 신호이다."라고 언급했다. 파이어폭스 17에서는 웹페이지(콘텐츠)에 대해 기본적으로 비활성화되었으며, 파이어폭스 20에서는 Chrome에 대해 기본적으로 비활성화되었고, 파이어폭스 21에서 제거되었다.[12]

3. 예시







;

alert( sales.item.(@type == "carrot").@quantity );

alert( sales.@vendor );

for each( var price in sales..@price ) {

alert( price );

}

delete sales.item[0];

sales.item += ;

sales.item.(@type == "oranges").@quantity = 4;

```

```javascript

var sales =







;

alert( sales.item.(@type == "carrot").@quantity );

alert( sales.@판매자 );

for each( var price in sales..@price ) {

alert( price );

}

delete sales.item[0];

sales.item += ;

sales.item.(@type == "oranges").@quantity = 4;

```

위 코드는 E4X를 사용하여 XML 데이터를 처리하는 방법을 보여준다. 첫 번째 코드 블록은 영어로 된 속성 이름을 사용하고, 두 번째 코드 블록은 한국어로 된 속성 이름을 사용한다. 두 코드 블록 모두 동일한 작업을 수행한다.


  • `sales` 변수는 XML 데이터를 담고 있다.
  • `sales.item.(@type == "carrot").@quantity`는 `type` 속성이 "carrot"인 `item` 요소의 `quantity` 속성 값을 가져온다.
  • `sales.@vendor`는 `sales` 요소의 `vendor` 속성 값을 가져온다.
  • `for each` 루프는 `sales` 요소의 모든 `price` 속성 값을 반복하여 출력한다.
  • `delete sales.item[0]`는 `sales` 요소의 첫 번째 `item` 요소를 삭제한다.
  • `sales.item += `는 `sales` 요소에 새로운 `item` 요소를 추가한다.
  • `sales.item.(@type == "oranges").@quantity = 4`는 새로 추가된 `item` 요소의 `quantity` 속성 값을 4로 설정한다.


세번째 코드 블럭은 첫번째 코드 블럭과 내용이 동일하다.

4. 구현

E4X의 최초 구현은 테리 루카스와 존 슈나이더가 설계했으며, 2002년 2월에 출시된 BEA 시스템즈의 Weblogic Workshop 7.0에 포함되었다.[7] BEA의 구현은 라이노에 기반하며, E4X 표준화가 완료되기 전에 출시되었다.

모질라 파이어폭스는 1.5 버전부터 E4X를 사용한 스크립트 실행을 지원했지만, 파이어폭스 17부터 단계적으로 비활성화되었고, 21에서 제거되었다.[7]

어도비의 ActionScript 3은 E4X를 완벽하게 지원한다. Adobe Flex 2.0, Flash Player 9, Flash CS3, Adobe AIR, Adobe Acrobat/Reader (8.0 이후)에서 지원된다.

Aptana의 Jaxer Ajax 애플리케이션 서버와 콘텐츠 관리 시스템(CMS)인 Alfresco Community Edition 2.9B에서도 E4X를 지원한다.

라이노플래시 가상 머신에서 사용되는 자바스크립트 엔진인 Tamarin에서는 지원된다. 그러나 Nitro (Safari), V8(구글 크롬), Carakan(Opera), Chakra(Internet Explorer 및 크로미움 기반 이전 Edge)와 같은 다른 일반적인 엔진에서는 지원되지 않는다.[3]

5. 비판

많은 E4X 구현이 DOM 노드와 E4X 모델 간에 가져오기/내보내기를 위한 수단을 제공하지 않는다는 비판이 있었다.[1]

6. 경쟁 기술

E4X의 경쟁 기술로는 JSON과 DOMParser가 있다.[1]

6. 1. JSON (JavaScript Object Notation)

JSONXML을 대체할 수 있는 경량의 데이터 교환 형식이다. JSON은 XML과 유사한 객체 지향적 데이터 기술 언어이다. ECMA 인터내셔널에 의해 ECMA-404로 표준화되었으며, 자바스크립트에서는 JSON 객체의 메서드를 통해 조작한다.[1]

다음은 JSON을 사용한 예시이다.

```javascript

const json = `{

"vendor": "John",

"items": [

{ "type": "peas", "price": 4, "quantity": 6 },

{ "type": "carrot", "price": 3, "quantity": 10 },

{ "type": "chips", "price": 5, "quantity": 3 }

]

}`;

const sales = JSON.parse(json);

alert(sales.items.find(item => item.type === "carrot").quantity);

alert(sales.vendor);

sales.items.forEach(item => alert(item.price));

```

JSON은 XML보다 더 간결하고 가벼우며, 자바스크립트에서 기본적으로 지원되기 때문에 널리 사용된다.[1]

6. 2. DOMParser

JavaScript에는 XML 또는 HTML 문자열로부터 DOM의 Document 클래스를 생성하는 DOMParser 인터페이스가 제공된다.[1]

DOMParser 인터페이스를 사용하여 E4X 예시를 표현하면 다음과 같다.

```javascript

const xml = `







`;

const parser = new DOMParser();

const sales = parser.parseFromString(xml, 'text/xml');

const items = Array.from(sales.getElementsByTagName("item"));

alert(items.find(item => item.getAttribute("type") === "carrot").getAttribute("quantity"));

alert(sales.getElementsByTagName("sales").item(0).getAttribute("vendor"));

items.forEach(item => alert(item.getAttribute("price")))

참조

[1] 웹사이트 ISO/IEC 22537:2006 Information technology – ECMAscript for XML: E4X specification https://www.iso.org/[...] 2024-08-17
[2] 웹사이트 E4X – Archive of obsolete content – MDN https://web.archive.[...] Mozilla 2014-09-10
[3] 웹사이트 Issue 30975: Implement E4X Support for scripts and extensions http://code.google.c[...] 2012-05-21
[4] 웹사이트 Firefox 10 for developers https://developer.mo[...] Mozilla 2012-05-21
[5] 웹사이트 E4X https://developer.mo[...] Mozilla 2013-02-12
[6] 웹사이트 E4X - Archive of obsolete content {{!}} MDN https://developer.mo[...]
[7] MDN E4X https://developer.mo[...]
[8] 웹인용 ISO/IEC 22537:2006 Information technology – ECMAscript for XML: E4X specification https://www.iso.org/[...] 2024-08-17
[9] 웹인용 E4X – Archive of obsolete content – MDN https://web.archive.[...] Mozilla 2014-09-10
[10] 웹인용 Issue 30975: Implement E4X Support for scripts and extensions http://code.google.c[...] 2012-05-21
[11] 웹인용 Firefox 10 for developers https://developer.mo[...] Mozilla 2012-05-21
[12] 웹인용 E4X https://developer.mo[...] Mozilla 2013-02-12



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com