「XML Path Language」の版間の差分

m
編集の要約なし
m
m
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 1.0 が公表されると、XML文書に対する簡単な[[問い合わせ言語]]として、急速にXMLを扱う[[ソフトウェア開発者]] ([[プログラマ]]) たちに受け入れられていった。
 
== データモデル ==
 
XPathの[[データモデル]]では、[[Extensible Markup Language|XML]]文書はルートノードを頂点とするノードの[[木構造 (データ構造)|木構造]]であり、以下の7種類のノードから構成される (参考: [[Extensible Markup Language|XML]]) 。
* ルートノード
 
== ロケーションパス ==
 
XPathで最も一般的な式は、ロケーションパスである。
ロケーションパスにより、[[Extensible Markup Language|XML]]文書のあるノード(現在のコンテクストノード)を基準として、別のノードもしくは複数のノード(ノード集合)が指定される(指定されるノードが0個すなわち1個も存在しない場合もある)。
 
=== ロケーションステップ ===
 
ロケーションパスを構成する各ロケーションステップは、次の3つの要素から構成される。
* [[#軸|軸]]({{lang|en|axis}})
 
=== 省略構文 ===
 
省略構文は簡潔な構文であり、よく使われる多くの既定値を使い省略してロケーションステップを記述することができる。
 
 
=== 軸 ===
 
[[#ロケーションステップ|ロケーションステップ]]の軸の記述は、XML文書の[[木構造 (データ構造)|木構造]]において、方向を指定する。
XPath仕様で定義されている13種類の軸([[#完全な構文]])を示す。
 
=== ノードテスト ===
 
[[#ロケーションステップ|ロケーションステップ]]のノードテストは、式もしくは特定のノード名によって記述される。
例えば、名前空間接頭辞<code>gs</code>が定義されているXML文書で、<code>//gs:enquiry</code>とノードテストが記述された場合、<code>gs</code>名前空間下の<code>enquiry</code>をノード名とする全てのノードの集合が、このノードテストの指定の対象となる。
 
=== 完全な構文と省略構文の対応関係 ===
 
[[#ロケーションステップ|ロケーションステップ]]の[[#完全な構文|完全な構文]]と[[#省略構文|省略構文]]の対応関係を次に示す<ref name="spec"/><ref>(株)日本ユニテックほか、2001年、p.67</ref>。
 
 
== データ型と演算子、関数 ==
 
XPath 1.0 で規定されている[[データ型]]と[[演算子]]、[[関数 (プログラミング)|関数]]を説明する。
 
 
=== ノード集合関数 ===
 
; ''number'' position()
: 評価中のコンテクストノードの位置を数値で返す (兄弟ノードにおける位置) 。
 
=== 文字列関数 ===
 
; ''string'' string(''object?'')
: XPathで規定されている4種類の[[データ型]]を引数としてとることができ、仕様で定められた変換規則によって文字列に変換する。引数としてXPath式も渡すことができる。
 
=== 論理関数 ===
 
; ''boolean'' not(''boolean'')
: 引数の論理値の逆の値を返す。
 
=== 数値関数 ===
 
; ''number'' sum(''node-set'')
: 引数として渡されたノード集合の各ノードの文字列値を、仕様で定められた変換規則にしたがって数値に変換し、合計した値を返す。
 
== 例 ==
 
次のXML文書でXPathを例示して説明する。
 
XPath-Visualisierer helfen, die mitunter komplizierten XPath-Abfragen auf konkrete XML-Dateien anzuwenden.
XPathビジュアライザのようなツールを使うと、XML文書に複雑なXPath問い合わせを行った結果を確かめることができる。
-->
 
== XPath 2.0 ==
冒頭で述べたとおり、XPathの2007年3月現在の最新バージョン XPath 2.0 は2007年1月23日に[[標準化団体 (コンピュータと通信)|標準化団体]] [[World Wide Web Consortium|W3C]] で勧告された。
 
[[XQuery]] 1.0 (勧告候補) は XPath 2.0 の拡張である。
冒頭で述べたとおり、XPathの2007年3月現在の最新バージョン XPath 2.0 は2007年1月23日に[[標準化団体 (コンピュータと通信)|標準化団体]] [[World Wide Web Consortium|W3C]] で勧告された。
なお XPath 1.0 は1999年11月16日に勧告された。
[[XQuery]] 1.0 (勧告候補) は XPath 2.0 の拡張である。
また XPath 2.0 は [[XSL Transformations|XSLT]] 2.0 でも採用されている。
 
XPath 2.0 は XQuery 1.0 の構文のパス式を構成する。
XQuery 1.0 の FLWOR と呼ばれる式においては、<code>for</code> 句の構成要素となる。
 
== XPath 3.0 ==
{{節スタブ}}
[[2014年]][[4月8日]]に XPath 3.0 が勧告された。[[XQuery]] 3.0 は XPath 3.0 の拡張である。
 
==実装==
 
== 関連項目 ==
 
* [[Extensible Markup Language|XML]]
* [[Extensible Stylesheet Language|XSL]]
 
== 脚注 ==
 
{{脚注ヘルプ}}
{{reflist}}
<references/>
 
== 参考文献 ==
 
* 株式会社日本ユニテック、中山幹敏、奥井康弘 ほか『改訂版 標準XML完全解説(下)』技術評論社、2001年、ISBN 4-7741-1302-6
* [http://www.w3.org/TR/xpath XPath 1.0 仕様(英語)] - [[World Wide Web Consortium|W3C]] (World Wide Web Consortium)
* [http://www.infoteria.com/jp/contents/xml-data/REC-xpath-19991116-jpn.htm XPath 1.0 仕様(日本語訳)] - [[インフォテリア|インフォテリア株式会社]]
* [http://www.doraneko.org/xml/xpath10/19991116/Overview.html XPath 1.0 仕様(日本語訳)] - どら猫本舗
 
== 外部リンク ==
* {{en icon}} [http://www.w3.org/TR/1999/REC-xpath-19991116/ XML Path Language (XPath) Version 1.0] - [[W3C勧告]](英語)
 
* [http://www.w3.org/TR/1999/REC-xpath-19991116 XML Path Language (XPath) Version 1.0] - [[W3C勧告]](英語)
* [http://www.w3.org/TR/2007/REC-xpath20-20070123/ XML Path Language (XPath) 2.0] - [[W3C勧告]](英語)
** [http://www.infoteria.com/jp/contents/xml-data/REC-xpath-19991116-jpn.htm XPath 1.0 仕様] - [[インフォテリア|インフォテリア株式会社]](非公式日本語訳)
** [http://www.doraneko.org/xml/xpath10/19991116/Overview.html XPath 1.0 仕様] - どら猫本舗(非公式日本語訳)
<!-- ** [http://www.infoteria.com/jp/contents/xml-data/REC-xpath-19991116-jpn.htm XPath 1.0 仕様(日本語訳)] - [[インフォテリア|インフォテリア株式会社]](非公式日本語訳)-->
* [http://www.atmarkit.co.jp/fxml/tanpatsu/10xslt/xslt02.html XPathの書き方の基本(日本語)] - @IT(アットマーク・アイティ)
* {{en icon}} [http://www.w3schoolsw3.comorg/xpathTR/default.aspxpath20/ XML Path Language (XPath) tutorial(英語)2.0] - [[W3C勧告]]
* {{en icon}} [http://www.zvonw3.org/xxlTR/XPathTutorialxpath-30/General/examples XML Path Language (XPath) 3.html0] Another- tutorial(英語)[[W3C勧告]]
* {{ja icon}} [http://www.atmarkit.co.jp/fxml/tanpatsu/10xslt/xslt02.html XPathの書き方の基本(日本語)] - @IT(アットマーク・アイティ)
* [http://www.activsoftware.com/xml/xpath/ Practice XPath queries(英語)]
* {{en icon}} [http://www.data2typew3schools.de/en/xml-xslt-xslfocom/xpath/xpath-introduction/default.asp XPath Tutorial (ドイツ語)tutorial]
* {{en icon}} [http://www.zvon.org/xxl/XPathTutorial/General/examples.html Another tutorial]
* [http://www.data2type.de/xml-xslt-xslfo/xpath/xsltundxpathreferenz XSLT と XPath Reference (ドイツ語)]
* {{en icon}} [http://www.activsoftware.com/xml/xpath/ Practice XPath queries(英語)queries]
<!-- * {{en icon}} [http://js-xpath.sourceforge.net/ JavaScriptでのXPath実装(英語)] -->
 
{{W3C標準}}
791

回編集