XML-литералы в JavaScript?

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

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

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


person ChrisOh    schedule 14.02.2010    source источник
comment
Боковое примечание: E4X реализован в ActionScript 3.   -  person icktoofay    schedule 14.02.2010


Ответы (3)


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

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

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

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

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

Добавление полного (сложного!) Синтаксиса XML в качестве синтаксиса основного языка - не победа. Фактически, это вызвало на практике серьезные проблемы с безопасностью.

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

person bobince    schedule 14.02.2010
comment
А как насчет шаблонов? Что, если вы хотите, чтобы объект возвращал всю разметку для объекта JavaScript? Вы можете объявить эту разметку с помощью XML-литералов, и если эта разметка будет более подробной, чем просто пара тегов div, ее будет намного проще написать в виде литерала. - person JamesBrownIsDead; 15.02.2010
comment
Да, я планирую использовать E4X для создания шаблонов HTML. Как язык шаблонов, он довольно мощный и элегантный. Вы можете встроить JS в XML и в дальнейшем встраивать XML в этот JS. - person dlaliberte; 07.08.2010
comment
Эта ссылка больше не работает. Я понимаю, у вашего клиента нет разрешения на получение URL / p / doctype / wiki / ArticleE4XSecurity с этого сервера. - person CoderDennis; 04.12.2011

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

http://xmljs.sourceforge.net/

XML for <SCRIPT> - это мощный, совместимый со стандартами анализатор XML 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> является бесплатным программным обеспечением и распространяется в соответствии с условиями Стандартной общественной лицензии ограниченного применения GNU (LGPL), лицензии с открытым исходным кодом.

person Todd Moses    schedule 14.02.2010

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

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

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

person Marcel    schedule 06.01.2011