如何返回位置<五

时间:2017-01-18 21:18:25

标签: xpath xquery

我需要返回前{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}}个元素。

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 ]