Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Поддержка XPath браузерами через JavaScript. Как и какие?

12
20 ноября 2006 года
alekciy
3.0K / / 13.12.2005
Кто в курсе, какие браузеры поддерживают работу с XPath выражениями в JS и на каком уровне? И главное... как это они делают? Прочитал на сайте той же Opera, что она поддерживает работу с XPath, но ни слова не нашел, какие же это образом можно с выражениями поработать . Через XSLT что ли?

Собственно почему вопрос возник. XPath выражения было бы удобно использовать для адресации при обходе DOM текущего документа. Через выражения это делается очень красиво и мощно, а главное просто. А так приходится городить кучу кода...
337
20 ноября 2006 года
shine
719 / / 09.06.2006
[QUOTE=alekciy]Кто в курсе, какие браузеры поддерживают работу с XPath выражениями в JS и на каком уровне? И главное... как это они делают?[/QUOTE]

Вот пример:
Код:
// Load XML
var oXML = new ActiveXObject("Microsoft.XMLDOM");
oXML.async = false;
oXML.load("planets.xml");
   
// Load XSL
var oXSL = new ActiveXObject("Microsoft.XMLDOM");
oXSL.async = false;
oXSL.load("planets.xsl");

// Transform and create dialog!
strResult = oXML.transformNode(oXSL);


[QUOTE=alekciy]Прочитал на сайте той же Opera, что она поддерживает работу с XPath, но ни слова не нашел, какие же это образом можно с выражениями поработать . Через XSLT что ли?[/QUOTE]
Да. Через него.
12
20 ноября 2006 года
alekciy
3.0K / / 13.12.2005
[QUOTE=shine]Вот пример:
[/QUOTE]
Ой, ActiveX... хотелось бы JavaScript обойтись ибо как правило ActiveX отключают.

[QUOTE=shine]
Да. Через него.[/QUOTE]
А примерчик можно? Я как-то не очень уловил как... с XSLT немного работал и что-то не примоню там XPath выражения.
337
20 ноября 2006 года
shine
719 / / 09.06.2006
[QUOTE=alekciy]Ой, ActiveX... хотелось бы JavaScript обойтись ибо как правило ActiveX отключают.[/QUOTE]
Врядли у тебя это без ActiveX получится. Могу только посоветовать попробовать то же самое делать на сервере, а на клиент выдавать результат преобразования.

[QUOTE=alekciy]А примерчик можно? Я как-то не очень уловил как... с XSLT немного работал и что-то не примоню там XPath выражения.[/QUOTE]
Да точно так же как в моем предидущем посте. Разницы никакой. Только обязательно убедись что у тебя версия Opera которая поддерживает XSLT. Они стали это делать совсем недавно.
12
20 ноября 2006 года
alekciy
3.0K / / 13.12.2005
[QUOTE=shine]Врядли у тебя это без ActiveX получится. Могу только посоветовать попробовать то же самое делать на сервере, а на клиент выдавать результат преобразования.
[/QUOTE]
Да на сервере это понятно, там с этим проблем нет. Но порой и на клиенте нужно, а XPath это легко делает. Для достижения того же эффекта приходися кучу все понаписать.

[QUOTE=shine]
Да точно так же как в моем предидущем посте. Разницы никакой. Только обязательно убедись что у тебя версия Opera которая поддерживает XSLT. Они стали это делать совсем недавно.[/QUOTE]
Разницы никакой? Но я так понимаю, что часть кода относящийся к ActiveX нужно убрать? Но тогда ведь работать не будет.

А Опера у меня держит XSLT ибо стоит 9.01, а Опера это дело поддерживает еще с 8-ки.
337
20 ноября 2006 года
shine
719 / / 09.06.2006
[QUOTE=alekciy]А Опера у меня держит XSLT ибо стоит 9.01, а Опера это дело поддерживает еще с 8-ки.[/QUOTE]

Насчет ActiveX ты прав. Вот здесь вот написано как надоделать(в самом низу): http://www.opera.com/support/tutorials/userjs/examples/

А насчет 8-ки ты не прав. Только начиная с 9-й версии. Да и то не с первых билдов а чуть позже.
12
21 ноября 2006 года
alekciy
3.0K / / 13.12.2005
Цитата: shine
Насчет ActiveX ты прав. Вот здесь вот написано как надоделать(в самом низу): http://www.opera.com/support/tutorials/userjs/examples/


Хороший линк. Респект.

Цитата: shine

А насчет 8-ки ты не прав. Только начиная с 9-й версии. Да и то не с первых билдов а чуть позже.


Ага, сейчас пересмотрел. Действительно только с 9-ки начал держать.

В конечно итоге вижу, что XParh выражения каждый браузер поддерживает размыми способами, нет единого кроссбраузреного решения. В общем решил их все подальше послать и написать библиотеку для работы с XPath которая будет одинаково работать во всех браузерах. Я собвтенно тему поэтому и создал, думал может кто до меня уже это на JS реализовал. Даже по забугорным форумам пошарил. Нафига. По крайней мере в публичном доступе.

337
21 ноября 2006 года
shine
719 / / 09.06.2006
Цитата: alekciy
В конечно итоге вижу, что XParh выражения каждый браузер поддерживает размыми способами, нет единого кроссбраузреного решения. В общем решил их все подальше послать и написать библиотеку для работы с XPath которая будет одинаково работать во всех браузерах. Я собвтенно тему поэтому и создал, думал может кто до меня уже это на JS реализовал. Даже по забугорным форумам пошарил. Нафига. По крайней мере в публичном доступе.



Можешь поподробнее рассказать что ты хочешь с помощью этой библиотеки делать?

12
21 ноября 2006 года
alekciy
3.0K / / 13.12.2005
Искать/обрабатывать узлы текущего документа через DOM API. Ясное дело, что каждому элементу можно ID назначить и получего его через getElementById, но не всегда это подходит. А XPath выражения позволяют очень удобно вести поск нужного_узла/набора_узлов.
337
21 ноября 2006 года
shine
719 / / 09.06.2006
Ну с поиском и чтением данных все понятно. XPath по определению для этого идеален.

А вот с записью будет интереснее. Как ты собираешься это реализовать? Каждый раз при присвоении какого-то значения тэгу или атрибуту делать XSL-преобразование? Или все-таки через JS?
12
21 ноября 2006 года
alekciy
3.0K / / 13.12.2005
Так мне только читать и нужно. Если что записать, так я на сервер отправляю, тут вопросов нет.
253
10 января 2007 года
Proger_XP
1.5K / / 07.08.2004
Цитата: alekciy
Так мне только читать и нужно. Если что записать, так я на сервер отправляю, тут вопросов нет.


xmldomobj.evaluate(). Читать тут. Только он не поддерживается IE6

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог