Запрос 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
Другие вопросы по тегам