Xquery 1.0 - 对具有子元素的元素进行平均

Xquery 1.0 - average over elements with subelements

所以我有一个 XML 文件,其中包含带有数字的元素,以及一些带有数字的子元素。类似于:

<data>
    <points>
        <score>80</score>
        <score>90</score>
        <score>10</score>
        <score>13</score> 
    </points>
    <favor>50</favor>
    <ranked>
        <rank>50</rank>
        <rank>10</rank>
    </ranked>
</data>

我想计算所有这些具有数字(包括子元素)的元素的平均值。所以,我想要一个可以产生的查询:

(80+90+10+13+50+50+10) / 7 = 43.285714286

您可以使用表达式 //*[not(*)] 到 select 叶元素 (没有子元素的元素),在 XML 文件:

let $elements := //*[not(*)]
return sum($elements) div count($elements)

xpathtester demo