// 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);
Поддержка XPath браузерами через JavaScript. Как и какие?
Собственно почему вопрос возник. XPath выражения было бы удобно использовать для адресации при обходе DOM текущего документа. Через выражения это делается очень красиво и мощно, а главное просто. А так приходится городить кучу кода...
Вот пример:
Код:
[QUOTE=alekciy]Прочитал на сайте той же Opera, что она поддерживает работу с XPath, но ни слова не нашел, какие же это образом можно с выражениями поработать . Через XSLT что ли?[/QUOTE]
Да. Через него.
[/QUOTE]
Ой, ActiveX... хотелось бы JavaScript обойтись ибо как правило ActiveX отключают.
[QUOTE=shine]
Да. Через него.[/QUOTE]
А примерчик можно? Я как-то не очень уловил как... с XSLT немного работал и что-то не примоню там XPath выражения.
Врядли у тебя это без ActiveX получится. Могу только посоветовать попробовать то же самое делать на сервере, а на клиент выдавать результат преобразования.
[QUOTE=alekciy]А примерчик можно? Я как-то не очень уловил как... с XSLT немного работал и что-то не примоню там XPath выражения.[/QUOTE]
Да точно так же как в моем предидущем посте. Разницы никакой. Только обязательно убедись что у тебя версия Opera которая поддерживает XSLT. Они стали это делать совсем недавно.
[/QUOTE]
Да на сервере это понятно, там с этим проблем нет. Но порой и на клиенте нужно, а XPath это легко делает. Для достижения того же эффекта приходися кучу все понаписать.
[QUOTE=shine]
Да точно так же как в моем предидущем посте. Разницы никакой. Только обязательно убедись что у тебя версия Opera которая поддерживает XSLT. Они стали это делать совсем недавно.[/QUOTE]
Разницы никакой? Но я так понимаю, что часть кода относящийся к ActiveX нужно убрать? Но тогда ведь работать не будет.
А Опера у меня держит XSLT ибо стоит 9.01, а Опера это дело поддерживает еще с 8-ки.
Насчет ActiveX ты прав. Вот здесь вот написано как надоделать(в самом низу): http://www.opera.com/support/tutorials/userjs/examples/
А насчет 8-ки ты не прав. Только начиная с 9-й версии. Да и то не с первых билдов а чуть позже.
Цитата: shine
Насчет ActiveX ты прав. Вот здесь вот написано как надоделать(в самом низу): http://www.opera.com/support/tutorials/userjs/examples/
Хороший линк. Респект.
Цитата: shine
А насчет 8-ки ты не прав. Только начиная с 9-й версии. Да и то не с первых билдов а чуть позже.
Ага, сейчас пересмотрел. Действительно только с 9-ки начал держать.
В конечно итоге вижу, что XParh выражения каждый браузер поддерживает размыми способами, нет единого кроссбраузреного решения. В общем решил их все подальше послать и написать библиотеку для работы с XPath которая будет одинаково работать во всех браузерах. Я собвтенно тему поэтому и создал, думал может кто до меня уже это на JS реализовал. Даже по забугорным форумам пошарил. Нафига. По крайней мере в публичном доступе.
Цитата: alekciy
В конечно итоге вижу, что XParh выражения каждый браузер поддерживает размыми способами, нет единого кроссбраузреного решения. В общем решил их все подальше послать и написать библиотеку для работы с XPath которая будет одинаково работать во всех браузерах. Я собвтенно тему поэтому и создал, думал может кто до меня уже это на JS реализовал. Даже по забугорным форумам пошарил. Нафига. По крайней мере в публичном доступе.
Можешь поподробнее рассказать что ты хочешь с помощью этой библиотеки делать?
Искать/обрабатывать узлы текущего документа через DOM API. Ясное дело, что каждому элементу можно ID назначить и получего его через getElementById, но не всегда это подходит. А XPath выражения позволяют очень удобно вести поск нужного_узла/набора_узлов.
А вот с записью будет интереснее. Как ты собираешься это реализовать? Каждый раз при присвоении какого-то значения тэгу или атрибуту делать XSL-преобразование? Или все-таки через JS?
Так мне только читать и нужно. Если что записать, так я на сервер отправляю, тут вопросов нет.