Изучив различные популярные модули для работы с XML / XPath, мне еще предстоит найти простой способ добиться этого.
По сути, интерфейс будет выглядеть примерно так:
my $xpath = get_path($node1, $node2);
... который возвращает относительный путь от $ node1 до $ node2.
Я включаю свое собственное время в вычисление «эффективности» - я приму любое существующее решение этой проблемы. Если это не удастся, я хотел бы знать некоторые подводные камни, с которыми можно столкнуться в любых «очевидных» отечественных решениях.
Вдобавок ко всему, я мог бы вообразить, что сначала просто ищу $ node2 в потомках $ node1, а затем не удается выполнить итерацию предков $ node1, делающих то же самое. Будет ли это столь же ресурсоемким, как я боюсь?
Для моего конкретного случая использования я могу предположить, что абсолютные пути как $ node1, так и $ node2 известны. Учитывая это, я хотел бы подумать, что есть некоторая «математика XPath», которая может быть сделана между двумя полными путями без необходимости бегать по всему дереву, но я не знаю, как будет выглядеть этот процесс.
Подведем итог:
1) Какие-нибудь существующие модули CPAN облегчают то, что я хочу сделать?
2) Если нет, какой эффективный способ это сделать?