ECMAScript for XML (E4X) es una extensión del lenguaje de programación que añade la implementación de XML nativo a JavaScript. Esto proporciona el acceso al documento de XML de manera que sea natural para los programadores de ECMAScript. El objetivo es proporcionar una alternativa, una sintaxis más simple para tener acceso a documentos XML a través de las interfaces DOM.
E4X está regulado por Ecma International dentro del estándar ECMA-357 (actualmente en su segunda edición, diciembre 2005).
E4X se implementa (al menos parcialmente) en SpiderMonkey (Gecko con motor de JavaScript ) y dentro de Rhino (JavaScript con motor escrito en Java).
Nota: en navegadores basados del Gecko 1.8, como Firefox 1.5, E4X ya puede usarse parcialmente por los autores de páginas web. Para disponer completamente de E4X, el elemento <script>
necesita tener el tipo del MIME "text/javascript;e4x=1" (ej. tener un atributo en el formulario type="text/javascript;e4x=1"
). La diferencia entre los dos modos es que sin el tipo MIME "e4x=1", cualquiera de los literales de comentario (<!--...-->
) en instrucciones XML/HTML son ignorados por compatibilidad hacia atrás con el truco de ocultar el comentario, y las secciones CDATA (<![CDATA[...]]>
) no son procesadas como literales CDATA (que conduce a un error de sintaxis JS en el HTML ya que el elemento <script>
de HTML produce una sección CDATA implícita, y por lo tanto no puede contener explícitamente secciones CDATA).
Errores conocidos y limitaciones
- Actualmente no es posible acceder al objeto DOM a través de E4X (bug 270553)
- E4X no implementa el procesamiento la declaración (
<?xml version=...?>
) (ver bug 336551). Puedes obtener un SyntaxError "xml is a reserved identifier" (a pesar de que el XML sea un string).
Solución:
var response = xmlhttprequest.responseText; // bug 270553 response = response.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>/, ""); // bug 336551 var e4x = new XML(response);