Sitecore查询:获取匹配条件的第一个祖先



我有以下sitecore查询:

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

可以工作,但如果上下文项同时具有Template 1和Template 2作为祖先,则得到双结果。所以我基本上想在匹配模板的第一个祖先处停下来。我试过像这样得到第一个匹配:

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

但是这会导致错误。

试试这个:

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

我不认为你想做的是可能的查询。您尝试的位置匹配[1]是基于子条目的位置(索引),而不是结果中的位置。

我看到两个选项:

  • 使用您的第一个查询,获得双重结果并在代码
  • 中使用不同的函数
  • 使用其他东西(搜索api?)来获得您的结果…

当然,如果你是在代码中查询-如果你试图设置一个字段的源,这将是更困难的。

最新更新