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

时间:2016-08-10 20:16:13

标签: 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']/*

但这会导致错误。任何帮助表示赞赏

2 个答案:

答案 0 :(得分:1)

试试这个:

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

答案 1 :(得分:1)

我不认为您尝试做的事情可以通过查询实现。您尝试的位置匹配[1]基于子项的位置(索引)而不是结果中的位置。

我看到了两个选项:

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

当然,如果您要查询代码 - 如果您尝试为字段设置源代码,则会更加困难。