在Java应用程序中执行XQuery中的命令块

时间:2015-07-14 17:52:44

标签: java xpath xquery

我正在使用带有Java的xHive数据库。在我的Java应用程序中,我需要多次调用相同的xQuery函数。

libDev.executeXQuery("import module namespace download = 'http://xquery.myxq.com.br/download' at 'http://localhost:8080/WebUpdate/xq/download.xq';
download:updateDeviceData('pc', '0040-A72D-4025')");

libDev.executeXQuery("import module namespace download = 'http://xquery.myxq.com.br/download' at 'http://localhost:8080/WebUpdate/xq/download.xq';
download:updateDeviceData('pc', '0040-A72D-4026')");

我想制作一个这样的命令块,只执行一次。 在xquery中有什么方法可以做到这一点吗?

libDev.executeXQuery("import module namespace download = 'http://xquery.myxq.com.br/download' at 'http://localhost:8080/WebUpdate/xq/download.xq';
download:updateDeviceData('pc', '0040-A72D-4025')
download:updateDeviceData('pc', '0040-A72D-4026')";

当我尝试运行此块时,我收到此错误:

com.xhive.error.xquery.XhiveXQueryParseException: query:3:1:XQUERY_PARSE_ERROR:

没有可行的选择在输入'下载' (NCName)(XPST0003)

1 个答案:

答案 0 :(得分:2)

您需要将表达式包装在序列构造函数中,即(expr1, expr2)

libDev.executeXQuery("import module namespace download = 'http://xquery.myxq.com.br/download' at 'http://localhost:8080/WebUpdate/xq/download.xq';
(
download:updateDeviceData('pc', '0040-A72D-4025'),
download:updateDeviceData('pc', '0040-A72D-4026')
)";