Использование RightJS в XML документах

24 views
Skip to first unread message

Vadim Selin

unread,
May 21, 2012, 3:21:21 PM5/21/12
to right...@googlegroups.com
У меня возник, возможно не слишком распространенный, usecase для JS библиотеки — а именно работа с javascript внутри xhtml, полученного в результате xslt преобразования. RightJS имеет некоторые проблемы при использовании с xml, но её (в отличии от многих других библиотек) оказалось несложно заставить работать. Тут я должен заметить что в целом, на мой взгляд RightJS сделана очень хорошо, респектиуважуха автору.

Чтобы было понятно о каких проблемах идет речь приведу ссылки на специально сделанный примерчик:

http://v-selin.narod2.ru/example/nerabotaet.xml с использованием немодифицированной v2.3.1
http://v-selin.narod2.ru/example/rabotaet.xml с использованием измененных js файлов

Исходники этого примерчика тут: https://github.com/vselin/example

Проблемы с которыми на сей момент пришлось столкнуться относятся к трем особенностям xml-based html:
  • Использование явно заданного xml-namespace для элементов (в частности "http://www.w3.org/1999/xhtml" для XTHML 1.0)
  • Отсутствие в XML по-умолчанию ссылок на имена entities отличных от < > и &
  • Чувствительность к регистру букв в именах тэгов
Первая проблема решилась для меня заменой вызовов вида document.createElement( tagname ) на document.createElementNS( HTML.namespaceURI, tagname ) и document.createAttribute( aname ) на document.createAttributeNS( HTML.namespaceURI, aname ) (фактические я пока встретил только вызовы первого типа).
Вторая —  заменой именованных entities на соответствующие им коды unicode символов.

На изменения можно посмотреть тут.

В связи с чем вопрос: есть ли шанс включить в библиотеку соответствующие изменения и как это сделать right way не порушив какой-нибудь совместимости?

Вообще, я не встретил пока js-библиотеки-удобств-и-общих-функций, которая бы «из коробки» работала с DOM не только html документов, но и с произвольными XML документами, например внутри SVG. RightJS (или, там, Lovely.io) ИМХО вполне могла бы занять еще и эту нишу.

Vadim Selin

unread,
Jun 2, 2012, 12:24:44 AM6/2/12
to right...@googlegroups.com
И тишина...
Может я не туда пишу?

Nikolay Nemshilov

unread,
Jun 2, 2012, 12:43:24 AM6/2/12
to right...@googlegroups.com
Привет,

Сорри, занят немного был в последнее время.

Если коротко, то если используете XML то ССЗБ :)

Не сочтите что я учу вас жизни, но XML мертв и все нормальные разработчики давно уже перешли на гораздо боле JavaScript friendly JSON. SVG туда же дорога.

Доля XML мизерно мала и продолжает уменьшаться, поэтому в плане дальнейших перспектив развития, я не вижу никакого смысла в добавлении поддержки XML в RightJS.

Vadim Selin

unread,
Jun 2, 2012, 1:24:22 AM6/2/12
to right...@googlegroups.com

Не сочтите что я учу вас жизни, но XML мертв и все нормальные разработчики давно уже перешли на гораздо боле JavaScript friendly JSON. SVG туда же дорога. 

Доля XML мизерно мала и продолжает уменьшаться, поэтому в плане дальнейших перспектив развития, я не вижу никакого смысла в добавлении поддержки XML в RightJS. 
 
Спасибо за отклик.

Николай, на примерчик-то хоть глянули? Или просто выхватили ключевое слово XML из текста и на этом закончили? :-)
Ок, ок, занят, да.

Я, честно говоря, не вполне понимаю как JSON может заменять XML и в частности SVG.
Может я тут действительно вышел из лесу, но просвятите меня тогда, — вместе c XML мертвы XPath, XSLT и вся гроздь технологий? А на их месте что появилось?

Далее, я не достаточно внятно это высказал, но суть моего предложения была в том, что я сам мог бы вносить соответствующие изменения в core и ui и др части. Т.е. я не предлагаю вам, Николай этим заниматься. Мне бы только помочь со стартом и дать руководящие наставления.

