2010-02-14 14 views
6

E4X (Ecma-357) ist eine Erweiterung von ECMAScript, die XML-Literale als erstklassige Primitive hinzufügt. Das ist großartig, aber mit nur Mozilla- und Adobe-Unterstützung (ohne V8- und IE-Unterstützung) ist E4X aus der Perspektive eines Webentwicklers praktisch tot, der Benutzer mit jedem modernen Browser unterstützen muss.XML-Literale in JavaScript?

Welche anderen Arbeiten werden zur Implementierung von XML-Literalen in JavaScript ausgeführt? Gibt es eine Möglichkeit, etwas Ähnliches wie XML-Literale oder E4X in JavaScript zu erhalten, an dem jeder arbeitet? Vielleicht einige Plugins für Frameworks?

Ich lief neulich über LunaScript (asana.com/Luna), die XML-Literale in ihrer JavaScript-ähnlichen Sprache implementiert hat. Das ist toll, aber ich werde wahrscheinlich nie bei Asana arbeiten und deshalb niemals LunaScript schreiben.

+2

Seitliche Anmerkung: E4X ist in ActionScript 3 implementiert. – icktoofay

Antwort

2

Es ist ein Open-Source-Projekt für XML in JavaScript:

http://xmljs.sourceforge.net/

XML for <SCRIPT> ist ein leistungsstarker, standardkonformen XML-JavaScript-Parser, den Designer implementieren konzipierte Web-Anwendung Cross-Plattform-Anwendungen zu helfen, die die Vorteile der clientseitigen Manipulation von XML-Daten. XML for <SCRIPT> bietet eine vollständige Palette von Werkzeugen, einschließlich:

* 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> Freie Software und wird unter den Bedingungen der GNU Lesser General Public License (LGPL), eine Open-Source-Lizenz distrubuted.

2

Persönlich glaube ich nicht, dass XML-Literale überhaupt einen Vorteil haben.

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

ist nicht wirklich deutlich besser als:

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

Es gibt einen vernünftigen Gründe für das Hinzufügen von regex Literale JavaScript war: dass sonst die Schrägstriche sind ein Super-Schmerz. (Obwohl ich persönlich rohe Strings bevorzugt hätte.) Da Backslashes in XML nicht üblich sind, glaube ich nicht, dass es dort eine solche Rechtfertigung gibt.

Das Hinzufügen der vollständigen (komplexen!) Syntax von XML als grundlegende Sprachsyntax ist kein Gewinn. Tatsächlich hat es grievous security problems in der Praxis verursacht.

Ich möchte E4X gegangen, nicht mehr das Gleiche.

+2

Was ist mit Templating? Was ist, wenn Sie möchten, dass ein Objekt das gesamte Markup für ein JavaScript-Objekt zurückgibt? Sie können dieses Markup mit XML-Literalen deklarieren, und wenn dieses Markup ausführlicher ist als nur ein paar Div-Tags, wäre es viel einfacher, als Literal zu schreiben. – JamesBrownIsDead

+1

Ja, ich plane, E4X für das Templating von HTML zu verwenden. Als eine Vorlagensprache ist es ziemlich stark und elegant. Sie können JS in das XML einbetten und XML in dieses JS weiter einbetten. – dlaliberte

+0

Dieser Link funktioniert nicht mehr. Ich bekomme "Ihr Client ist nicht berechtigt, URL/p/doctype/wiki/ArticleE4XSecurity von diesem Server zu erhalten." – CoderDennis

1

js-xml-wörtliche fügt Unterstützung für XML-Literale in jedem Motor Javascript mittels Code neu zu schreiben.

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

Die Syntax ist eine Teilmenge von E4X jedoch die API ahmt mehr der DOM. Auf der Client-Seite können Sie direkt mit dem DOM des Browsers interagieren, indem Sie XML-Literale verwenden. und auf der Serverseite (NodeJS) können Sie auf einem virtuellen DOM operieren, bevor Sie auf eine Zeichenkette spoolen.