我有以下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?)来获得您的结果…
当然,如果你是在代码中查询-如果你试图设置一个字段的源,这将是更困难的。