2011-01-10 4 views
1

XMLファイルのコレクションを管理するアプリケーションがあり、XPathを使用してクエリを実行できるため、ユーザーはXPathクエリと一致するコレクションのサブセットを表示できます。XQueryをXPathに制限する

さまざまな技術的な理由から、私はXQueryエンジンに切り替えています。私は、XQueryはXPathのスーパーセットであることを理解しています。しかし、私は完全なXQuery機能を望んでいません。ユーザーがそれを使用して自分のDTDと一致しない新しいXMLオブジェクトを構築し、SVGベースのビューアで表示できないからです。

クエリ文字列をXPathとして簡単に検証し、XQueryエンジンに渡すことは簡単ですか?あるいは簡単な方法でそれらを変換できますか?

(私はC++を使用してXQillaに切り替えています。)

+1

これは奇妙な条件です。おそらく、ノードコンストラクタ(XQuery)とスカラーアイテム構築(XPath 2.0)を禁止する場合は、代わりにXPath 1.0エンジンを使用する必要があります。それ以外の場合は、式を解析し、そのような構造を持つものを禁止する必要があります。他の解決策は、ソース文書に属するノードインスタンスの結果の式をフィルタリングすることです。 –

+0

@Alejandro:XQueryからの移行は、新しいストレージエンジンであるBerkeley DB XMLで最適化されているためです。しかし、私たちのユーザーはXPathを期待しています。そして、クライアント/サーバーアーキテクチャを決定すると、表現力が増します(XQueryはTuringの完全性を理解しています)。 –

+0

完全にXSLT 2.0で書かれた私のXPath 2.0パーサを使うことができます。 –

答えて

1

XQillaはXPath 2.0パーサを持っていましたので、今使っています。

+0

あなたはこれを最後に見つけてうれしいです! :-) –

1

お使いの環境で動作するXPath 2.0のパーサーを見つけることができない場合は、XQueryXにクエリを変換し、それに対してクエリを実行することを検討する可能性が望ましくない機能を使用していないことを確認してください。

+0

私はXPath 2.0パーサを持っています。問題は、XPath 2.0とXQueryを区別していないように見えることです。 XQueryXはもっと複雑なように聞こえる... –

+0

+1ケイ先生、これは素晴らしい答えです。 @larsmans [ここ](http://www.w3.org/2005/qt-applets/xqueryApplet.html)XQueryからXQueryXへの翻訳のためのW3Cアプレットがあります。 –

+0

+1良い提案ですが、最後にXPath 2.0パーサー。 –

関連する問題