我一直在Xquery做一个家庭作业,我现在卡住了。这项任务是为两大洲产生信息,50年后人口增长最小,最小。我剩下的就是拿最小值和最大值,它全部保存到 $ minAndMaxCont 中,它看起来像这样:
<Continent name="asia" pop="4243769598" futurePop="7255593125" increase="3011823527" ratio="1.709704770122159681"/>
<Continent name="africa" pop="1043912572" futurePop="3405022718" increase="2361110146" ratio="3.261789166382412339"/>
<Continent name="america" pop="955621605" futurePop="1510928928" increase="555307323" ratio="1.581095404388643976"/>
<Continent name="australia" pop="93146473" futurePop="156995765" increase="63849292" ratio="1.685471923343785653"/>
<Continent name="europe" pop="633227105" futurePop="693248396" increase="60021291" ratio="1.094786357889717939"/>
所以我想要做的是提取最小值和最大值“增加”这似乎很简单。但我似乎没有让它工作,我尝试了很多不同的方法,一种这样的方法是通过查看其他线程作为指南使用max和min函数。
我遵循的一个主题就是这个: How can I use XPath to find the minimum value of an attribute in a set of elements?
从那里我拿了这段代码:
let $xml := <foo>
<bar id="1" score="192" />
<bar id="2" score="227" />
<bar id="3" score="105" />
</foo>
let $min := min($xml/bar/@id)
let $max := max($xml/bar/@id)
return $max
这完全正常,它将返回最小/最大值(我可以同时使用Xquery和Datapath解决方案)。但是,当我尝试在我自己的数据集中执行类似的操作时,如下所示:
let $incMin := min($minAndMaxCont/@increase)
return $incMin
生成的结果变为此(它的行为与max()的行为方式相同):
3.011823527E9
2.361110146E9
5.55307323E8
6.3849292E7
6.0021291E7
因此,它不是提取最小值(或最大值),而是将整个列表转换为另一种形式,并且不对其进行任何操作。我真的想要让它工作,而且我真的很好奇为什么它将条目转换为另一种形式而不是提取最大值。我非常感谢任何帮助。
//亲切的问候。