Это действительный XPath в Javascript:
id("priceInfo")/div[@class="standardProdPricingGroup"]/span[1]
И это превратилось в действительный PHP XPath для использования с DOMXPath- > query() -
//*[@id="priceInfo"]//div[@class="standardProdPricingGroup"]//span[1]
- Знаете ли вы какие-либо библиотеки или пользовательские компоненты, которые уже делают это преобразование?
- Вы знаете доступную документацию, в которой перечислены две различия синтаксиса?
Моя основная забота заключается в том, что может быть много различий, и я хочу определить эти различия, и у меня есть проблемы с их выявлением.
Вопрос может быть поставлен также по-другому: Поскольку Javascript может иметь разные допустимые форматы XPath, как нормализовать их для работы с PHP.
В одном из обновлений также упоминается, что функция id() является действительной XPath, если существует допустимое DTD, которое содержит это определение. У меня нет власти над входным DTD, и если есть способ найти решение, которое работает без какого-либо конкретного DTD, это будет потрясающе.
Update:
Я хочу преобразовать первый формат во второй с помощью алгоритма. Мой вход - первый, а не второй. Невозможно изменить это.
Как отметил @Nison Maël, 2-й формат действителен Javascript XPath, представленный здесь: http://jsbin.com/elatum/2/edit, к сожалению, просто добавляет проблему фрагментации Javascript XPath ".
@salathe указал, что корректный запрос Javascript XPath отлично работает на PHP, если в документе, документированном, есть действительный DTD (@Dimitre Novatchev упомянул об этом в комментарии, но не обратил внимания на важность). К сожалению, я не контролирую входной DTD, поэтому теперь я должен исследовать способ преодоления этого или найти решение, которое работает даже без действительного DTD.