2012-05-05 17 views
0

xqueryファイル(.xq)のリンクを変数にすることはできますか?Xquery:リンクを変数に変換する

たとえば、私は次のリンクを持っています。これをfor-containsコードで使用できるように変数に変換する必要があります。

{ for $x in doc("myfile.xml")/portion/food 
    return <li><a href="#link"></a>{data($x)}</li>}</ul> 

{ for $y in doc("myfile.xml")/portion[contains(., <THIS IS WHERE THE LINK VARIABLE SHOULD GO>)] 

私は、変数を設定するために知っているが、次のようであるが、それは

declare variable $hello := ("Hello World"); 

答えて

0

を動作させるために一緒に2を入れてすることができたhaventはあなたの質問は別々に処理されなければならない異なる点を兼ね備えています。私が正しく理解している場合は、クエリ結果をWebブラウザに表示し、結果ページのDOMを操作したい場合は、ユーザー操作時にを作成した後にを作成します。最初の部分(ブラウザで表示)isn't the problem、私は思う。

ブラウザは単純なテキストエディタと同じようにファイルにシリアライズされたクエリ結果を表示するだけなので、ブラウザとXQueryエンジンの間には基本的に「連絡先」や「通信」はありませんユーザーの操作を評価します。だから、あなたの質問は基本的にカスタムパラメータに基づいてXQueryを再評価する方法を作る方法を尋ねます。

eXist-dbのドキュメントには、ユーザー入力をサーバー側で評価し、それぞれの推測でページの内容を変更することが必要な面白い単純な例、number-guessing gameがあります。これは、eXist-dbsのセッション処理とXQuery Servlet機能を使用して、XQueryで完全に実装されています。

数字の推測の例を必要に応じて適応させるのは簡単です。推測数を追跡する必要もないので、サーバー上にセッションを作成する必要はありません。選択されたアイテムのidをリクエストとともに送信するだけで十分です(この例では、推測された数値を使用してプレーンHTMLフォームを使用しています)。XQuery関数を使用してそのリクエストプロパティを評価してください。この例では、local:guess関数がこのタスクを担当し、適切なHTML出力も作成します。

このような解決策は、XQueryエンジンの機能によって異なります。 Javascriptを使って "スタンドアロン"のソリューションが可能かもしれませんが、それは疑問の対象外です。

+0

私はプログラミングに慣れていませんし、私が知ることができたことから、私はこれを行うためにeXistを使用する必要があります。 –

+0

ありがとう。私はプログラミングに慣れていないので、セッションを作成するためにeXistを使用する必要があります(残念ながら、ファイルを他の誰かに見せなければならないので、eXistを使用することはできません)。 Javascriptは選択肢かもしれないが、私はそれに精通していない。テスト目的でSaxonでJavascriptを使用できますか? Javascriptを使用している場合は、イベントハンドラやページセッションなどを使用することをお勧めしますか? –

+0

結果ページのレイアウトに応じて、Javascriptがイベントで「起動」します。 XQuery Wikibookは[Javascriptベースの検索の例](http://en.wikibooks.org/wiki/XQuery/Employee_Search)を持っています。ここでは、XQueryを使用してサーバー側で要求を処理します。したがって、このソリューションにはサーバー側コンポーネントも必要です。 **スタンドアロンソリューション**(「[単一ページアプリケーション](http://en.wikipedia.org/wiki/Single-page_application)」)では、結果ページに初期データを含める必要がありますが、例えばJSONを使用します。しかし、私はこの問題について新しい質問を定式化する方が良いと思う。 – tohuwawohu

関連する問題