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

Ваш аккаунт

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

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

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

Написал библиотеку для работы с XPath в JavaScript

12
18 декабря 2006 года
alekciy
3.0K / / 13.12.2005
Искал я не так давно какой либо скрипт через который можно было бы с XPath выражениями на клиенте работать. И главное что бы он был максимально кроссбраузерным. Т.е. что бы не приходилось для под каждый браузер писать персональный код. Универсальности хочется.
Но оного не нашел, может искал не очень хорошо...

Собственно так и родилась идея написать подобное самому. Может кому-то кроме меня пригодиться. Ну а сейчас веду бета тестирование :)

Описание и либа тут: http://alekciy.ru/projects/jsxpath/
16K
18 декабря 2006 года
Tigre
10 / / 10.04.2006
а не расскажешь по подробней...:)
12
18 декабря 2006 года
alekciy
3.0K / / 13.12.2005
Что есть XPath? Да в принципе вскоре напишу более подробно, все же многие не знаю, что это.
Хотя в вики вроде ничего так написано http://ru.wikipedia.org/wiki/XPath понятно более менее, хотя и с небольшими ошибками.
285
19 декабря 2006 года
Romik
479 / / 24.11.2002
А ничётаг библиотека, задумка очень даже интересная )
Если это работает под IE, Opera & Mozilla, то очень хорошо. Скоро буду делать одну штуку, попробую заюзать Ваш скриптик, думаю это будет весьма качественная проверка для написаного. Впечатляет относительно небольшой размер файла
12
19 декабря 2006 года
alekciy
3.0K / / 13.12.2005
Блин, узнал, что потенциально можно JS пожать на несколько порядков. Видел с сурсах JS скрипт 53 кб, в сжатом виде (хотя это все тот же текст) уже 19 кб. И там не просто убраны комментарии и используется однобуквенное именование переменных, там что-то другое... сейчас вот поиск рою.

