我希望有一个查询,它查询其父级的名称,然后将导航到内容文件夹下具有相同站点名称的文件夹,并在多列表中显示其下的项目。
基本上,内容树中的结构如下:
当我想开始将相对父代的“名称”与绝对路径的子代的“名称”进行比较时,麻烦就开始了。在Xpath中,它可能会像以下内容中所述:Compare attribute values using Xpath
在这种情况下,到目前为止我有以下查询:
/sitecore/content/*[ancestor-or-self::*[@@templateid='{Template Id of Sitename}']=@@name and @@templateid='{Template Id of Sitename}']
此查询返回Sitename1和Sitename2。
有趣的是,如果我将bij“ Sitename1”的部分替换为“ ancestor-or-se ..”或“ @@ name”,就像这样:
/sitecore/content/*['Sitename1'=@@name and @@templateid='{Template Id of Sitename}']
.. and ..
/sitecore/content/*[./ancestor-or-self::*[@@templateid='{Template Id of Sitename}']='DSW' and @@templateid='{Template Id of Sitename}']
我得到想要的结果:Sitename1。
顺便说一句,我现在正在使用内置的xpath构建器,然后将查询粘贴到“带有搜索的多列表”中。
任何帮助将不胜感激。
修改:
我想我发现,当我启动相对查询(“ ./ancestor :: ...”部分)时,它实际上是相对于我以绝对查询结束的项目。所以我应该有以下查询:
./ancestor-or-self::*[@@templateid='{Template Id of Sitename}' and @@name=ancestor::*[@@templateid='{Template Id of root item aka "sitecore"}']//*[@@templateid={Template Id of Sitename}]]
这里出现错误“对象必须为字符串类型”,这可能是由于上一个查询的以下部分引起的:
@@name=ancestor::*[@@templateid='{Template Id of root item aka "sitecore"}']//*[@@templateid={Template Id of Sitename}]
此方法的正确部分不能解析为字符串。因此问题仍然存在,如何使用sitecore xpath从sitecore项中提取纯字符串,以便进行比较。