2010-02-14 6 views
6

E4X (Ecma-357) является расширением ECMAScript, который добавляет XML-литералы в качестве первоклассных примитивов. Это потрясающе, но только с поддержкой Mozilla и Adobe (без поддержки V8 и IE) E4X практически не работает с точки зрения веб-разработчика, которая должна поддерживать пользователей с любым современным браузером.XML-литералы в JavaScript?

Что еще делается над внедрением XML-литералов в JavaScript? Есть ли способ получить что-то похожее на XML-литералы или E4X в JavaScript, над которым работает кто-либо? Может быть, некоторые плагины для фреймворков?

Я натолкнулся на LunaScript на другой день (asana.com/Luna), который реализовал XML-литералы на своем JavaScript-подобном языке. Это здорово, но я, вероятно, никогда не буду работать в Asana и поэтому никогда не буду писать LunaScript.

+2

Сторона примечания: E4X реализован в ActionScript 3. – icktoofay

ответ

2

Существует проект с открытым кодом для XML в JavaScript:

http://xmljs.sourceforge.net/

XML for <SCRIPT> является мощным, соответствующий стандартам JavaScript XML-парсер, который разработан, чтобы помочь дизайнерам веб-приложений реализации приложений кроссплатформенные, которые используют клиентской обработки XML-данных. XML for <SCRIPT> предоставляет полный набор инструментов, в том числе:

* 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> является свободным программным обеспечением и distrubuted под условиями GNU Lesser General Public License (LGPL), лицензии с открытым исходным кодом.

2

Лично я не думаю, что есть какие-либо преимущества для XML-литералов.

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

не очень заметно лучше, чем:

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

Был разумное обоснование для добавления регулярных выражений литералов в JavaScript: что в противном случае обратные косые являются супер-боль. (Хотя лично я предпочел бы сырые строки.) Поскольку обратные косые черты не распространены в XML, я не думаю, что там есть такое оправдание.

Добавление полного (сложного!) Синтаксиса XML в качестве базового синтаксиса языка не является победой. Фактически, это на практике вызвало grievous security problems.

Я хочу, чтобы E4X ушел, не более того.

+2

Как насчет шаблонов? Что делать, если вы хотите, чтобы объект возвращал всю разметку для объекта JavaScript? Вы можете объявить эту разметку с использованием XML-литералов, и если эта разметка более многословна, чем несколько тегов div div, было бы гораздо проще писать в виде литерала. – JamesBrownIsDead

+1

Да, я планирую использовать E4X для шаблонов HTML. Как язык шаблонов, он довольно мощный и элегантный. Вы можете встраивать JS в XML и далее встраивать XML в этот JS. – dlaliberte

+0

Эта ссылка больше не работает. Я получаю: «У вашего клиента нет разрешения на получение URL/p/doctype/wiki/ArticleE4XSecurity с этого сервера». – CoderDennis

1

js-xml-literal добавляет поддержку XML-литералов в любом движке Javascript посредством перезаписи кода.

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

Синтаксис представляет собой подмножество E4X, однако API имитирует DOM более тесно. На стороне клиента вы можете напрямую взаимодействовать с DOM браузера с использованием XML-литералов; и на стороне сервера (NodeJS) вы можете работать с виртуальным DOM перед тем, как поступить в строку.