"期待表达"在XQuery中声明默认元素名称空间时抛出的异常

时间:2015-07-27 07:52:27

标签: xml namespaces xquery basex

我想查询包含命名空间的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]期待表达。

执行声明。 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>

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

您必须为每个单独的查询声明命名空间。因此,您只发送一个只包含查询序言的查询,而不是第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还允许使用单引号'来转义字符串,因此可以省略反斜杠。