Xml 在Xquery中按顺序乘以所有值
我有一个具有以下结构的xml文档:Xml 在Xquery中按顺序乘以所有值,xml,xpath,xquery,Xml,Xpath,Xquery,我有一个具有以下结构的xml文档: <class> <element>1</element> <element>2</element> <element>3</element> </class> <class> <element>10</element> <element>82</element>
<class>
<element>1</element>
<element>2</element>
<element>3</element>
</class>
<class>
<element>10</element>
<element>82</element>
<element>31</element>
</class>
...
1.
2.
3.
10
82
31
...
我想返回将每个类的所有元素相乘的结果。我试图创建一个计数器,将每个元素乘以返回它的计数器,但我无法让它工作。有人能帮忙吗?您需要声明自己的函数,例如:
declare function local:multiplytail($seq, $i, $res) {
if ($i le 0) then $res
else local:multiplytail($seq, $i - 1, $res*number($seq[$i]))
};
declare function local:multiply($seq) {
local:multiplytail($seq, count($seq), 1)
};
//class/local:multiply(element)
如果您的处理器支持XQuery3.0,那么您还可以使用fn:fold left(…),这比imho更优雅。