在属性中返回数据
Have data being returned in an attribute
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
变量中 return 很多不同的城市名称如下。我似乎无法做的是 return $popshare
或 $Countryname
变量作为属性。所以我希望格式看起来像:
<city popshare="20" country="Spain">Madrid</city>
我现在得到的是:
<city>Madrid</city>
我试过类似的方法:
<city country= $Countryname >
但是语法不允许。
您真的应该复习一下 XML 和 XQuery 基础知识。在 XML 中,所有属性都必须用引号括起来,并且要在 XQuery 中计算属性值中的表达式,您需要花括号(否则它将输出引号中的文字值)。
<city country="{ $Countryname }" />
在 XSLT 中,这称为属性值模板。我不认为 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
变量中 return 很多不同的城市名称如下。我似乎无法做的是 return $popshare
或 $Countryname
变量作为属性。所以我希望格式看起来像:
<city popshare="20" country="Spain">Madrid</city>
我现在得到的是:
<city>Madrid</city>
我试过类似的方法:
<city country= $Countryname >
但是语法不允许。
您真的应该复习一下 XML 和 XQuery 基础知识。在 XML 中,所有属性都必须用引号括起来,并且要在 XQuery 中计算属性值中的表达式,您需要花括号(否则它将输出引号中的文字值)。
<city country="{ $Countryname }" />
在 XSLT 中,这称为属性值模板。我不认为 XQuery 称它为同一事物,但概念基本相同: