美好的一天,
我是xquery的新手。
我正在尝试使用where子句执行xquery,该子句返回的值大于嵌套查询返回的值,如下所示。它运行但返回的值不大于返回值
如果我直接使用where子句的值,它可以正常工作。我正在使用BaseX来执行我的查询。感谢任何反馈,我相信解析器可能正在阅读我的子查询错误。
for $y in doc("url.xml")/taxi_stations/stand
where $y/taxis>=
(
for $x in doc("url.xml")/taxi_stations/stand
where $x/name="Jacksonville"
return data($x/taxis)
)
return ($y/taxis,$y/name)
答案 0 :(得分:1)
$taxis
的价值是多少?您可能会在字符串上进行比较,而不是数字。
在嵌套的返回中,您在data()
上调用$x/taxis
- 假设正确返回一个数字值,那么外部$y/taxis
子句中的where
也可能被包裹在data()
。
但是,如果您的文档中没有架构,则data()
将只返回一个字符串。在这种情况下,您应该使用taxis
将fn:number()
元素转换为数字,或者直接将其转换为$y/taxis/xs:integer(.)
。