"Expecting expression" 在 XQuery 中声明默认元素命名空间时抛出异常

"Expecting expression" exception thrown when declaring a default element namespace in XQuery

我想查询包含命名空间的 XML 文档,并定义默认元素命名空间。我在 BaseX 中使用以下代码:

session.execute("open vagelisdb");
session.execute("xquery declare default element namespace  \"http://www.satisfactory-project.eu/XMLSchema/v1.0/common\";"); 
String all_xmls_string=session.execute("xquery collection('vagelisdb')/SensorInfo/Position[x>5]");

但是我收到错误信息

[XPST0003] Expecting expression.

在执行声明。 XML 的一个例子是:

<?xml version="1.0" encoding="UTF-8"?><SensorInfo xmlns="http://www.satisfactory-project.eu/XMLSchema/v1.0/common">
<ID>sensor_1</ID>
<Type>DepthCamera</Type>
<Position>
    <x>10</x>
    <y>12</y>
    <z>20</z>
    <Unit>Meters</Unit>
</Position>
<Space>Edw</Space>
</SensorInfo>

我该如何解决这个问题?

您必须为每个单独的查询声明命名空间。照原样,您发送的查询仅包含查询序言,而不是第 2 行中的实际表达式。将两者合并为一个查询。

session.execute("open vagelisdb");
String all_xmls_string=session.execute("xquery declare default element namespace  \"http://www.satisfactory-project.eu/XMLSchema/v1.0/common\"; collection('vagelisdb')/SensorInfo/Position[x>5]");

附加提示:XQuery 还允许使用单引号 ' 来转义字符串,因此您可以省略反斜杠。