Какой самый эффективный способ найти относительный XPath между двумя элементами?

Посмотрев на различные популярные модули для работы с XML / XPath, я еще не нашел прямого способа добиться этого.

По сути, интерфейс будет выглядеть примерно так:

my $xpath = get_path($node1, $node2);

... который вернет относительный путь от $ node1 до $ node2.

Я включаю свое собственное время в расчет «эффективности» - я возьму любое существующее решение этой проблемы . В противном случае я хотел бы знать некоторые из ловушек, с которыми можно столкнуться в любых «очевидных» самодельных решениях.

Я мог представить себе, что сначала просто ищу $ node2 в потомках $ node1. , а затем, если это не удается, итерации предков $ node1, выполняющих то же самое. Будет ли это столь же ресурсозатратным, как я боюсь?

Для моего конкретного случая использования я могу предположить, что известны абсолютные пути к $ node1 и $ node2. Учитывая это, я хотел бы думать, что есть некоторая «математика XPath», которую можно было бы выполнить между двумя полными путями без необходимости бегать по всему дереву, но я не знаю, как этот процесс будет выглядеть.

резюмируйте:

1) Могут ли существующие модули CPAN облегчить то, что я хочу сделать?

2) Если нет, то какой эффективный способ сделать это?

6
задан Ryan Jendoubi 16 August 2011 в 17:55
поделиться