2011-10-29 19 views
0

私のプロジェクトではXQueryを使用し、JAXではSAXON9を使用してXQueryを実行しています。XQueryを使用したXMLノード値の更新

ここで問題は、ノード値を更新しようとすると、例外が発生することです。 XQueryを使用してxmlファイルからデータを選択する際に問題はありません。面倒な問題はxqueryによるデータ変更だけです。

これは私のクエリです: DOCに$ fnameのために(ノードの値を置き換えます( "D:/contacts.xml")/ディレクトリ/連絡先/連絡先[@ ID = '0045d6cd-2c79-4a8d-879b-e8b0b9bfd16e ']/LastNameは$ fnameを返します) は' foo 'です。

例外: javax.xml.xquery.XQException:パス式の予期しないトークン "replace value"。

上記のクエリを正常に実行するために、SAXON9の設定を行う必要がある人はいますか?

「xqueryで更新」の設定があると聞きました。 SAXONでどうすればいいですか?

答えて

0

EEバージョンを使用していない場合、AFAIKは運が悪いです。

Javaからの更新を有効にするには、XQueryCompiler.setUpdatingEnabled() methodを使用してください。

コマンドラインからupdate:onスイッチを使用してください。

+0

ご返信ありがとうございます。私はあなたの提案としてやったが、まだ同じ問題を抱えている。 JAVAのSAXON9eeを使用して更新クエリを実行する方法を示すコードを送信できますか? – sunilkumar

+0

ここに私のコードは何か間違っていますか? XsDataSource ds =新しいSaxonXQDataSource(); XQConnection conn = ds.getConnection(); XQExpression expr = conn.createExpression(); 文字列クエリ= "ノードの値を置き換え...."; IndependentContextコンテキスト=新しいIndependentContext(); XPathEvaluator xPathEvaluator = new XPathEvaluator(); xPathEvaluator.setStaticContext(context); 設定conf = xPathEvaluator.getConfiguration(); プロセッサプロセス=新しいプロセッサ(conf); XQueryCompilerコンパイラ= process.newXQueryCompiler(); compiler.setUpdatingEnabled(true); XQResultSequence result = expr.executeQuery(クエリ); – sunilkumar

+0

本当にそれを読むことはできませんが、 'setUpdatingEnabled'を呼び出しているので、その部分が正しいです。あなたはEEバージョンを使用していますか? –

0

オープンソースのXQuery Updateの実装(BaseX、MonetDB、Sedna)で成功するかもしれません。

関連する問題