2012-10-17 32 views
1

在xquery表达式中,我已经获得了for-expression内的一组值,并且一个值是in一个单独的变量。xquery-如何从通过从列表中减去连续成员获得的一组值中获得最小/最大值

现在,我想从列表的第一个值中减去单个值,然后从列表中减去列表的连续成员 - 并且在得到的差异值集合中,我想要获得最小/最大值值...

高达现在的查询看起来像this--

let $value1:= 1998 
let $rows_citations:= 
     $doc//div[@id="patent_citations"] 
        /div[@id="patent_citations_v"] 
          /table[@class="rel_patent"] 
          /tbody/tr[1] 
             /following-sibling::tr 
for $pos in $rows_citations/position() 
let $date2_c := customfn:dateconverter1($rows_citations[$pos]/td[3]) 

现在我想减法是date2_c第一使用价值和价值1之间,之后的连续date2_c成员之间...从结果列表中我想要最小/最大值...我该如何去做这件事?

我很喜欢。困惑于创建一个新的列表变量来存储所有的差异,尤其是。当我们已经内部的for循环,并且迭代一个列表中的每个值(通过可变date2_c)

回答

2

I.此的XQuery 3.0查询(其也是纯的XPath表达式3.0)

let $pVal := 1, 
    $vList := (2,4,7,11,16), 
    $vList2 := ($pVal, subsequence($vList, 1, count($vList)-1)), 
    $vSubtactedList := 
      map-pairs(function($m as xs:integer, $n as xs:integer) as xs:integer 
         { 
         $m - $n 
         }, 
         $vList, 
         $vList2 
        ) 
    return 
     (min($vSubtactedList), max($vSubtactedList)) 

产生想要的结果,从减法列表中的最小值和最大值:

1 5 

二,的XQuery 1.0溶液

let $pVal := 1, 
    $vList := (2,4,7,11,16), 
    $vList2 := ($pVal, subsequence($vList, 1, count($vList)-1)), 
    $vSubtactedList := 
       for $i in 1 to count($vList) 
       return 
        $vList[$i] - $vList2[$i] 

return 
    (min($vSubtactedList), max($vSubtactedList)) 

这再次产生相同的正确的结果

1 5 
相关问题