Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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
Xpath 以累积格式添加值的步骤_Xpath_Xquery_Marklogic - Fatal编程技术网

Xpath 以累积格式添加值的步骤

Xpath 以累积格式添加值的步骤,xpath,xquery,marklogic,Xpath,Xquery,Marklogic,我的xml结构如下所示: <bookstore> <book> <name>story</name> <price>50.00</price> <author>smith</smith> </book> <book> <name>history</name> <price>150.00<

我的xml结构如下所示:

<bookstore>
  <book>
    <name>story</name>
    <price>50.00</price>
    <author>smith</smith>
  </book>
  <book>
    <name>history</name>
    <price>150.00</price>
    <author>kelly</smith>
  </book>
  <book>
    <name>epic</name>
    <price>300.00</price>
    <author>jones</smith>
  </book>
</bookstore>

故事
50
史密斯
历史
150
凯利
史诗
300
琼斯
在上面的示例中,我想添加如下价格:

<bookstore>
  <book>
    <name>story</name>
    <price>50.00</price>
    <author>smith</smith>
  </book>
  <book>
    <name>history</name>
    <price>150.00</price>
    <author>kelly</smith>
  </book>
  <book>
    <name>epic</name>
    <price>300.00</price>
    <author>jones</smith>
  </book>
</bookstore>
第一本书的价格应按原样退回。 第二册价格应与第一册价格50.00+150=200.00相加 第三册价格应与第一册和第二册价格50.00+150.00+300.00=500.00相加

&返回price的值,如下所示

<pricelist>
  <price>50.00</price>
  <price>200.00</price>
  <price>500.00</price>
</pricelist>

50
200
500
有人能帮我吗


谢谢。

有两种方法可以解决您的问题。一种方法是总结前面的所有同级书籍,这些书籍易于阅读和编码,但具有
O(n^2)
复杂性,因此不能很好地扩展到大型输入,但对于较小的集合则可以(复杂性可能更差,取决于您的XQuery处理器如何解析前面的同级)


有两种方法可以解决你的问题。一种方法是总结前面的所有同级书籍,这些书籍易于阅读和编码,但具有
O(n^2)
复杂性,因此不能很好地扩展到大型输入,但对于较小的集合则可以(复杂性可能更差,取决于您的XQuery处理器如何解析前面的同级)


有两种方法可以解决你的问题。一种方法是总结前面的所有同级书籍,这些书籍易于阅读和编码,但具有
O(n^2)
复杂性,因此不能很好地扩展到大型输入,但对于较小的集合则可以(复杂性可能更差,取决于您的XQuery处理器如何解析前面的同级)


有两种方法可以解决你的问题。一种方法是总结前面的所有同级书籍,这些书籍易于阅读和编码,但具有
O(n^2)
复杂性,因此不能很好地扩展到大型输入,但对于较小的集合则可以(复杂性可能更差,取决于您的XQuery处理器如何解析前面的同级)


XSLT样式表可以解决您的问题XSLT样式表可以解决您的问题XSLT样式表可以解决您的问题XSLT样式表可以解决您的问题谢谢我在本场景中应用了这两个和前面的兄弟姐妹很好谢谢我在本场景中应用了这两个和前面的兄弟姐妹很好谢谢我在本场景中应用了这两个和前面的兄弟姐妹很好在这个场景中,我在这个场景中同时应用了和前面的兄弟姐妹
declare function local:sum($books, $sum) {
  if ($books) then
    let $price := $sum + $books[1]/price
    return
      (
        <price>{ $price }</price>,
        local:sum($books[position() > 1], $price)
      )
     else
       ()
};

local:sum(/bookstore/book, 0)