Xml XQuery/eXist:获取特定属性的列表?

Xml XQuery/eXist:获取特定属性的列表?,xml,xquery,Xml,Xquery,我有以下XML文件: <animals> <animal id="1" weight="56">Flipper</animal> <animal id="2" weight="230">Dumbo</animal> ... </animals> 但我仍然得到了整个XML内容。。。我还尝试: //animal/@weight 由此我得到了这个错误: 错误SENR0001:属性“权重”没有父元素 提示是什么

我有以下XML文件:

<animals>
   <animal id="1" weight="56">Flipper</animal>
   <animal id="2" weight="230">Dumbo</animal>
   ...
</animals>
但我仍然得到了整个XML内容。。。我还尝试:

//animal/@weight
由此我得到了这个错误:

错误SENR0001:属性“权重”没有父元素


提示是什么?

您的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>
价格为$w in//animal/@weight
返回{$w}
如果这不能让您满意,您可以(3)将所需字符串包装到XML包装器中:

<weights>
{ for $w in //animal/@weight return string($w) }
</weights>

{对于//动物/@重量返回字符串中的$w($w)}
如果你想让每一个都在一条单独的线上,(4)

{
“
;”,
每只/动物/体重$w
返回(字符串($w),“
;”)
} 
//animal/@weight/string()
应该在没有显式for循环的情况下完成这项任务。
<weights>
{ for $w in //animal/@weight return string($w) }
</weights>
<weights> { 
  "&#xA;", 
  for $w in //animal/@weight 
  return (string($w), "&#xA;")
} </weights>