寻找 xdmp:value() 与 xdmp:eval() 之间的区别

Looking for difference between xdmp:value() vs xdmp:eval()

有人可以更好地解释 xdmp:eval()xdmp:value() 函数吗?

我曾尝试关注开发者 API。但是,我对这些实例并不是很满意,而且对我来说有点模糊。如果有人能帮助我理解这些功能及其与示例的区别,我将不胜感激。

这两个函数都用于动态执行代码字符串,但是 xdmp:value 是根据当前上下文计算的,这样如果您在当前作用域或声明的模块中定义了变量,则可以引用它们而无需重新声明它们.

xdmp:eval necessitates the creation of an entirely new context that has no knowledge of the context calling xdmp:eval. One must define a new XQuery prolog, and variables from the main context are passed to the xdmp:eval 作为参数调用并在 eval 脚本中声明为外部变量。

一般来说,如果可以使用xdmp:value,那可能是最好的选择;但是,xdmp:eval 具有一些 xdmp:value 没有的功能,即 <options> 参数中定义的所有内容。通过这些选项,可以控制执行查询的用户、执行查询的数据库、事务模式等。

还有一个执行动态字符串的函数:xdmp:unpath,和xdmp:value类似,但是比较有限,只能执行XPath .