Xml XQuery中序列的乘积
我试图用下面的代码在XQuery中获得序列的乘积Xml XQuery中序列的乘积,xml,xquery,Xml,Xquery,我试图用下面的代码在XQuery中获得序列的乘积 let $productNenner := 1 let $productNenner := sum(for$x in doc("bruch.xml")/product/fraction return data($x/numerator) * $productNenner) return $productNenner 嗯,它不起作用。我想这是因为变量在xquery中是不可变的。。 但是我怎样才能得到产品呢? 我的XML代码看起来像 <pro
let $productNenner := 1
let $productNenner := sum(for$x in doc("bruch.xml")/product/fraction
return data($x/numerator) * $productNenner)
return $productNenner
嗯,它不起作用。我想这是因为变量在xquery中是不可变的。。
但是我怎样才能得到产品呢?
我的XML代码看起来像
<product>
<fraction>
<numerator>1</numerator>
<denominator>2</denominator>
</fraction>
<fraction>
<numerator>3</numerator>
<denominator>4</denominator>
</fraction>
<fraction>
<numerator>5</numerator>
<denominator>6</denominator>
</fraction>
</product>
1.
2.
3.
4.
5.
6.
我将构建不同分数的乘积,比如1/2*3/4*5/6。希望有人能帮助我。谢谢:)似乎是
左折的工作
():
或者自己实施:
declare function local:fold-product(
$seq as item()*,
$zero as item()*)
as item()* {
if (fn:empty($seq))
then $zero
else local:fold-product(tail($seq), head($seq)/numerator div head($seq)/denominator * $zero)
};
local:fold-product(/product/fraction, 1)
谢谢你的建议,我就这样试试
declare function local:fold-product(
$seq as item()*,
$zero as item()*)
as item()* {
if (fn:empty($seq))
then $zero
else local:fold-product(tail($seq), head($seq)/numerator div head($seq)/denominator * $zero)
};
local:fold-product(/product/fraction, 1)