我有以下XML文件:
<animals>
<animal id="1" weight="56">Flipper</animal>
<animal id="2" weight="230">Dumbo</animal>
...
</animals>
我只想保持重量(所以它返回“56 230 ......”)。我试过这个请求:
//animal[@weight]
但我仍然可以获得整个XML内容......我也尝试过:
//animal/@weight
由此我得到了这个错误:
错误SENR0001:属性'weight'没有父元素
小费是什么?
答案 0 :(得分:3)
看起来您的XQuery引擎希望返回一个或多个XML文档;由于属性节点不能出现在XML文档的根目录上,因此不满意。
您可以尝试(1)编写查询以返回属性节点而不返回其值:
for $w in //animal/@weight
return string($w)
如果你的引擎真的只想要返回XML文档,那么(1)也不会让它开心。因此,您可以尝试(2)返回一系列XML元素:
for $w in //animal/@weight
return <weight>{$w}</weight>
如果这不能使你满意,你可以(3)将你想要的字符串包装在XML包装器中:
<weights>
{ for $w in //animal/@weight return string($w) }
</weights>
如果你想在一个单独的行上,(4)
<weights> {
"
",
for $w in //animal/@weight
return (string($w), "
")
} </weights>