Xqueryコレクション:削除?

I am new to xquery, and I am trying to use a collection to reload my webpage and keep some information. My problem is after I create the collection and save my node using (sausalito) the collection stays alive even afterI close the program. Next time I use the collection it has nodes already in it. I only need the collection to save a node, then reload website and delete node. Problem is that I am not able to delete the collection or the nodes. I tried using delete-nodes() and other methods from http://www.zorba-xquery.com/doc/zorba-1.4.0/zorba/xqdoc/xhtml/www.zorba-xquery.com_modules_xqddf.html#delete-index-1

私が持っているもの

declare collection resultview:collection as node()*;
declare variable $resultview:collection as xs:QName := xs:QName("resultview:collection");
declare sequential function resultview:add($allMovies as element(movies))
{
for $movie in $allMovies
return xqddf:insert-nodes($resultview:collection, $allMovies);
fn:trace(xqddf:collection($resultview:collection), "Collection data: "),
exit returning resultview:list();
};
declare sequential function resultview:deleteList() {
    let $a := ""
    return  xqddf:delete-index($resultview:collection);
    exit returning resultview:list();
};
2
私はあなたの質問を理解しているか分からない。 1回の結果を収集するためにコレクションを使用しているとしますか(たとえばそのリクエストのみ)もしそうなら、代わりにメモリ内シーケンスだけでなく永続的なコレクションを使うのはなぜですか?引数として渡して、十分にうまくいくはずです。
追加された 著者 grtjn,
1つの選択肢は、状態を隠しパラメータとしてWebページに保存し、リロード時にそれらが送信されることを確認することです。別のオプションは、状態をクッキーに保存することですが、ブラウザはそれを拒否することがあります。それらをサーバー側に格納することも良い選択ですが、 'セッション'(ログインしなくても)を区別してください。そうしないと、同時リクエストが混乱する可能性があります。 Sausalitoは、セッションに役立つサンプルコードを提供しています。そのことを見てみる価値があります。
追加された 著者 grtjn,
それが私の最初のアプローチでしたが、それは仕事をしませんでした。 Webページがレンダリングされ、1つのリンクを押すと、リロードされ、すべてが別の順序で設定されます。問題は初めてレンダリングした後、パラメータを保存せずに送信する方法です。初期のパラメータをどこかに保存しておく必要があり、私はこれについて考えました。 (これでもう一度私は新しい)
追加された 著者 Juan,

1 答え

私があなたを正しく理解していれば、これはうまくいくはずです:

declare collection resultview:collection as node()*;
declare variable $resultview:collection as xs:QName := xs:QName("resultview:collection");

declare sequential function resultview:add($allMovies as element(movies))
{
  xqddf:insert-nodes($resultview:collection, $allMovies);
  resultview:list();
};

declare sequential function resultview:deleteList() {
  xqddf:delete-nodes(
    $resultview:collection,
    xqddf:collection($resultview:collection));
  resultview:list();
};

delete-indexの代わりにdelete-nodeを使用します(後者は完全なインデックスを削除し、特定のインデックス位置のノードは削除しません)。

それは役に立ちますか?

2
追加された