Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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
Xml XQuery-列出每个大陆上人口最多的国家的名称和人口_Xml_Xquery_Xquery Sql - Fatal编程技术网

Xml XQuery-列出每个大陆上人口最多的国家的名称和人口

Xml XQuery-列出每个大陆上人口最多的国家的名称和人口,xml,xquery,xquery-sql,Xml,Xquery,Xquery Sql,我必须做下面的练习,但我不知道怎么做 列出每个大陆上人口最多的国家的名称和人口。禁止在查询中使用五大洲的ID,即查询中不能出现“f0_119”、“f0_123”、“f0_126”、“f0_129”和“f0_132” 这里有下载XML文件的链接: 这是我的密码。我有中国,但我需要展示其他大陆上人口最多的国家——俄罗斯、美国。。。有人能帮我吗 for $var in /mondial/country let $max:= max(/mondial/country/@population) where

我必须做下面的练习,但我不知道怎么做

列出每个大陆上人口最多的国家的名称和人口。禁止在查询中使用五大洲的ID,即查询中不能出现“f0_119”、“f0_123”、“f0_126”、“f0_129”和“f0_132”

这里有下载XML文件的链接:

这是我的密码。我有中国,但我需要展示其他大陆上人口最多的国家——俄罗斯、美国。。。有人能帮我吗

for $var in /mondial/country
let $max:= max(/mondial/country/@population)
where $var/@population = $max
return concat(data($var/name), ' - ',data($var/@population))

@pepe123656,您没有指定正在使用的XQuery版本。下面是XQuery 3.0和更高版本的解决方案,它使用了
groupby
子句

之所以使用包含[…]的谓词,是因为俄罗斯、土耳其等国家位于两大洲

XQuery

{
对于文档中的$country('e:\temp\mon.xml')/mondial/country
让$population:=$country/@population
(:土耳其、俄罗斯等位于两大洲:)
(:我们选择陆地百分比最高的大陆:)
按$continentID分组:=$country/Enclosed[xs:double(@percentage)eq max($country/Enclosed/@percentage)]/@Continental
按$ID订购
返回
{
$country/./大陆[@id=$continlandid]/@name | | |“:“| |$country[@population=max($population)]/@name | |::“| | xs:integer(max($population))
}
}
输出


欧洲:德国:83536112
亚洲:中国:1210004992
美国:美国:266476272
澳大利亚/大洋洲:澳大利亚:18260864
非洲:尼日利亚:103912488
<root>{
    for $country in doc('e:\temp\mon.xml')/mondial/country
    let $population := $country/@population
    (: Turkey, Russia, etc. are on two continents :)
    (: We select the highest land percentage continent :)
    group by $continentID := $country/encompassed[xs:double(@percentage) eq max($country/encompassed/@percentage)]/@continent
    order by $continentID
    return <row>
      {
        $country/../continent[@id = $continentID]/@name || ": " || $country[@population = max($population)]/@name || ": " || xs:integer(max($population))
      }
      </row>
}</root>
<root>
  <row>Europe: Germany: 83536112</row>
  <row>Asia: China: 1210004992</row>
  <row>America: United States: 266476272</row>
  <row>Australia/Oceania: Australia: 18260864</row>
  <row>Africa: Nigeria: 103912488</row>
</root>