Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XQuery中序列的乘积_Xml_Xquery - Fatal编程技术网

Xml 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

我试图用下面的代码在XQuery中获得序列的乘积

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)