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