Это паршивое диагностическое сообщение.
Ваша конкретная проблема с синтаксисом XPath
Вместо ||
, что логично ИЛИ в некоторых языках, вы, вероятно, ищете |
,это объединение узлов в XPath .(То есть, если вы не нацелены на оператор объединения строк * XP0 3.0 .)
Как найти и исправить проблемы с синтаксисом XPath в целом
Используйте лучший инструмент. Диагностические сообщения трудно писать хорошо.Хотя в общем случае невозможно всегда точно указать, что нужно исправить, чтобы исправить синтаксическую ошибку, лучшие инструменты помогают больше всего.Если ваш инструмент показывает не более XPath syntax error
, вы определенно можете узнать больше, попытавшись оценить ваш XPath с помощью лучшего инструмента:
oXygen XMLРедактор с использованием Saxon :
Не удалось выполнить XPath из-за: Оператору конкатенации ('||') требуется включить XPath 3.0
http://videlibri.sourceforge.net/cgi-bin/xidelcgi
err: XPST0003: эта языковая функция недоступна на выбранном языке.По крайней мере XQuery / XPath версии 3.0 требуется в: // td [text () = "ASIN"] ||[<- здесь раньше произошла ошибка] // li [содержит (., "ASIN:")] </p>
www.xpathtester.com / xpath :
ОШИБКА - Не удалось оценить выражение XPath: javax.xml.transform.TransformerException: ожидался путь к местоположению, но обнаружен следующий токен: |
Избегайте распространенных версий XPath 1 ошибок требований:
- XPath 1.0
- XPath 2.0 необходим для регулярных выражений, последовательностей.
- XPath 3.0 необходим для литералов пространства имен, ||,!, Встроенных анонимных функций.
- XPath 3.1 необходим для массивов и ассоциативных массивов.
Используйте силу (BNF), Люк :Приведенные выше версии XPath ссылаются на соответствующие Рекомендации W3C XPath, которые включают в себя определенные правила грамматики, которые определяют допустимый синтаксис XPath.Знайте это хорошо, чтобы обнаружить / избежать синтаксических ошибок XPath.
1 К сожалению, XPath не имеет встроенного способа извлечения своей версии.Это оставляет два варианта: (1) знать версию, которую реализует язык, библиотека или приложение хостинга, основываясь на его документации, или (2) инициировать простое исследование (конечно же, с правильным синтаксисом), в котором используется функция, зависящая от версии.и посмотреть, если синтаксический избегается.