Запрос XPath в Adobe CRX
Я выполняю запрос XPath в Adobe CRX и пытаюсь найти список узлов, содержащий строку "Xbox Live". То, что я получаю, это узлы, которые содержат и "Xbox", и "Live". Мне интересно, что будет запрос, чтобы получить точное совпадение моей строки.
Текущий запрос XPath: /jcr:root/content//*[jcr:contains(., 'Xbox Live')] order by @jcr:score
Пример содержимого, которое я хочу вернуть:
- Для этого предложения требуется учетная запись Xbox Live
- Ваше имя пользователя Xbox Live недействительно
- XBox Live - это будущее!
Пример содержимого, которое я не хочу возвращать:
- Xbox и Playstation будут жить вечно
- Буду ли я жить дольше, чем мой Xbox?
- Xbox Out жил мой Wii
1 ответ
Ваш xpath/xquery в порядке, он должен возвращать элементы, содержащие точную фразу "Xbox Live"
при условии, что Adobe CRX имеет достойную реализацию xpath 1.0.
Возможный улов, используя .
в contains()
конкатенация всех дочерних текстовых узлов будет оценена. Например, следующее parent
элемент также считается совпавшим contains(., 'Xbox Live')
предикат:
<parent>Xbox <child>Live</child></parent>
Если вы хотите оценить contains()
к отдельным текстовым узлам и вернуть родительский элемент сопоставленных текстовых узлов, попробуйте следующее:
/jcr:root/content//text()[jcr:contains(., 'Xbox Live')]/parent::* order by @jcr:score