Умные люди сказали, что есть подобный проект на инглише. Точнее есть либа которая может работать с XPath в том числе. Сейчас вот юзаю, но жаль, там не польная поддежка спецы ((( есть мысль к ним примкнуть.
253
10 января 2007 года
Proger_XP
1.5K / / 07.08.2004
Цитата: alekciy
Умные люди сказали, что есть подобный проект на инглише. Точнее есть либа которая может работать с XPath в том числе. Сейчас вот юзаю, но жаль, там не польная поддежка спецы ((( есть мысль к ним примкнуть


Проект есть. Полная поддержка(как говорит автор) спецификации по W3C. Но меня отпугивает объем либы: 103 кб или почти 4000 строк
Старый адрес проекта был http://mcc.id.au/xpathjs, но автор похоже что-то изменил, и теперь либа есть только в кэше гугла(тут)
Там есть описание и несколько примеров
Есть еще одна либа libxml2. Говорят что она 100% совместима
Недавно сам заинтересовался темой применения XPath в JS. Почти ничего не нашел, кроме xpathjs, твоей либы и libxml2. Попробую поюзать твой класс, т.к он более компактный или напишу свой. В любом случае, задумка полезная

12
10 января 2007 года
alekciy
3.0K / / 13.12.2005
Просто когда я стал работать с AJAX, то получал с сервера ответ в виде XML. Но парсить через DOM надоело, писалось куча кода, а до этого в PHP я с XPath работал и остался в диком восторге. Полез в поисковики искать JS либу, но оказалось, что в рунете таковой нет (по крайней мере в каталоге поисковиков). И вообще в JS с этим туго. Полез в англоязычную часть инета, но и там тишина. Как потом оказалось XPath есть, но в составе других проектов, поэтому поисковики его и не видят.

Цитата: Proger_XP
Проект есть. Полная поддержка(как говорит автор) спецификации по W3C. Но меня отпугивает объем либы: 103 кб или почти 4000 строк


Мне одну либу посоветовали: http://jquery.com/ . Реально хорошая библиотека с широким функционалом. Но XPath там развита не так широко как хотелось бы (к примеру position() и last() не работают). Да и кроме того довольно большая, т.е. при подключении к сайту будет дохрена ненужного мне кода ибо XPath в отдельный модель не выделена.

Цитата: Proger_XP

Есть еще одна либа libxml2. Говорят что она 100% совместима


Да, знаю эту либу. Правда руки поюзать так и не дошли.

Цитата: Proger_XP

Недавно сам заинтересовался темой применения XPath в JS. Почти ничего не нашел, кроме xpathjs, твоей либы и libxml2. Попробую поюзать твой класс, т.к он более компактный или напишу свой.


Вот и я озадачился написание кросс-браузерной версии и очень удивился, что таковой пока еще не написано. Кстати абсолютная поддежка XPath спецы в IE ни когда реализована не будет из-за кравой реализации DOM в этом браузере.

13
10 января 2007 года
RussianSpy
3.0K / / 04.07.2006
А лицензия какая?
253
10 января 2007 года
Proger_XP
1.5K / / 07.08.2004
Угу, я тоже был удивлен узнав что XPath мало где в JS реализован
Вообще, есть замечательный метод замечательной спецы DOM Level 3. Называется xmldomobj.evaluate() и делает он тоже, что и все вышеназванные библиотеки. Работал бы он и в IE.... Тестил в опере 9.10 и FF2 везде нормально
Самое интересное, что упоминание об этом методе нашел только в 2-х статьях MDC. Даже статей не смог найти
2alekciy
Ты планируешь развивать класс и дальше? Ибо компактность твоего класса впечатляет
p.s: загляни в личку
12
10 января 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: RussianSpy
А лицензия какая?


Стандартно свободная :D
По GPL конечно.

12
10 января 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Proger_XP
Угу, я тоже был удивлен узнав что XPath мало где в JS реализован
Вообще, есть замечательный метод замечательной спецы DOM Level 3. Называется xmldomobj.evaluate() и делает он тоже, что и все вышеназванные библиотеки. Работал бы он и в IE.... Тестил в опере 9.10 и FF2 везде нормально
Самое интересное, что упоминание об этом методе нашел только в 2-х статьях MDC. Даже статей не смог найти


Когда месяца два назад я чухнулся вопросом XPath выражений в браузере (кроссбраузерным конечно), то выяснил (кстати на том сайте, что ты привел, ибо руль ресурс, все вопросы по JS начинаю искать с него :) ), что evaluate поддерживается в FF и частично в IE (хотя сейчас может уже чего и путаю... точно не помню уже). Описало нажел здесь: http://developer.mozilla.org/en/docs/Introduction_to_using_XPath_in_JavaScript и протисти это дело в ведуших браузер. Рультат был удручающий :( , вывод быд один: решение не подходит. Ибо кросс браузерности нет, нет и единой унификации что бы во всех браузерах работал одинаково. Поэтому вледующий шаг был поиск JS либы, т.к. стало понятно, что в языке JS возможности работы с XPath просто нет.
Кстати насчет оперы... я даже сейчас на нашел на их сайте заявления о поддежке этого метода. А какой у тебя код, что работает?

Цитата: Proger_XP

2alekciy
Ты планируешь развивать класс и дальше? Ибо компактность твоего класса впечатляет
p.s: загляни в личку


Да, планирую. Но пока либа была ни кому не нужна и находится в том же виде в каком была на момент публикации. Сам же я пока XPath в JS не занимаюсь, поэтому и отложил все это дело в сторонку.

Компактность.... э-хехе.. если бы не кривая DOM в осле, он был бы еще короче. Ибо доходит до того, что приходиться писать функцию для эффекта подобно методу childNodes из DOM! С атрибутами они там тоже изратились....

Кстати насчет компактности. Остался в диком восторге вот от этого JS копрессора кода http://dean.edwards.name/packer/ . Он одну либу в 54 кб (без комментов, чисто код с форматированием) пожал до 19 кб и при этом либа отлично работала во всех трех ведущих браузерах. В общем потом этим компрессором код и буду жать.

з.ы. Глянул. Отписал.

13
11 января 2007 года
RussianSpy
3.0K / / 04.07.2006
Цитата: alekciy
Стандартно свободная :D
По GPL конечно.



Ну GPL (кстати какой именно версии?) не такая уж и свободная как принято считать. Вот если бы была BSD... =)))

12
11 января 2007 года
alekciy
3.0K / / 13.12.2005
2.1. BSD? А отличия то какие?... GPL более чем свободная. И потом... не думал, что возникнет такой вопрос как лицензия )))) Нужно - юзай.
253
11 января 2007 года
Proger_XP
1.5K / / 07.08.2004
Цитата: alekciy
кстати на том сайте, что ты привел, ибо руль ресурс, все вопросы по JS начинаю искать с него


Ресурс воистину рулез, только пока он в бете. Мне понравилось их документация DOM(для Gecko - это такой движок, который юзают NS и FF, т.е все проги от Мозиллы, но он почти на 100% стандартизирован). Ее можно скачать

Цитата:
..., что evaluate поддерживается в FF и частично в IE (хотя сейчас может уже чего и путаю... точно не помню уже). Описало нажел здесь: http://developer.mozilla.org/en/docs/Introduction_to_using_XPath_in_JavaScript и протисти это дело в ведуших браузер. Рультат был удручающий, вывод быд один: решение не подходит. Ибо кросс браузерности нет, нет и единой унификации что бы во всех браузерах работал одинаково. Поэтому вледующий шаг был поиск JS либы, т.к. стало понятно, что в языке JS возможности работы с XPath просто нет.
Кстати насчет оперы... я даже сейчас на нашел на их сайте заявления о поддежке этого метода. А какой у тебя код, что работает?


