for $Citypop in doc("mondial.xml")//city[population > 1000000]/population[last()]
let $Cityname := doc("mondial.xml")//city[population = $Citypop]/name
let $Countryname := doc("mondial.xml")/$Cityname/../../name/../../name
let $Countrypop := doc("mondial.xml")/$Countryname/../population
let $popshare := 100*($Citypop[1] div $Countrypop[1])
return <city> {$Cityname} </city>
这将从上面的$Cityname
变量返回许多不同的城市名称,如下所示。我似乎无法做的是将$popshare
或$Countryname
变量作为属性返回。所以我希望格式看起来像:
<city popshare="20" country="Spain">Madrid</city>
我现在得到的是:
<city>Madrid</city>
我尝试过类似的事情:
<city country= $Countryname >
但语法不会让我。
答案 0 :(得分:0)
你真的应该了解XML和XQuery的基础知识。在XML中,所有属性必须在引号中,并且要在XQuery中评估属性值中的表达式,您需要花括号(否则它将在引号中输出文字值)。
<city country="{ $Countryname }" />
在XSLT中,这称为属性值模板。我不认为XQuery称它为同一个东西,但概念基本相同: