1

xquery式で、for-expression内の値のセットを取得し、1つの値が別の変数にあります。

ここで、リストの最初の値から単一の値を減算してから、リストの連続するメンバーを相互に減算します。結果として得られる差分値のセットで、最小/最大値を取得します。

これまでのクエリは次のようになります--

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を介して)

4

1 に答える 1

2

I.このXQuery3.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

II。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
于 2012-10-17T18:30:40.227 に答える