Nikolay Nemshilov

unread,
Jun 2, 2012, 1:56:08 AM6/2/12
to right...@googlegroups.com
Примеры естественно посмотрел. Насколько я понял вы пытаетесь через XML  передавать данные, поэтому я вам и ответил что в качестве формата для передачи данных XML мертв и все нормальные люди давно уже перешли на использование JSON для этих целей. За примерами далеко ходить не надо. Google Search API, Twitter API, Facebook API.

Причина проста, DOM - кривая поделка и его все ненавидят. С ним не удобно работать и он поддерживает только строковые данные. JSON с другой стороны, сразу же умеет хэши, массивы, числа, даты и ему не нужен никакой дополнительный API для того чтобы считать/установить поле, вы просто обращаетесь к атрибуту JavaScript объекта и все.

И да, вместе с XML мертвы и XPath и XSLT, кои и при жизни то были кривыми костылями (работал с ними лично).

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

Поэтому, я считаю что XML бесперспективен, нужен 0.00001% разработчиков и, как следствие, будет ненужным балластом в ядре.

--
Thanks,
Nikolay

Вадим Селин

unread,
Jun 2, 2012, 4:48:47 AM6/2/12
to right...@googlegroups.com
Попытаюсь все это понять...
 
Причина проста, DOM - кривая поделка и его все ненавидят. С ним не удобно работать и он поддерживает только строковые данные.
ИМХО как-то странно сравнивать DOM vs JSON. DOM != XML. DOM API это «ужас, ужас»™, с этим нельзя не согласиться. Все эти jquery и прочая как раз и возникли как попытка этот ужас поспокойнее переносить. Только причем здесь XML? И как отказ от XML & company технологий помогает с тем чтобы в веб-программировании совсем не иметь дела с DOM?

JSON с другой стороны, сразу же умеет хэши, массивы, числа, даты и ему не нужен никакой дополнительный API для того чтобы считать/установить поле, вы просто обращаетесь к атрибуту JavaScript объекта и все.
JSON такой же текстовый формат для иерархических данных как и XML и "умеет хеши", собственно, не JSON, а javascript движки. В общем, насколько я понял, идея абзаца в том, что в программе на javasript использовать javasript объект (как иерархическую структуру данных) проще и удобнее, чем использовать дерево элементов XML-документа (как иерархическую структуру данных) средствами DOM API. Да, разумеется, почти всегда проще и удобнее. Но это не делает автоматически все XML технологии чем-то неудобным и ненужным.
  
И да, вместе с XML мертвы и XPath и XSLT, кои и при жизни то были кривыми костылями (работал с ними лично).
По мне так XSLT и XPath элегантные технологии для работы с иерархическими данными. Именно вакуум образующийся от их выбрасывания порождает всякие там расширенные CSS селекторы (которые не дотягивают до XPath) и убогие шаблонные движки вроде предлагаемого тут (которые не дотягивают до XSLT). Глядишь, дальше начнут заново изобретать XML Schema (или уже? может я пропустил чего) и всё остальное.
 
SVG пока еще дышит, но в качестве веб-стандарта так и не прижился, опять таки потому что это XML со всеми вытекающими.
Тут как-то все спорно, и насчет "не прижился" и тем более насчет "потому что XML". Если продолжить выбрасывать технологии и форматы на том основании, что DOM — гавно, то и html должен быть в очереди (видимо первым).

Да, мне всегда казалось, что DOM — камень на шее XML технологий. Грустно видеть, как один плохо сделанный кусок может утянуть за собой столько хорошего.

Поэтому, я считаю что XML бесперспективен, нужен 0.00001% разработчиков и, как следствие, будет ненужным балластом в ядре.
Ну в целом, ситуацию с вашей позицией в вопросе внесения соответствующих изменений в rightjs я понял, буду теперь думать как быть...

P.S. предпочел бы общение на ты в дальнейшем, если таковое состоится.
Reply all
Reply to author
Forward
0 new messages