使用嵌套查询时,Xquery Where子句不起作用

时间:2016-04-13 15:16:30

标签: xquery

美好的一天,

我是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)

1 个答案:

答案 0 :(得分:1)

$taxis的价值是多少?您可能会在字符串上进行比较,而不是数字。

在嵌套的返回中,您在data()上调用$x/taxis - 假设正确返回一个数字值,那么外部$y/taxis子句中的where也可能被包裹在data()

但是,如果您的文档中没有架构,则data()将只返回一个字符串。在这种情况下,您应该使用taxisfn:number()元素转换为数字,或者直接将其转换为$y/taxis/xs:integer(.)