2012-10-17 28 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 
相關問題