「XML Path Language」の版間の差分

ナビゲーションに移動 検索に移動
編集の要約なし
[[画像:XPath example.svg|300px|thumb|[[Extensible Markup Language|XML]]文書に XPath の式を適用したイメージ]]
'''XML Path Language''' ('''XPath'''(エックスパス)) は、[[マークアップ言語]] [[Extensible Markup Language|XML]] に準拠した文書の特定の部分を指定する言語構文である。XPath自体は簡潔な構文 (式言語) であり、(XML関係にありがちな<ref>同じ記法のせいで混乱の元になりやすい</ref>)XMLベースのマークアップ言語ではない。[[標準化団体 (コンピュータと通信)|標準化団体]] [[World Wide Web Consortium|W3C]] (World Wide Web Consortium) で開発され、1999年11月16日に XML Path Language (XPath) 1.0 が [[XSL Transformations]] (XSLT) 1.0 と同時に勧告として公表された<ref name="spec">[http://www.w3.org/TR/xpath XPath 1.0 仕様 (英語)] - [[World Wide Web Consortium|W3C]] (World Wide Web Consortium)</ref><ref>W3C の XPath 1.0 作業部会では、[[ジェームズ・クラーク (ソフトウェア技術者)|ジェームズ・クラーク]]とスティーヴン・ディローズが共同でエディタを務めた。また XSLT 1.0 作業部会では、ジェームズ・クラークがエディタを務めた。</ref>。XPathは、XSLT と XSL-FO とともに [[Extensible Stylesheet Language|XSL]] の構成要素である。2007年1月23日、W3C で XPath 1.0 の次期バージョンが制定され、[[#XPath 2.0|XPath 2.0]] が XSLT 2.0 と同時に勧告された。2014年4月8日に XPath 3.0 が勧告された。他に、XPathを拡張したようなものとして [[XQuery]] がある
'''XML Path Language''' ('''XPath'''(エックスパス)) は、[[マークアップ言語]] [[Extensible Markup Language|XML]] に準拠した文書の特定の部分を指定する言語構文である。
XPath自体は簡潔な構文 (式言語) であり、XMLに準拠したマークアップ言語ではない。
[[標準化団体 (コンピュータと通信)|標準化団体]] [[World Wide Web Consortium|W3C]] (World Wide Web Consortium) で開発され、1999年11月16日に XML Path Language (XPath) 1.0 が [[XSL Transformations]] (XSLT) 1.0 と同時に勧告として公表された<ref name="spec">[http://www.w3.org/TR/xpath XPath 1.0 仕様 (英語)] - [[World Wide Web Consortium|W3C]] (World Wide Web Consortium)</ref><ref>W3C の XPath 1.0 作業部会では、[[ジェームズ・クラーク (ソフトウェア技術者)|ジェームズ・クラーク]]とスティーヴン・ディローズが共同でエディタを務めた。
また XSLT 1.0 作業部会では、ジェームズ・クラークがエディタを務めた。</ref>。
XPathは、XSLT と XSL-FO とともに[[スタイルシート]]技術 [[Extensible Stylesheet Language|XSL]] の構成要素と位置づけられている。
2007年1月23日、W3C で XPath 1.0 の次期バージョンが制定され、[[#XPath 2.0|XPath 2.0]] が XSLT 2.0 と同時に勧告された。
また W3C は XPath 2.0 を拡張した技術として [[XQuery]] 1.0 を開発し、2007年1月23日の XPath 2.0 / XSLT 2.0 の勧告と同時に XQuery 1.0 が勧告された。[[2014年]][[4月8日]]に XPath 3.0 が勧告された。
 
XPathは、XML文書中から必要な要素群(サブセット)を取り出す、などといった用途に使うものとして、急速に受け入れられていった。なお、もともとはXPathの開発は、[[Extensible Stylesheet Language|XSL]] ([[XSL Transformations|XSLT]]) と [[XPointer]] に共通する構文と振る舞いのモデルを開発することを目標としていた。
XPath 1.0 が公表されると、XML文書に対する簡単な[[問い合わせ言語]]として、急速にXMLを扱う[[ソフトウェア開発者]] ([[プログラマ]]) たちに受け入れられていった。
もともとはXPathの開発は、[[Extensible Stylesheet Language|XSL]] ([[XSL Transformations|XSLT]]) と [[XPointer]] に共通する構文と振る舞いのモデルを開発することを目標としていた。
実際にXSLTでは、XML文書の特定の部分を指定するパターンを、XPathを基にした構文で指定する。
一般にXSLT処理系の[[実装]]は、XPath処理系の実装を含んでいる。
 
XSLTでは、XML文書内の処理対象などの指定に、XPathを使用する。一般に、XSLT処理系を[[実装]]するには、XPath処理系のライブラリなどを利用してXPathを取り扱う必要がある。
XPath 1.0は2007年に翻訳されJIS X 4160として[[JIS規格]]化されている。
 
日本では[[日本工業規格]](JIS)に、JIS X 4160 として XPath 1.0 の翻訳版がある。
 
== データモデル ==
 
== ロケーションパス ==
XPathで最も一般的な式は、ロケーションパスである。ロケーションパスにより、[[Extensible Markup Language|XML]]文書のあるノード(現在のコンテクストノード)を基準として、別のノードもしくは複数のノード(ノード集合)が指定される(指定されるノードが0個すなわち1個も存在しない場合もある)。
XPathで最も一般的な式は、ロケーションパスである。
ロケーションパスにより、[[Extensible Markup Language|XML]]文書のあるノード(現在のコンテクストノード)を基準として、別のノードもしくは複数のノード(ノード集合)が指定される(指定されるノードが0個すなわち1個も存在しない場合もある)。
 
ロケーションパスは、1つまたは複数のロケーションステップの並びとして記述される。複数のロケーションステップでロケーションパスが記述される場合、各ロケーションステップは<code>/</code>により区切られる。
複数のロケーションステップでロケーションパスが記述される場合、各ロケーションステップは<code>/</code>により区切られる。
 
=== ロケーションステップ ===
XPathの構文は、[[Uniform Resource Identifier|URI]]({{lang|en|Uniform Resource Identifier}})の構文や[[ファイル (コンピュータ)|ファイル]]パスの構文に似せて、設計されている。
 
省略構文では、先の例より複雑な式を記述することもできる。ただし完全な構文と比べると記述能力は制限される。
ただし完全な構文と比べると記述能力は制限される。
* 既定の<code>child</code>軸以外にもいくつかの[[#軸|軸]](<code>attribute</code>軸、<code>descendant-or-self</code>軸、<code>self</code>軸、<code>parent</code>軸)を指定することができる。
* 簡明なノード名による指定以外の[[#ノードテスト|ノードテスト]]を指定することができる。
 
=== 完全な構文 ===
完全な構文の一般式は以下の形となる
 
: <code>/軸方向::名前空間:ノードテスト[述語]/~~</code>
 
先の[[#省略構文]]の節で示した2つの例を、省略しない完全な構文によって書き直すと次のようになる。
: <code>/child::A/child::B/child::C</code>
: <code>child::A/descendant-or-self::node()/child::B/child::*[1]</code>
 
このように完全な構文で記述されたロケーションパスの各ロケーションステップにおいては、
* [[#軸|軸]]を<code>child</code>や<code>descendant-or-self</code>のように明示的に指定する。
 
=== 軸 ===
[[#ロケーションステップ|ロケーションステップ]]の軸の記述は、XML文書の[[木構造 (データ構造)|木構造]]において、方向を指定する。XPath仕様で定義されている13種類の軸([[#完全な構文]])を示す
XPath仕様で定義されている13種類の軸([[#完全な構文]])を示す。
 
; <code>child</code>
== XPath 3.0 ==
{{節スタブ}}
[[2014年]][[4月8日]]に XPath 3.0 が勧告された。[[XQuery]] 3.0 は XPath 3.0 の拡張である。
 
==実装==

案内メニュー