gpt4 book ai didi

XQuery 在谓词中使用函数

转载 作者:行者123 更新时间:2023-12-01 23:22:32 24 4
gpt4 key购买 nike

我正在学习 XQuery,对 last() 等函数很好奇。据我了解from the documentation ,我可以这样:

doc('http://www.functx.com/input/catalog.xml')/catalog/product[last()]

据我了解,这传递了产品元素的顺序:

doc('http://www.functx.com/input/catalog.xml')/catalog/product

... 到 last(),然后返回最后一个成员。但是,last() 不应该接受任何参数,那么数据结构是如何传递给函数的呢?

谢谢!

最佳答案

XQuery 是 XPath 的扩展,但这个问题的答案完全与 XPath 相关。

XPath 表达式具有动态上下文;这是 XPath 规范中的详细信息:http://www.w3.org/TR/xpath-30/#id-xp-evaluation-context-components .上下文项可以引用为 . :

fn:doc('http://www.functx.com/input/catalog.xml')/catalog/product[. eq "my product name"]

谓词[. eq "my product name"]为每个产品元素重新评估,并且.是对上下文项的引用,即特定于该评估的元素。

几个 XPath 函数只接受上下文,而其他函数默认为上下文,带有可选参数。

下面是只接受 XPath 3 上下文的函数的完整列表:http://www.w3.org/TR/xpath-functions-30/#context .

一些例子:

  • fn:last()采用零参数并返回上下文项的大小

如果有 10 个 <product/>元素,以下表达式是等效的:

fn:doc('http://www.functx.com/input/catalog.xml')/catalog/product[fn:last()]

fn:doc('http://www.functx.com/input/catalog.xml')/catalog/product[10]
  • fn:position()采用零参数并返回上下文位置

fn:doc('http://www.functx.com/input/catalog.xml')/catalog/product[fn:position() > 3]


有许多函数采用零或 1 个参数,其中零参数形式访问上下文。我看到其中 15 个,在规范中搜索这个短语:“此函数的零参数形式是·确定性·、·上下文相关·和·焦点相关·。”

一个例子:

  • fn:string()采用零或 1 参数并将参数或上下文项作为字符串返回

fn:doc('http://www.functx.com/input/catalog.xml')/catalog/product/fn:string()

返回每个 <product/> 的字符串值元素。相当于

fn:doc('http://www.functx.com/input/catalog.xml')/catalog/product/fn:string(.)

上下文项作为参数显式传递的位置。 fn:string()也可用于类型转换:fn:string(1)返回 "1" .

关于XQuery 在谓词中使用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33261061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com