web-dev-qa-db-ja.com

XPath、XQuery、XPointerの違い

XPathXQuery、およびXPointerの違いは何ですか?私の知る限り、XQueryXPathの拡張バージョンです。 XPathの基本的な知識があります。 XPathにはないXQueryで利用できる機能はありますか?昨日、XPointerという新しい言葉を聞きました。私は混乱しています。どの言語がどの目的に使用されていますか?

62
Shashi

ウィキペディアは、このような質問を始めるのに適した場所です。通常、 XPath は、DOM内の正確なXMLノードを簡潔に特定するために使用される言語です。 XQuery は、SQLに似た [〜#〜] flwor [〜#〜] 構文も提供するXPathのスーパーセットです。最後に、 XPointer にはXPathが含まれますが、より単純な位置ベースのアドレス指定スキームも提供します。

もちろん、詳細については、W3Cの仕様をいつでも読むことができます。

59

Matthewの回答は良い第一印象を与えますが、言及された標準についてはもっと多くのことを伝え、関連するものはもっとたくさんあります。 XML Hollandユーザーグループマガジンには、XQueryの歴史について多くのことが書かれており、これらの標準のさまざまな観点が取り入れられた、素敵な記事があります。最初の部分はここで非常に重要です:

XQueryXMLクエリ言語 を表します。それはすでに本質を伝えています。これは、XMLファイルの大きなセットからサブセットとサブ構造を選択するための言語です。結果は、たとえば後続のプロセスで使用したり、Webブラウザーで表示したりするのに適したものに操作できます。 XPath はXQueryで多く使用されます。

すべてのXML標準には独自のスコープがあります。いくつか名前を付けます。 [〜#〜] xslt [〜#〜] は、XMLを他の形式に変換するための言語です。 XPointer は、XMLフラグメント内またはノードのサブパート内のノードをより正確にアドレス指定するためのXPathの拡張機能です。 XLink は、関係を定義するための標準です。 XInclude は、たとえばXLink関係を使用して、複数のXMLを1つに構成する標準です。そして、 XProc は、目的の最終結果を得るためにXML文書を処理する方法を説明できる標準です。 XMLで表現され、XMLパイプラインとも呼ばれるプロセスを段階的に説明します。 XProc内でa.oを使用します。 XQuery、XSLT、およびXInclude言語(および間接的にXPath、XPointer、およびXLink)も、各ステップ内で正確に実行する必要があることを表現します。

これらの標準はすべて結び付けられています。それらは関連しており、互いに依存しています。言及されたいくつかのXML標準間のオーバーラップは、次の画像でも非常によく要約されています W3Schools

What is XPath

完全な記事はこちらにあります: http://grtjn.blogspot.nl/2011/10/xquery-novelties-revisited.html

HTH!

53
grtjn

さて、XQueryは際立った価値があると思います。 XPathとXPointerはほぼ同じであり、XMLノードの選択に使用されます。一方、XQueryはXPathの非常に大きな拡張機能です。たとえば、カスタム関数を宣言する可能性があります。つまり、プログラミング言語のようなもので、XMLをネイティブに使用します。ここでいくつかのサンプルを確認できます: embedding-xquery-in-Java

よろしく

17
Rafal Rusin

XPathは、既存のノードの読み取りに意図的に制限されています。

XSLTとして、XQueryはノードを作成できます。また、ノードを更新できます(XQuery Update Facilityを使用)。

私のXQuery実装者の観点から;-)

5
Alain Couthures