我需要返回前{5} <Concelho>
个来自<Habitante>
= 2001的Ano
孙子的前五个for $x in doc("Camaras.xml")/Portugal/Concelho
order by xs:integer($x/Habitantes/Habitante[@Ano = "2001"]) descending
return data($x[position() <= 5])
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE Portugal SYSTEM "CamarasDTD.dtd"> <Portugal>
<Concelho Nome="Arganil " id="0">
<Contactos>
<Email>geral@cm-arganil.pt</Email>
<Telefone> +351 235 200 150</Telefone>
<Fax> +351 235 200 158</Fax>
</Contactos>
<Localização>
<Codigo-Postal>3304-954 Arganil</Codigo-Postal>
</Localização>
<Mapa src="http://cim-regiaodecoimbra.pt/wp-content/uploads/2014/04/3D_arganil.png" />
<Habitantes>
<Habitante Ano="2001">2001</Habitante>
<Habitante Ano="2011">12145</Habitante>
</Habitantes>
</Concelho>
<Concelho Nome="Cantanhede " id="1">
<Contactos>
<Email>geral@cm-cantanhede.pt</Email>
<Telefone> +351 231 410 100</Telefone>
<Fax> +351 231 410 199</Fax>
</Contactos>
<Localização>
<Codigo-Postal>3060-133 Cantanhede</Codigo-Postal>
</Localização>
<Mapa src="http://cim-regiaodecoimbra.pt/wp-content/uploads/2014/04/3D_cantanhede1.png" />
<Habitantes>
<Habitante Ano="2001">37910</Habitante>
<Habitante Ano="2011">36595</Habitante>
</Habitantes>
</Concelho>
<Concelho Nome="Coimbra " id="2">
<Contactos>
<Email>geral@cm-coimbra.pt</Email>
<Telefone> +351 239 857 500</Telefone>
<Fax> +351 239 820 114</Fax>
</Contactos>
<Localização></Portugal>
元素,但我遇到了问题。
我的代码:
<Concelho>
排序正常,但它重新调整了所有{{1}}个元素。
答案 0 :(得分:0)
您需要进行排序,然后过滤:
let $foo :=
for $x in doc("Camaras.xml")/Portugal/Concelho
order by xs:integer($x/Habitantes/Habitante[@Ano = "2001"]) descending
return $x
return $foo[ position() <= 5 ]