Xpath sitecore查询是否支持current()函数?
如果尝试在嵌套表达式内的sitecore查询中使用xpath“current()”函数,则会出现错误,如下所示:Xpath sitecore查询是否支持current()函数?,xpath,sitecore,sitecore6,Xpath,Sitecore,Sitecore6,如果尝试在嵌套表达式内的sitecore查询中使用xpath“current()”函数,则会出现错误,如下所示: /sitecore/content/Home/Topics/*[contains(current()/@MainTopics, @@id)] 我试图做的是,将此查询用作我的DropLink字段的源,仅列出已在同一项目的另一个“MainTopics”字段中选择的“Topic”项目 但这给了我一个错误,类似于位置50处预期的“”) 因此看起来current()函数不能在嵌套表达式中使用
/sitecore/content/Home/Topics/*[contains(current()/@MainTopics, @@id)]
我试图做的是,将此查询用作我的DropLink字段的源,仅列出已在同一项目的另一个“MainTopics”字段中选择的“Topic”项目
但这给了我一个错误,类似于位置50处预期的“”)
因此看起来current()
函数不能在嵌套表达式中使用,也不能完全使用。如果没有,是否有任何方法可以从嵌套表达式中引用当前节点而不是上下文节点
有什么想法吗
sitecore查询是否支持current()
功能
current()
是仅在XSLT中定义的函数
根据定义current()
生成与当前xsl:template
匹配的节点,或在xsl:for each
由于SiteCore似乎没有XSLT实现,答案必须是否定的我认为在SiteCore查询中没有任何简单的方法可以做到这一点
但要将数据源放在引用在另一个字段中选择的项的模板字段上(如果我理解正确的话),一个可能的解决方案是构建一个自定义字段。在自定义字段的代码中,您将执行一些字符串处理来扩展或覆盖Sitecore查询,从而允许您添加指定特定字段ID的查询类型。基本上,您必须编写自己的非常基本的查询语言,以便在C代码中使用
您可以从ValueLookupEx
派生您的feild,并使用自定义查询处理覆盖GetItems(Item current)
方法。正如你所看到的,它很容易与当前提供的项目一起提供
我们有一个类似的需求,我们通过这种方式解决了它。感谢您将其清除,出于某种原因,我认为current()是一个xpath函数。所以没有任何等价物可以用于sitecore查询?@Sudeep,我不知道sitecore,它似乎只实现了XPath 1.0。XPath 1.0没有范围变量——因此它不能提供类似XSLT函数current()
的功能。XPath 2.0支持范围变量。谢谢@james,是的,这是另一种方法,但出于我的特殊目的,我希望避免(额外的工作)。不是必须的,所以我的字段配置不同。