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