Написал библиотеку для работы с XPath в JavaScript
Но оного не нашел, может искал не очень хорошо...
Собственно так и родилась идея написать подобное самому. Может кому-то кроме меня пригодиться. Ну а сейчас веду бета тестирование :)
Описание и либа тут: http://alekciy.ru/projects/jsxpath/
Хотя в вики вроде ничего так написано http://ru.wikipedia.org/wiki/XPath понятно более менее, хотя и с небольшими ошибками.
Если это работает под IE, Opera & Mozilla, то очень хорошо. Скоро буду делать одну штуку, попробую заюзать Ваш скриптик, думаю это будет весьма качественная проверка для написаного. Впечатляет относительно небольшой размер файла
Умные люди сказали, что есть подобный проект на инглише. Точнее есть либа которая может работать с XPath в том числе. Сейчас вот юзаю, но жаль, там не польная поддежка спецы ((( есть мысль к ним примкнуть.
Проект есть. Полная поддержка(как говорит автор) спецификации по W3C. Но меня отпугивает объем либы: 103 кб или почти 4000 строк
Старый адрес проекта был http://mcc.id.au/xpathjs, но автор похоже что-то изменил, и теперь либа есть только в кэше гугла(тут)
Там есть описание и несколько примеров
Есть еще одна либа libxml2. Говорят что она 100% совместима
Недавно сам заинтересовался темой применения XPath в JS. Почти ничего не нашел, кроме xpathjs, твоей либы и libxml2. Попробую поюзать твой класс, т.к он более компактный или напишу свой. В любом случае, задумка полезная
Мне одну либу посоветовали: http://jquery.com/ . Реально хорошая библиотека с широким функционалом. Но XPath там развита не так широко как хотелось бы (к примеру position() и last() не работают). Да и кроме того довольно большая, т.е. при подключении к сайту будет дохрена ненужного мне кода ибо XPath в отдельный модель не выделена.
Да, знаю эту либу. Правда руки поюзать так и не дошли.
Недавно сам заинтересовался темой применения XPath в JS. Почти ничего не нашел, кроме xpathjs, твоей либы и libxml2. Попробую поюзать твой класс, т.к он более компактный или напишу свой.
Вот и я озадачился написание кросс-браузерной версии и очень удивился, что таковой пока еще не написано. Кстати абсолютная поддежка XPath спецы в IE ни когда реализована не будет из-за кравой реализации DOM в этом браузере.
Вообще, есть замечательный метод замечательной спецы DOM Level 3. Называется xmldomobj.evaluate() и делает он тоже, что и все вышеназванные библиотеки. Работал бы он и в IE.... Тестил в опере 9.10 и FF2 везде нормально
Самое интересное, что упоминание об этом методе нашел только в 2-х статьях MDC. Даже статей не смог найти
2alekciy
Ты планируешь развивать класс и дальше? Ибо компактность твоего класса впечатляет
p.s: загляни в личку
Стандартно свободная :D
По GPL конечно.
Вообще, есть замечательный метод замечательной спецы 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 просто нет.
Кстати насчет оперы... я даже сейчас на нашел на их сайте заявления о поддежке этого метода. А какой у тебя код, что работает?
2alekciy
Ты планируешь развивать класс и дальше? Ибо компактность твоего класса впечатляет
p.s: загляни в личку
Да, планирую. Но пока либа была ни кому не нужна и находится в том же виде в каком была на момент публикации. Сам же я пока XPath в JS не занимаюсь, поэтому и отложил все это дело в сторонку.
Компактность.... э-хехе.. если бы не кривая DOM в осле, он был бы еще короче. Ибо доходит до того, что приходиться писать функцию для эффекта подобно методу childNodes из DOM! С атрибутами они там тоже изратились....
Кстати насчет компактности. Остался в диком восторге вот от этого JS копрессора кода http://dean.edwards.name/packer/ . Он одну либу в 54 кб (без комментов, чисто код с форматированием) пожал до 19 кб и при этом либа отлично работала во всех трех ведущих браузерах. В общем потом этим компрессором код и буду жать.
з.ы. Глянул. Отписал.
По GPL конечно.
Ну GPL (кстати какой именно версии?) не такая уж и свободная как принято считать. Вот если бы была BSD... =)))
Ресурс воистину рулез, только пока он в бете. Мне понравилось их документация DOM(для Gecko - это такой движок, который юзают NS и FF, т.е все проги от Мозиллы, но он почти на 100% стандартизирован). Ее можно скачать
Кстати насчет оперы... я даже сейчас на нашел на их сайте заявления о поддежке этого метода. А какой у тебя код, что работает?
Именно это и работает. Я имел ввиду, что сегодня протестил код с document.evaluate() в FF2(v2.0.0.1), Opera 9(v9.10) и в IE6(v6SP1). Результат - везде работает, кроме IE. Будем надеятся, что в IE7, который не за горами, это будет поддерживаться нормально. А пока.... вот и юзаем программную эмуляцию стандарта W3C.... :(
Ну ладно. Я если буду находить ошибки или дописывать что-то свое буду пересылать обновления тебе
Вот это супер! Только вот как такое отлаживать :) Разве что паковать уже готовый код
p.s: для инфы. тот класс, что в 4000 строк он с 103 кб ужал до 50 кб, а твой с 16.3 до 4.9, больше чем в 3 раза. супер!
p.p.s: лицензия хоть Creative Commons :D Главное что бы юзать можно было
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
Нечто вроде Кодекса программистов
Кстати, а слабо написать поддержку XQuery на js? :)
Ну можно и так сказать, хотя я так поступаю не только при програминге. Будет точнее сказать, что это кодекс просто сказать хорошего человека. Без привязки к профессии.
Кстати, а слабо написать поддержку XQuery на js? :)
Думаю, что неслабо. Однако для начало нужно вести поиск готовых решений ибо я не верю, что об этом ни кто не задумывался, ну и потом задумать, а понадобиться ли это кому либо вообще.
JavaScript-XPath
К крайне положительно строне могу отности онлайновый тест на совместимость с браузером:
JavaScript-XPath Functional Test
Проверил Opera 9.5, FireFox 2.0 и IE6. Все 353 теста проходят успешно. Кого заинтерисовало отписывайтесь о проверке в других версих браузеров.
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 - не прошёл тесты :-)