【问题标题】:does sitecore query support current() function?sitecore 查询是否支持 current() 函数?
【发布时间】:2013-01-15 00:54:55
【问题描述】:

如果我尝试在嵌套表达式内的 sitecore 查询中使用 xpath 'current()' 函数,则会收到错误消息,如下所示:

/sitecore/content/Home/Topics/*[contains(current()/@MainTopics, @@id)]

我要做的是,将此查询用作我的 DropLink 字段的来源,以仅列出已在同一项目的另一个“MainTopics”字段中选择的“主题”项目。

但这给了我一个错误,比如")" expected at position 50

所以看起来current() 函数不能在嵌套表达式中使用,或者完全不能使用。如果没有,有没有办法从嵌套表达式中引用 current 节点而不是 context 节点?

有什么想法吗?

【问题讨论】:

    标签: xpath sitecore sitecore6


    【解决方案1】:

    sitecore 查询是否支持current() 函数?

    current() 是一个仅在 XSLT 中定义的函数

    根据定义current() 生成与当前xsl:template 匹配的节点或xsl:for-each 中选择的节点

    由于 SiteCore 似乎没有 XSLT 实现,答案一定是否定的

    【讨论】:

    • 感谢您清除它,出于某种原因,我认为 current() 是一个 xpath 函数。那么没有什么等价物可以与 sitecore 查询一起使用?
    • @Sudeep,我不知道 Sitecore,它似乎只实现了 XPath 1.0。 XPath 1.0 没有范围变量——因此它不能提供像XSLT 函数current() 这样的东西。 XPath 2.0 支持范围变量。
    【解决方案2】:

    我认为在 Sitecore 查询中没有任何简单的方法可以做到这一点。

    但是要将数据源放置在引用在另一个字段中选择的项目的模板字段上(如果我理解正确的话),那么一种可能的解决方案是构建一个自定义字段。在自定义字段的代码中,您将执行一些字符串处理来扩展或覆盖 Sitecore 查询,从而允许您添加指定特定字段 ID 的查询类型。本质上,您必须编写自己的非常基本的查询语言,以便在 C# 代码中使用。

    您可以从ValueLookupEx 派生您的字段,并使用您的自定义查询处理覆盖GetItems(Item current) 方法。如您所见,它非常方便地与当前提供的项目一起提供!

    我们有类似的需求,我们通过这种方式解决了。

    【讨论】:

    • 谢谢@james,是的,这是另一种方法,但出于我的特定目的,我想避免(额外的工作)。不是必须的,所以以不同的方式配置我的字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多