2015-03-27 3 views
0
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

Вы действительно должны освежить основы XML и XQuery. В XML все атрибуты должны быть в кавычках, а для оценки выражения в значении атрибута в XQuery вам нужны фигурные скобки (в противном случае он выдаст буквальное значение в кавычках).

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

В XSLT это называется шаблоном значения атрибута. Я не думаю, что XQuery называет это то же самое, но концепция в основном идентична:

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

+0

ахам нормально я только начал XQUERY пару дней назад. Застрял на этой проблеме в течение долгого времени. Тем не менее, я буду освещать XQuery. Большое спасибо ! –

+0

@Super_Soet Если этот ответ работает на вас, пожалуйста, примите его, щелкнув маленький флажок слева. – wst

Смежные вопросы