Именно это и работает. Я имел ввиду, что сегодня протестил код с document.evaluate() в FF2(v2.0.0.1), Opera 9(v9.10) и в IE6(v6SP1). Результат - везде работает, кроме IE. Будем надеятся, что в IE7, который не за горами, это будет поддерживаться нормально. А пока.... вот и юзаем программную эмуляцию стандарта W3C.... :(

Цитата:
Да, планирую. Но пока либа была ни кому не нужна(ну не скажи :) пока искал в Инете нашел кучу вопросов типа "how to use xpath in js?") и находится в том же виде в каком была на момент публикации. Сам же я пока XPath в JS не занимаюсь, поэтому и отложил все это дело в сторонку


Ну ладно. Я если буду находить ошибки или дописывать что-то свое буду пересылать обновления тебе

Цитата:
Кстати насчет компактности. Остался в диком восторге вот от этого JS копрессора кода http://dean.edwards.name/packer/ . Он одну либу в 54 кб (без комментов, чисто код с форматированием) пожал до 19 кб и при этом либа отлично работала во всех трех ведущих браузерах. В общем потом этим компрессором код и буду жать


Вот это супер! Только вот как такое отлаживать :) Разве что паковать уже готовый код
p.s: для инфы. тот класс, что в 4000 строк он с 103 кб ужал до 50 кб, а твой с 16.3 до 4.9, больше чем в 3 раза. супер!
p.p.s: лицензия хоть Creative Commons :D Главное что бы юзать можно было

13
11 января 2007 года
RussianSpy
3.0K / / 04.07.2006
Цитата: alekciy
2.1. BSD? А отличия то какие?... GPL более чем свободная. И потом... не думал, что возникнет такой вопрос как лицензия )))) Нужно - юзай.



GPL далеко не так свободна как ты думаешь
Основные ее положения таковы:
1) Если юзаешь для себя - то бесплатно
2) если сделал продукт на основе другого - укажи название исходного продукта, имена его разработчиков и выложи исходники своего приложения.
3) Если создаешь коммерческое приложение на основе приложения с GPL то тут (могу ошибаться - точно не помню) нужно получить особое разрешение разработчика....

В BSD таких ограничений нет... Там вообще почти нет ограничений... Можешь взять обычную FreeBSD... Перекомпилировать ее, назвать VladimirPutinux OS и продавать за бабло... и никому ничего не должен..

UPD. Ссылки по теме:
http://ru.wikipedia.org/wiki/GPL
http://en.wikipedia.org/wiki/Bsd_licence
http://cylib.iit.nau.edu.ua/Mirrors/ask.km.ru/unics/bsd.html

12
11 января 2007 года
alekciy
3.0K / / 13.12.2005
Хм... ну указать, что это взято с FreeBSD стоит. Не потому что требуют, а потому, что, имхо, это было бы вполне чесно и по понятиям. Ибо указать разработчика дело не сложное/хитрое. И я считаю, что люди которые пишуть бесплатное ПО тратя свое время имеют право быть известными. Страна должна знать своих героев. Сам вот к примеру всегда указываю авторов скриптов если этого даже не требуют.
253
11 января 2007 года
Proger_XP
1.5K / / 07.08.2004
Цитата: alekciy
Хм... ну указать, что это взято с FreeBSD стоит. Не потому что требуют, а потому, что, имхо, это было бы вполне чесно и по понятиям. Ибо указать разработчика дело не сложное/хитрое. И я считаю, что люди которые пишуть бесплатное ПО тратя свое время имеют право быть известными. Страна должна знать своих героев. Сам вот к примеру всегда указываю авторов скриптов если этого даже не требуют


Нечто вроде Кодекса программистов

1.9K
11 января 2007 года
kasap
168 / / 07.04.2005
Классно! Автору респект.
Кстати, а слабо написать поддержку XQuery на js? :)
12
11 января 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Proger_XP
Нечто вроде Кодекса программистов


Ну можно и так сказать, хотя я так поступаю не только при програминге. Будет точнее сказать, что это кодекс просто сказать хорошего человека. Без привязки к профессии.

12
11 января 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: kasap
Классно! Автору респект.
Кстати, а слабо написать поддержку XQuery на js? :)


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

12
21 июля 2008 года
alekciy
3.0K / / 13.12.2005
Должен констатировать, что со времен написания первого поста в сети произошли некоторые подвижки в плане поддежки XPath в JavaScript в не native режиме. Юзаем и зацениваем:
JavaScript-XPath

К крайне положительно строне могу отности онлайновый тест на совместимость с браузером:
JavaScript-XPath Functional Test
Проверил Opera 9.5, FireFox 2.0 и IE6. Все 353 теста проходят успешно. Кого заинтерисовало отписывайтесь о проверке в других версих браузеров.
16K
21 июля 2008 года
k0t
97 / / 23.04.2007
FF 3.0 все 353
285
21 июля 2008 года
Romik
479 / / 24.11.2002
Konqueror 3.5.9
XPath Functional Test 335 / 353
Preceding and Folloing Test 28 / 28

в основном не прошли тест конструкции вида normalize-space() (вообще не роспазнаёт конструкцию) и //node() (частичное совпадение)

Epiphany 2.22.2 прошёл все тесты

Iceweasel 3.0 (по сути тот же FF 3, только из репозиториев Debian) тоже прошёл все тесты

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