为什么我在XQuery中搜索范围不起作用并返回太多元素?

时间:2014-03-06 19:42:32

标签: xquery basex

XQuery的新手,可能是菜鸟q。我安装了一个BaseX数据库作为我的沙箱(其中包含一个示例文件etc / factbook.xml)。我构建了一个简单的查询,我认为它将返回所有“城市”的人口> 1000万。

for $x in doc("etc/factbook.xml")/mondial/country
  where $x/city/population > 10000000.0
return $x/city

但是我的人口较少,有任何见解的城市?

<city id="f0_1726" country="f0_553" longitude="126.967" latitude="37.5667">
  <name>Seoul</name>
  <population year="95">10229262</population>
</city>
<city id="f0_10300" country="f0_553">
  <name>Kunsan</name>
  <population year="95">266517</population>
</city>
 (I've only included first two but many more both < and > 10million)

1 个答案:

答案 0 :(得分:2)

您将返回所有拥有人口超过1000万的城市的国家/地区。而不是遍布城市(请使用有意义的变量名称):

for $city in doc("etc/factbook.xml")/mondial/country/city
where $city/population > 10000000
return $city

或者只是去做一个XPath表达式:

doc("etc/factbook.xml")/mondial/country/city[population > 10000000]