有人可以更好地解释xdmp:eval()
和xdmp:value()
函数吗?
我曾尝试使用Developer API。但是,我对这些实例并不满意,对我来说这有点模糊。如果有人能够帮助我理解这些功能以及它们与示例的区别,我将非常感激。
答案 0 :(得分:4)
这两个函数用于动态执行代码字符串,但xdmp:value
是针对当前上下文进行评估的,这样如果您在当前作用域中声明了变量或声明了模块,则可以在不重新声明它们的情况下引用它们。 / p>
xdmp:eval
需要创建一个全新的上下文,它不了解调用xdmp:eval
的上下文。必须定义一个新的XQuery prolog,并将主上下文中的变量作为参数传递给xdmp:eval
调用,并在eval脚本中声明为外部变量。
一般来说,如果你可以使用xdmp:value
,它可能是最好的选择;但是,xdmp:eval
具有xdmp:value
没有的一些功能,即<options>
参数中定义的所有功能。通过这些选项,可以控制执行查询的用户,执行的数据库,事务模式等。
还有另一个执行动态字符串的函数:xdmp:unpath
,它与xdmp:value
类似,但更有限,因为它只能执行XPath。