1

我有一个这样的 XML 文件:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet href="class3.xsl" type="text/xsl" ?>
<school>
<student><name>Jack T</name>
<course title="INF8430" note="78" />
<course title="INF1030" note="69" />
<course title="INF1230" note="85" /></student>
<student><name>Marty L</name>
<course title="INF8430" note="95" />
<course title="INF1030" note="82" />
<course title="INF1230" note="77" /></student>
<student><name>Ben L</name>
<course title="INF9430" note="59" />
<course title="INF1030" note="78" />
<course title="INF1230" note="79" /></student>
</school>

在我的 XQuery 中,我使用这个:

{  
for $s in distinct-values(doc("class3.xml")//course/@title)
return  
<course title="{$s}">

</course>

}

我尝试从每个不同的标题中获得平均值。我得到了正确的标题,但是我如何计算平均值?我在课程标签之间尝试了很多东西来找到平均值,有人可以帮我谢谢

4

2 回答 2

3

在您的退货声明中添加:

avg(doc("class3.xml")//course[@title=$s]/@note) 
于 2013-11-05T15:09:20.583 回答
1

我敢肯定有更好的方法......不确定这是你想要的,但它会帮助你到达那里我希望:)

let $doc := 
 <school>
 <student><name>Jack T</name>
 <course title="INF8430" note="78" />
 <course title="INF1030" note="69" />
 <course title="INF1230" note="85" /></student>
 <student><name>Marty L</name>
 <course title="INF8430" note="95" />
 <course title="INF1030" note="82" />
 <course title="INF1230" note="77" /></student>
 <student><name>Ben L</name>
 <course title="INF9430" note="59" />
 <course title="INF1030" note="78" />
 <course title="INF1230" note="79" /></student>
 </school>

return 
    for $s in $doc//student
    let $total := sum($s/course/@note) div count($s/course)
    return <name>{$s/name}<avg>{$total}</avg></name>
于 2013-11-04T21:08:34.213 回答