2016-08-10 4 views
1

У меня есть следующий Sitecore запрос:Sitecore запрос: Получить первый предок, который соответствует условию

./ancestor::*[@@templatename='Template 1' or @@templatename='Template 2']//*[@@templatename='Target']/* 

, который работает, но если контекст деталь имеет как шаблон 1 и 2 в качестве предка, я получить двойной результат. Поэтому я в основном хочу остановиться у первого предка, который соответствует шаблону. Я пробовал получить первый матч следующим образом:

./ancestor::*[@@templatename='Template 1' or @@templatename='Template 2'][1]//*[@@templatename='Target']/* 

Но это приводит к ошибке. Любая помощь приветствуется

ответ

0

Попробуйте это:

./ancestor::*[@@templatename='Template 1' or @@templatename='Template 2']/.[1]/*[@@templatename='Target']/* 
1

Я не думаю, что то, что вы пытаетесь сделать, это возможно с помощью запроса. Соотношение позиции [1], которое вы пытаетесь, основывается на позиции (индексе) дочернего элемента, а не позиции в ваших результатах.

Я вижу 2 варианта для вас:

  • использовать свой первый запрос, получить двойные результаты и использовать отдельную функцию на него в коде
  • использовать что-то другое (API поиска?), Чтобы получить результаты. .

Это, конечно, если вы запрашиваете код - если вы пытаетесь установить источник для поля, это будет сложнее.

Смежные вопросы