Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xquery 人口数据查询_Xquery - Fatal编程技术网

Xquery 人口数据查询

Xquery 人口数据查询,xquery,Xquery,对于下面的XML数据,我试图获得这里显示的输出:即,我希望看到人口超过20000的国家的名称,条件是显示的城市数量应仅适用于人口超过3500的国家。此外,在某些国家,该市位于一个省之内 3. 2. ---------------------------这是XML数据---------------------- <country id="1" name="A" population="12000"> <name>A</name> <cit

对于下面的XML数据,我试图获得这里显示的输出:即,我希望看到人口超过20000的国家的名称,条件是显示的城市数量应仅适用于人口超过3500的国家。此外,在某些国家,该市位于一个省之内



3.
2.
---------------------------这是XML数据----------------------

<country id="1" name="A" population="12000">
   <name>A</name>
   <city id="c1" country="1">
      <name>T1</name>
      <population>5000</population>
   </city>
   <city id="c2" country="1">
      <name>T2</name>
      <population>3000</population>
   </city>
   <city id="c3" country="1">
      <name>T3</name>
      <population>4000</population>
   </city>
</country>
<country id="3" name="B" population="80000">
   <name>B</name>
   <city id="c4" country="2">
      <name>T4</name>
      <population>6000</population>
   </city>
   <city id="c5" country="2">
      <name>T5</name>
      <population>2000</population>
   </city>
   <city id="c6" country="2">
      <name>T6</name>
      <population>60000</population>
   </city>
   <city id="c7" country="2">
      <name>T7</name>
      <population>12000</population>
   </city>
</country>
<country id="3" name="C" population="68000">
   <name>C</name>
   <province>P1</province>
   <city id="c8" country="3">
      <name>T8</name>
      <population>51000</population>
   </city>
   <city id="c9" country="3">
      <name>T9</name>
      <population>3000</population>
   </city>
   <city id="c10" country="3">
      <name>T10</name>
      <population>14000</population>
   </city>
</country>

A.
T1
5000
T2
3000
T3
4000
B
T4
6000
T5
2000
T6
60000
T7
12000
C
P1
T8
51000
T9
3000
T10
14000

我写了这个xquery,但我不知道如何排除人口>3500的城市。我可能也没有正确地编写代码…请协助

for $c in doc("abc")//country
let $city:= count($c/city/name)
let $citypr:= count($c/province/city/name)
where $c/@population>1000000
return
<result>
<country name='{data($c/name) }'></country>
 <num_of_cities>
 {
 if (exists ($c/city/name)) then
 $city
 else
 $citypr
}
 </num_of_cities>
</result>
用于单据中的$c(“abc”)//国家/地区
let$city:=计数($c/city/name)
let$citypr:=计数($c/省/市/名)
其中$c/@population>1000000
返回
{
如果(存在($c/城市/名称)),则
$city
其他的
$citypr
}
一些提示:

  • 不要费心于
    where
    子句,在这些子句中,您可以在检索内容的说明符中更早地进行筛选

  • 如果只希望有一个
    ,而不是每个数据一个,则需要在FLWOR表达式之前启动它;无论您“返回”什么,每件物品都将返回一次

这是一个更接近的例子:

<result>{
  for $large-country in doc("abc")//country[@population > 20000]
  let $large-cities := $country/city[population > 3500]
  return
    <country name="{$large-country/@name}">
      <num_cities>{count($large-cities)}</num_cities>
    </country>
}</result>
{
对于$large country,以doc(“abc”)//国家[@population>20000]
let$大城市:=$国家/城市[人口>3500]
返回
{count($大城市)}
}

感谢您的回复,但我如何将省内有城市的国家也包括在内。我必须检查并显示,例如国家3的城市在一个省内。我想我得到了我想要的,非常感谢你的帮助。{对于文档中的$large country(“abc”)//国家[@population>20000]让$large cities:=$large country/city[人口>3500]让$large citiesp:=$large country/province/city[population>3500]返回{如果(存在($large country/city/name)),则计数($large citiesp)}
<result>{
  for $large-country in doc("abc")//country[@population > 20000]
  let $large-cities := $country/city[population > 3500]
  return
    <country name="{$large-country/@name}">
      <num_cities>{count($large-cities)}</num_cities>
    </country>
}</result>