あけましておめでとうございます!
BaseXでXQuery を学習していて、現在次の問題に直面しています。
ディストリビューションの一部であるfactbook.xmlファイルを解析しています。
次のクエリは正常に実行されます。
for $country in db:open('factbook')//country
where $country/@population < 1000000 and $country/@population > 500000
return <country name="{$country/name}" population="{$country/@population}">
{
for $city in $country/city
let $pop := number($city/population)
order by $pop descending
return <city population="{$city/population/text()}"> {$city/name/text()}
</city>
}
</country>
"{$country/@population}"
しかし、2 番目のクエリを実行する html を生成しようとしているときに、タグにを入れようとすると、<h2>Country population: </h2>
「属性はルート要素に従う必要があります」というエラー メッセージが表示されます。
<html><head><title>Some Countries</title></head><body>
{
for $country in db:open('factbook')//country
let $pop_c := $country/@population
where $pop_c < 1000000 and $pop_c > 500000
return
<p>
<h1>Country: {$country/name/text()}</h1>
<h2>Country population: #error comes if I put it here!#</h2>
{
for $city in $country/city
let $pop := number($city/population)
order by $pop descending
return ( <h3>City: {$city/name/text()}</h3>,
<p>City population: {$city/population/text()}</p>
)
}
</p>
}
</body></html>
私の間違いはどこですか?ありがとうございました!