2010-02-14 24 views
6

E4X (Ecma-357) es una extensión de ECMAScript que agrega literales XML como primitivas de primera clase. Eso es increíble, pero con solo soporte de Mozilla y Adobe (sin el soporte de V8 e IE también), E4X está virtualmente muerto desde la perspectiva de un desarrollador web que tiene que soportar usuarios con cualquier navegador moderno.literales XML en JavaScript?

¿Qué otro trabajo se está haciendo para implementar literales XML en JavaScript? ¿Hay alguna manera de obtener algo similar a los literales XML o E4X en JavaScript en el que esté trabajando cualquiera? ¿Tal vez algunos complementos para frameworks?

Me encontré con LunaScript el otro día (asana.com/Luna), que ha implementado literales XML en su lenguaje similar a JavaScript. Eso es genial, pero probablemente nunca trabaje en Asana y, por lo tanto, nunca escriba LunaScript.

+2

Nota al margen: E4X está implementado en ActionScript 3. – icktoofay

Respuesta

2

No es un proyecto de código abierto para XML en JavaScript:

http://xmljs.sourceforge.net/

XML for <SCRIPT> es un potente analizador XML, compatible con los estándares de JavaScript que está diseñado para ayudar a los diseñadores de aplicaciones web implementan aplicaciones de plataforma cruzada que se aprovechan de la manipulación del lado del cliente de datos XML. XML for <SCRIPT> proporciona un conjunto completo de herramientas, incluyendo:

* A standards-compliant W3C DOM Level 2 processor 
* An XPath processor 
* A standards-compliant SAX processor 
* A simple (classic) DOM processor 
* Proxies for XML retrieval from any domain 
* Utilities for XML and application development 

XML for <SCRIPT> es software libre y se distrubuted bajo los términos de la Licencia Pública General de GNU (LGPL), una licencia de código abierto.

2

Personalmente, no creo que haya ninguna ventaja para los literales XML.

var el= <foo>bar<baz/></foo>; 

en realidad no es notablemente mejor que:

var el= new XML('<foo>bar<baz/></foo>'); 

Había una justificación razonable para añadir literales de expresiones regulares de JavaScript: que de lo contrario las barras invertidas son un super-dolor. (Aunque personalmente hubiera preferido cadenas sin formato.) Dado que las barras diagonales inversas no son comunes en XML, no creo que exista tal justificación allí.

Agregar la sintaxis completa (¡compleja!) De XML como sintaxis de lenguaje básico no es una ganancia. De hecho, ha causado grievous security problems en la práctica.

Quiero que E4X se haya ido, no más de lo mismo.

+2

¿Qué pasa con la creación de plantillas? ¿Qué sucede si desea que un objeto devuelva todo el marcado para un objeto JavaScript? Podría declarar ese marcado usando literales XML y si ese marcado es más detallado que solo un par de etiquetas div, sería mucho más fácil escribir como un literal. – JamesBrownIsDead

+1

Sí, planeo usar E4X para plantillas de HTML. Como lenguaje de plantilla, es bastante poderoso y elegante. Puede incrustar JS en XML e incrustar XML en ese JS. – dlaliberte

+0

Ese enlace ya no funciona. Me sale "Tu cliente no tiene permiso para obtener URL/p/doctype/wiki/ArticleE4XSecurity de este servidor". – CoderDennis

1

js-xml-literal agrega soporte para literales XML en cualquier motor Javascript mediante la reescritura de código.

https://github.com/laverdet/js-xml-literal

La sintaxis es un subconjunto de E4X, sin embargo los imita la API DOM más de cerca. En el lado del cliente, puede interactuar directamente con el DOM del navegador utilizando literales XML; y en el lado del servidor (NodeJS) puede operar en un DOM virtual antes de enjuagar a una cadena.