在属性中返回数据

时间:2015-03-27 22:23:52

标签: xml attributes xquery

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 >

但语法不会让我。

1 个答案:

答案 0 :(得分:0)

你真的应该了解XML和XQuery的基础知识。在XML中,所有属性必须在引号中,并且要在XQuery中评估属性值中的表达式,您需要花括号(否则它将在引号中输出文字值)。

<city country="{ $Countryname }" />

在XSLT中,这称为属性值模板。我不认为XQuery称它为同一个东西,但概念基本相同:

http://www.w3.org/TR/xquery-30/#id-attributes