2012-10-17 1 views
1

xquery 표현식에서 for 표현식 내에서 값 집합을 얻었습니다. 별도의 변수.xquery- 목록에서 연속 구성원을 뺀 값 집합에서 최소/최대 값을 얻는 방법

이제 목록의 첫 번째 값에서 단일 값을 뺀 다음 서로의 목록에서 연속 멤버를 뺍니다. 결과 값 집합에서 최소/최대 값을 얻고 싶습니다. 값은 ... 지금 개까지

쿼리는이 항아리

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의 연속 구성원 간의 그 이후 ... 결과 목록에서 최소/최대 값을 원합니다 ... 어떻게 이것을 수행할까요?

특히 그렇습니다. 모든 차이점을 저장하는 새로운 list 변수를 생성하는 것에 대해 혼란스러워합니다. 우리는 for 루프 내부에 이미, 그리고 (가변 date2_c를 통해) 목록의 각 값보다

답변

2

I. (또한 순수의 XPath 3.0 표현이다)이 XQuery를 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 

,369 :

은 뺄셈의 목록에서 최소값과 최대 값 원하는 결과를 생성

II. XQuery를 1.0 용액 :

1 5 
:

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)) 

이 다시 같은 올바른 결과를 생성

관련 문제