"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 还允许使用单引号 '
来转义字符串,因此您可以省略反斜杠。
我想查询包含命名空间的 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 还允许使用单引号 '
来转义字符串,因此您可以省略反斜杠。