繁体   English   中英

Xquery嵌套层次结构

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM