ECMAScript dla XML-a (E4X) jest rozszerzeniem języka programowania, które dodaje natywną obsługę XML-a do JavaScript-u poprzez dodanie dostępu do dokumentu XML w formie wygodnej dla programistów ECMAScript. Celem jest dostarczenie alternatywnej składni, prostszej do operowania na dokumentach XML niż przez interfejsy DOM.
E4X jest standaryzowane przez Ecma International w standardzie ECMA-357 (aktualnie jego drugiej edycji z grudnia 2005).
E4X jest zaimplementowane (przynajmniej częściowo) w SpiderMonkey (silnik JavaScriptu w Gecko) oraz w Rhino (silnik JavaScriptu napisany w Javie).
Uwaga: W przeglądarkach opartych o Gecko 1.8, jak np. Firefoksie 1.5, E4X jest częściowo włączony dla autorów stron internetowych. Aby w pełni korzystać z E4X, element
<script>
musi posiadać typ MIME "text/javascript;e4x=1" (tzn. posiadać atrybut type="text/javascript;e4x=1"
). Różnicą pomiędzy tymi dwoma trybami jest to, że bez typu MIME "e4x=1" dowolny, będący na poziomie instrukcji literał komentarza XML/HTML (<!--...-->
) jest ignorowany dla kompatybilności wstecznej za pomocą sztuczki z ukrywaniem komentarza, a sekcje (<![CDATA[...]]>
) nie są parsowane jako literały CDATA (co prowadziło do błędu składni JS w kodzie HTML, ponieważ element <script>
tworzy ukrytą sekcję CDATA i w związku z tym nie może w sposób bezpośredni zawierać sekcji CDATA).
someone verify the above
Znane błędy i ograniczenia
- Nie jest obecnie możliwe uzyskanie dostępu do obiektu DOM przez E4X (błąd 270553)
- E4X nie obsługuje parsowania deklaracji XML (
<?xml version=...?>
) (zobacz błąd 336551). Możesz otrzymać błąd składni "xml is a reserved identifier" (mimo że XML jest wewnątrz łańcucha znaków).
Sposoby obejścia:
var response = xmlhttprequest.responseText; // błąd 270553 response = response.replace('<?xml version="1.0"?>', ""); // błąd 336551 var e4x = new XML(response);
Zasoby
- Przewodnik po E4X
- Zobacz listę stron związanych z E4X na MDC.
- Standard ECMA-357
- Prezentacja Brendana
- E4X na faqts.com
- krótka dokumentacja E4X na rephrase.net