<query1><abc>76</abc><abc>20</abc><abc>30</abc></query1>
我在执行xquery后获得此输出。我需要的是我想要计算数字-76 + 20 + 30。我希望总和作为输出。但它给了我上面的输出线作为输出。
我只是使用了“for”表达式然后返回结果。我如何得到结果。 我尝试在返回中使用sum {$ e},但它仍然会产生相同的输出。我需要这些数字的总和。
for $r in (doc("yahoo.xml")/vid/number)
return
<abc>{$r}</abc>
我得到了上面的输出。我应该得到它的全部。
答案 0 :(得分:0)
使用此输入(格式正确)
<query1>
<abc>76</abc>
<abc>20</abc>
<abc>30</abc>
</query1>
即使这个XPath 1.0也能正常工作。
sum(/query1/abc)
你得到了你想要的东西:为每个number
元素(作为$ r)返回一个abc
元素,其中$ r作为孩子。实际上你的输出应该是这样的:
<abc><number>76</number></abc>
<abc><number>20</number></abc>
<abc><number>30</number></abc>
您应该使用:
element abc {sum(doc("yahoo.xml")/vid/number)}
答案 1 :(得分:0)
很难从问题中分辨出来,所以我会猜测你的XML输入是什么样的,以及你想要输出的是什么。
XML输入
<?xml version="1.0" encoding="UTF-8"?>
<vid>
<number>76</number>
<number>20</number>
<number>30</number>
</vid>
<强>的XQuery 强>
for $r in (doc("yahoo.xml")/vid)
let $total := sum($r/number)
return
<query1>
<abc>{$total}</abc>
</query1>
<强>输出强>
<?xml version="1.0" encoding="UTF-8"?>
<query1>
<abc>126</abc>
</query1>
答案 2 :(得分:0)
这很简单。使用:
<abc>{sum(doc("yahoo.xml")/vid/number)}</abc>
答案 3 :(得分:0)
如果我按如下方式考虑xml,我们需要获取节点并添加它。
let $query := <query1>
<abc>76</abc>
<abc>20</abc>
<abc>30</abc>
</query1>
let $sum := for $r in ($query)
let $total := sum($r/node())
return <query1>
<abc>{$total}</abc>
</query1>
return $sum