2

Xqueryの変数に数値演算子を割り当てる方法はありますか?

ノードタグに応じて、特定の値のペアに対して算術式を実行する必要があります。

私はなんとかこれを行うことができましたが、その結果、多くの重複コードが発生しました。クエリを単純化して、次の代わりに使用したいと思います。

追加のための関数

コードの場合は繰り返されます-これは他の関数を呼び出しますが、それでも繰り返されます

$ value1 + $ value2

マイナスの関数

コードの場合は繰り返されます

$ value1-$ value2

乗算、除算など

関数を設定して、それに変数を送信したいと思います。これは次のようなものです。

$ value1 $ operator $ value2

xqueryでこれを行う簡単な方法はありますか?

ご協力ありがとうございました。

4

2 に答える 2

1

クエリプロセッサがXQuery3.0をサポートしている場合は、そのための関数アイテムを使用できます。

declare function local:foo($operator, $x, $y) {
  let $result := $operator($x, $y)
  return 2 * $result
};

local:foo(...)次に、次のように呼び出すことができます。

let $plus := function($a, $b) { $a + $b },
    $mult := function($a, $b) { $a * $b }
return (
  local:foo($plus, 1, 2),
  local:foo($mult, 3, 4)
)
于 2012-10-23T18:28:22.913 に答える
0

単純なif-else構文を使用してみませんか?例えば

if (repeated code says you should add) then
  $value1 + $value2
else
  $value1 - $value2

コードをコピーする代わりに、繰り返されるコードを別の関数に簡単に配置することもできます。

于 2012-10-23T17:35:13.260 に答える