[英]Xquery nested hierarchy
我正在尝试查询XML文件
<?xml version="1.0" encoding="UTF-8"?>
<family>
<person salary="1000">
<name>Maria Fischer</name>
<person salary="750">
<name>Helmut Fischer</name>
<person salary="830">
<name>Maria Helbing</name>
<person salary="0">
<name>David Helbing</name>
</person>
</person>
</person>
</person>
</family>
这是人员的层次结构,其中XML文档中的父母/子女关系代表家庭中的父母/子女关系。 我想使用XQUERY查询整个家庭的工资总额。 我知道我必须使用嵌套的FLWOR return和fn:sum。 我试过了
for $p in doc("family.xml")/family
return
for $p in $p/person
return $p
我相信这可以提取XML中的所有节点。 但是我仍然不知道如何提取薪水属性并将其汇总。 我对XQUERY还是很陌生,还没有看到关于stackflow的相关问题。 XQuery嵌套For Loop似乎相关,但我仍然无法弄清楚。 请帮忙!
你们都太复杂了。 很简单
sum(//@salary)
只能使用xpath来完成:
//family/sum(.//person/@salary)
(已在http://xpather.com/WVyWJ27N上测试)
使用FLWR,您可以(已经建议过)非常类似地进行操作: http : //xpather.com/lUYxzXfC
使用使用child::
-axis来使树下降的选择器的嵌套FLWR表达式永远不会处理数据中的任意递归。 除非您的family
元素具有固定或最大深度,否则您不希望嵌套FLWR表达式(至少不是出于这个原因)。
尝试递归函数。 或者只是类似的东西
for $f in doc('family.xml')/family
return sum($f/descendant::person/@salary)
(未经测试)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.