为什么XML文件的值在XQuery中显示为属性?
我对我为uni项目编写的XQuery代码有疑问。代码如下:为什么XML文件的值在XQuery中显示为属性?,xml,xquery,Xml,Xquery,我对我为uni项目编写的XQuery代码有疑问。代码如下: <results> { for $item in doc("data.xml")//item return <country alpha-2="{$item/city/country}"> <name> {doc("countries.xml")//country[@alpha-2=$item/ci
<results>
{
for $item in doc("data.xml")//item
return
<country alpha-2="{$item/city/country}">
<name> {doc("countries.xml")//country[@alpha-2=$item/city/country]/@name} </name>
<cities>
<city>
<name> {$item/city/@name} </name>
<temp unit="{$item/temperature/@unit}"> {$item/temperature/@value} </temp>
<feels_like unit="{$item/feels_like/@unit}"> {$item/feels_like/@value} </feels_like>
<humidity unit="{$item/humidity/@unit}"> {$item/humidity/@value} </humidity>
<pressure unit="{$item/pressure/@unit}"> {$item/pressure/@value} </pressure>
<clouds> {$item/clouds/@name} </clouds>
</city>
</cities>
</country>
}
</results>
{
对于文档中的$item(“data.xml”)//item
返回
{doc(“countries.xml”)//country[@alpha-2=$item/city/country]/@name}
{$item/city/@name}
{$item/temperature/@value}
{$item/feels_like/@value}
{$item/湿度/@value}
{$item/pressure/@value}
{$item/clouds/@name}
}
这看起来很简单,但当我编译它时,新节点的值显示为属性,如以下代码所示:
<?xml version="1.0" encoding="UTF-8"?>
<results>
<country alpha-2="LV">
<name name="Latvia"/>
<cities>
<city>
<name name="Zilupe"/>
<temp unit="kelvin" value="281.15"/>
<feels_like unit="kelvin" value="277.59"/>
<humidity unit="%" value="86"/>
<pressure unit="hPa" value="1023"/>
<clouds name="overcast clouds"/>
</city>
</cities>
</country>
<country alpha-2="RU">
<name name="Russian Federation"/>
<cities>
<city>
<name name="Sebezh"/>
<temp unit="kelvin" value="280.82"/>
<feels_like unit="kelvin" value="277.37"/>
<humidity unit="%" value="90"/>
<pressure unit="hPa" value="1023"/>
<clouds name="overcast clouds"/>
</city>
</cities>
</country>
</results>
有人知道为什么会这样吗?我可能遗漏了一些明显的东西,但我看不到。因为您正在提取xpath中的一个属性,所以这就是您在元素中放置的内容。您需要用xs:string()包围xpath
{doc(“countries.xml”)//country[@alpha-2=$item/city/country]/@name}
应该是
<name> {xs:string(doc("countries.xml")//country[@alpha-2=$item/city/country]/@name)} </name>
{xs:string(doc(“countries.xml”)//country[@alpha-2=$item/city/country]/@name)}
请编辑您的帖子并添加所需输出。
<name> {xs:string(doc("countries.xml")//country[@alpha-2=$item/city/country]/@name)} </name>