3

xdmp:eval()有人可以对和xdmp:value()功能提供更好的解释吗?

我曾尝试遵循 Developer API。但是,我对这些实例并不十分满意,而且对我来说有点模糊。如果有人可以帮助我理解这些功能及其与示例的区别,我将不胜感激。

4

1 回答 1

4

这两个函数都用于动态执行代码字符串,但xdmp:value会根据当前上下文进行评估,因此如果您在当前范围内定义了变量或声明了模块,则可以引用它们而无需重新声明它们。

xdmp:eval需要创建一个不知道上下文调用的全新上下文xdmp:eval。必须定义一个新的 XQuery 序言,来自主上下文的变量xdmp:eval作为参数传递给调用,并在 eval 脚本中声明为外部变量。

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

还有一个执行动态字符串的函数:xdmp:unpath,它与 类似xdmp:value,但更有限,它只能执行 XPath。

于 2015-12-23T21:47:59.100 回答