XPath содержит () не работает - PullRequest
0 голосов
/ 06 июня 2018

Мы пытаемся получить все узлы, содержащие значение свойства, начиная со строки ниже "/content/retail/mx/mexico/es/".Для этого мы написали запрос AEM XPath:

/jcr:root/content/retail/mx/mexico//* 
[
jcr:contains(., '/content/retail/mx/mexico/es/' ) 
] 

Мы получаем результаты, но проблема в том, что мы получаем результаты тех узлов, которые также содержат значение свойства "/content/retail/mx/mexico/es_mexico".Похоже, XPath не учитывает последний "/" в пути.

Есть ли еще способ избежать, чтобы мы не получили результаты узлов, имеющих es_mexico?

1 Ответ

0 голосов
/ 06 июня 2018

Обычно в XPath, contains() проверяет удержание подстроки .

Если вы хотите равенство строк вместо этого используйте оператор равенства = со строками в качестве аргументов.

Кроме того, ваш XPath,

/jcr:root/content/retail/mx/mexico//* 
[
jcr:contains(., '/content/retail/mx/mexico/es/' ) 
] 

имеет ряд примечательных аспектов:

  1. Вы используете специальную jcr:contains() функцию вместо XPath contains().Почему?
  2. Вы проверяете строковое значение . всех элементов //* ниже /jcr:root/content/retail/mx/mexico/.Это, скорее всего, приведет к нескольким выборкам элементов-предков в дополнение к дочерним элементам - возможно, это не то, что вы ожидаете.
  3. Вы проверяете содержимое строки на строке, подобной XPath.Почему?
...