2010-02-14 18 views
6

E4X (Ecma-357) to rozszerzenie ECMAScript, które dodaje literały XML jako pierwszorzędne klasy podstawowe. To niesamowite, ale tylko z obsługą Mozilli i Adobe (bez wsparcia V8 i IE), E4X jest praktycznie martwy z punktu widzenia programisty, który musi obsługiwać użytkowników za pomocą dowolnej nowoczesnej przeglądarki.Literały XML w JavaScript?

Jakie inne prace wykonuje się wokół implementacji literałów XML w JavaScript? Czy istnieje sposób na uzyskanie czegoś podobnego do literałów XML lub E4X w JavaScript, nad którym pracuje ktoś? Może niektóre wtyczki dla frameworków?

Któregoś dnia natknąłem się na LunaScript (asana.com/Luna), który zaimplementował literały XML w ich języku podobnym do JavaScript. To świetnie, ale prawdopodobnie nigdy nie pracuję w Asanie i dlatego nigdy nie piszę LunaScript.

+2

Uwaga boczna: E4X jest zaimplementowany w ActionScript 3. – icktoofay

Odpowiedz

2

Jest to projekt open source dla XML w JavaScript:

http://xmljs.sourceforge.net/

XML for <SCRIPT> jest potężnym, zgodnych ze standardami JavaScript parsera XML, który jest zaprojektowany, aby pomóc projektantom aplikacji internetowych wdrożyć krzyżowe aplikacje platformy, które wykorzystują manipulacji danymi XML po stronie klienta. XML for <SCRIPT> zapewnia pełny zestaw narzędzi, w tym:

* 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> jest wolnym oprogramowaniem i jest distrubuted zgodnie z warunkami GNU Lesser General Public License (LGPL), licencji open source.

2

Osobiście uważam, że nie ma żadnej korzyści z literałów XML.

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

naprawdę nie jest zauważalnie lepiej niż:

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

istniało uzasadnione przesłanki do dodawania regex literały do ​​JavaScript: że inaczej ukośniki są super ból. (Choć osobiście wolałbym surowe struny.) Ponieważ backslashes nie są powszechne w XML, nie sądzę, że istnieje takie uzasadnienie.

Dodanie pełnej (złożonej!) Składni XML jako podstawowej składni języka nie jest wygraną. W rzeczywistości spowodowało to w praktyce grievous security problems.

Chcę, aby E4X zniknął, nie więcej tego samego.

+2

A co z szablonami? Co jeśli chcesz, aby obiekt zwrócił cały znacznik dla obiektu JavaScript? Możesz zadeklarować, że znaczniki używają literałów XML i jeśli to oznaczenie jest bardziej szczegółowe niż tylko kilka tagów div, byłoby znacznie łatwiej pisać jako literał. – JamesBrownIsDead

+1

Tak, planuję użyć E4X do szablonowania HTML. Jako język szablonów jest dość potężny i elegancki. Możesz osadzić JS w XML i osadzić XML w tym JS. – dlaliberte

+0

Ten link już nie działa. Otrzymuję "Twój klient nie ma uprawnień do uzyskania adresu URL/p/doctype/wiki/ArticleE4XSecurity z tego serwera." – CoderDennis

1

js-xml-literalny dodaje obsługę literałów XML w dowolnym silniku JavaScript za pomocą przepisywania kodu.

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

Składnia podzbiór E4X jednak naśladuje API DOM bliżej. Po stronie klienta można bezpośrednio komunikować się z DOM przeglądarki przy użyciu literałów XML; i po stronie serwera (NodeJS) można operować na wirtualnym DOM przed opróżnieniem łańcucha.