URLからパラメーターを取得し、検索パラメーターを構築することにより、xqueryでexist-dbを照会しようとしています
xquery version "1.0";
declare namespace request="http://exist-db.org/xquery/request";
declare namespace xs="http://www.w3.org/2001/XMLSchema";
declare option exist:serialize "method=xml media-type=text/xml omit-xml-declaration=no indent=yes";
let $param1:= request:get-parameter("param1",'0')
let $person :=
if($param1 = '0')
then "'*'"
else concat('contributions/person/@val="',$param1,'"')
return
<xml>
{
for $x in subsequence(//foo/bar[$person],1,3)
return $x
}
</xml>
上記のコードは、URL $param1 からパラメーターを取得することを示しています。
変数 $person は、パラメーターが存在するかどうかを確認し、それに基づいてクエリ パラメーターを作成します。この変数は問題なく動作します。テストから、パラメータがない場合は「*」または
contributions/person/@val='hello, world'
クエリを実行すると、値が「*」であるかのように出力されます。for $x の部分で、そのような変数を渡すことはできますか? 同じ結果で concat($person,'') を入れてみました。フルパスをハードコーディングすると、探している結果が得られますが、より動的なものを作成したいと考えています。
注: 変数は $person の 1 つだけですが、動作させると他の変数も存在します。