Loading article…
XPath 3 は、XML文書内のノードを選択するためのクエリ言語であるXML パス言語の最新バージョンです。XPath 1.0およびXPath 2.0に代わるものです。
XPath 3.0 は2014 年 4 月 8 日にW3C 勧告となり、XPath 3.1 は2017 年 3 月 21 日にW3C 勧告となりました。
XPath 3.0 の新機能
XPath 2.0と比較して、XPath 3.0 には次の新しい機能が追加されています。
- インライン関数式
- 匿名関数は、式のコンテキストで作成できます。たとえば、式は2 つの引数の積を返す関数を作成します。式は、コレクションからそれぞれ異なるノードを返す関数のシーケンスを作成します。
function($a as xs:double, $b as xs:double) as xs:double { $a * $b }collection()/(let $a := . return function() { $a }) - 動的関数呼び出し
- 関数の値は、名前で参照されなくても呼び出すことができます。たとえば、シーケンスから 2 番目の項目を取得し、それを関数として呼び出し、文字列を引数として渡します。
$f[2]("Hi there")$f"Hi there" - ユニオン型
- XML スキーマで定義されている共用体型は、型変換や関数型シグネチャで使用できます。
- 名前空間リテラル
- XML 名前空間は、中括弧で囲まれたURI リテラルを使用して参照できます。たとえば、修飾名
math:piを に拡張してQ{http://www.w3.org/2005/xpath-functions/math}pi、プレフィックス内に名前空間 URI を埋め込むことができます。 - 文字列連結演算子
- 新しい
||演算子は文字列の連結に使用できます。$a || $bは と同等です。fn:concat($a, $b) - マッピング演算子
- 新しい
!演算子は単純なマッピングを実行します。シーケンス内の各項目をE1 ! E2評価し、結果の項目を連結します。これはパス演算子に似ていますが、演算子は重複の除去や結果のドキュメント順序付けを実行しません。E2E1/!
XPath 3.1 の新機能
XPath 3.1 では、主に配列とマップ (連想配列) データ型のサポートが追加されました。これらの型とそれに関連する機能は、JSONデータの操作を容易にすることを目的としています。
もう一つの革新は、関数連鎖のための矢印演算子です=>。例えば、XPath 2.0式
含む(大文字(前の部分文字列( $ in 、' ' ))、'X' )
今ではこう書くことができる
$ in = >前の部分文字列( ' ' ) = >大文字() = >含む( 'X' )
参考文献
- 「XML パス言語 (XPath) 3.0」。ワールド ワイド ウェブ コンソーシアム。2014 年 4 月 8 日。
- 「XML パス言語 (XPath) 3.1」。ワールド ワイド ウェブ コンソーシアム。2017 年 3 月 21 日。
