Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.03.2009, 13:38
Новичок на форуме
Отправить личное сообщение для endryha Посмотреть профиль Найти все сообщения от endryha
 
Регистрация: 03.03.2009
Сообщений: 4

построение XPath выражения
Вообщем задача такая что нужно построить XPath выражение к конкретному елементу на html странице например по событию onClick. Может быть кто нибуть сталкивался с такой задачей? Я так подозреваю возможно есть уже готовые решения в каких нибуть javascript фреймвёрках? Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 11.03.2009, 14:10
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

не совсем ясна формулировка задачи, и конечная цель применения.
уточните если я неправильно понял
[telepatmode]
вы хотите, чтобы по клику на элементе у вас в кукую-нибудь переменную выводился XPath-путь до этого элемента.
Необходимо уточнение, что до любого элемента есть БЕСКОНЕЧНОЕ множество XPath-путей.Из них достаточно большое количество приемлимой длины.а оптимальных из них еденицы(и то смотря что понимать под оптимальностью)
Приведу вариант для построения самого простого "неумного" XPath-пути
function get_xpath(node)
	{
	var num,sibling;
	if(node.parentNode != undefined)
		{
		sibling=node.parentNode.getElementsByTagName(node.tagName);
		for(num=0;num<sibling.length;num++)
			if(node==sibling[num])
				break;
		return get_xpath(node.parentNode)+"/"+node.tagName+"["+(num+1)+"]";
		}
	else
		return "/";
	}

вроде бы все правильно написал, попробуйте.
вот HTML_ка для теста
<html>
<head>
<title>Выберите</title>
</head>
<body>
<span onclick="alert(get_xpath(this))">asdsad</span>
</body>
</html>


[/telepatmode]
Ответить с цитированием
  #3 (permalink)  
Старый 11.03.2009, 14:20
Новичок на форуме
Отправить личное сообщение для endryha Посмотреть профиль Найти все сообщения от endryha
 
Регистрация: 03.03.2009
Сообщений: 4

Благодарю за ответ! Вы поняли все правильно, а по поводу XPath путей то уточняю что желательнее всего конечно построить более относительный путь к елементу а не самый простой от начала документа до самого елемента! Просто я думал что возможно такая штука уже может быть реализована в каких нибуть javascript фреймверках и там уже более продуманный алгоритм построения XPath выражения. Можно конечно использовать и такую функцию но хотелось бы генерировать такое выражение что бы даже если документ был модифицирован то XPath выражение оставалось правильным, например когда у нас по дороге к нашему елементу вставили еще одну таблицу и в итоге внутри XPath выражения у нас это будет уже не table[2] а table[3].
Ответить с цитированием
  #4 (permalink)  
Старый 11.03.2009, 14:35
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

endryha,
Я предположу что такого алгоритма не существует в принципе.
Ответить с цитированием
  #5 (permalink)  
Старый 11.03.2009, 14:58
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Андрей Параничев
endryha,
Я предположу что такого алгоритма не существует в принципе.
+1
ИМХО, для всех случаев такой алгоритм организовать правктически невозможно.
единственный способ-делать XPath-ы своей головой.
есть конечно идеи по организации такого алгоритма
но для качественной реализации этого алгоритма нужен во первых какой-нибудь механизм обработки XPath(что в принципе реализовано уже),и очень качествнный программинг.
в общем виде это будет выглядеть примерно так:
пытаемся перебрать все возможные комбинации, минимизирующих элементы привязки.если не удалось найти адекватного выражения(чтобы количество элементов было равно 1), пытаемся увеличть количество элементов привязки.
трудно, долго, но в первом приближении возможно
но вопрос, в том, какое из полученных выражений считать "хорошим".тут уже нужен человеческий анализ
за программу с реализованной второй частью, я бы не против и выложить деньги.но, такая программа практически невозможна
да и первая часть реализуется долго, трудно и ненаверняка.ее можно дорабатывать до бесконечности, получая незначительный выигрыш для дополнительного круга задач на XPath
Ответить с цитированием
  #6 (permalink)  
Старый 11.03.2009, 17:00
Новичок на форуме
Отправить личное сообщение для endryha Посмотреть профиль Найти все сообщения от endryha
 
Регистрация: 03.03.2009
Сообщений: 4

В принципе я с вами согласен! Спасибо за советы.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения ? grusha jQuery 34 03.03.2009 22:29
Регулярные выражения вытаскивание по шаблону baal1988 Общие вопросы Javascript 27 09.10.2008 10:51
Регулярные выражения задача посложнее faunder Общие вопросы Javascript 5 15.09.2008 14:17
Регулярные выражения faunder Общие вопросы Javascript 2 15.09.2008 09:49
регулярные выражения в JS bifidokk Events/DOM/Window 2 02.06.2008 12:29