XPath 式

XML 文書は、1 つのルート・ノードとその下位の子ノードで構成されるツリーとして編成されます。 関数ライブラリーは、このツリー内をブラウズし、個々の XML ノードの場所を特定するために XPath 引数を使用します。

XPath 式の結果は、ノードまたは一連の要素、テキスト、属性ノードのいずれかになります。 例えば、/ABC/DEF という XPath 式では、XML 文書の ABC ルート・ノードの下のすべての DEF 子ノードが選択されます。 以下の表に、XPath 構文の最も一般的な機能を要約します。

表 1. XPath 構文の概要
XPath のシンタックス 使用法
/ XPath 式の最初のフォワード・スラッシュは、ツリーのルートを指定します。 絶対パスは最初にスラッシュを付けて指定してください。 例えば、/ABC は、ルートに置かれている子エレメント ABC を指定します。 最初のスラッシュを省略すると、パスは相対パスになり、相対パスのコンテキストはデフォルトでルート要素になります。 ノードの子ノードを指定するには、XPath 式の中でパス分離文字として後続のスラッシュを使用します。 例えば、/ABC/DEF は、ABC 要素の子である DEF 要素を指定します (ABC 要素はルート要素の子です)。
// 2 つのフォワード・スラッシュは、現在のノードのすべての子孫ノードを指定します。 例えば、ABC//DEF は、ABC 要素の下のいずれかの DEF 要素とマッチングします。
* アスタリスクは、ワイルドカード文字であり、任意の子ノードに一致します。 例えば、/ABC/*/DEF は、ABC 要素の孫であるあらゆる DEF 要素とマッチングします。
[] 大括弧は、述部式 (2 項演算子の OR、AND、NOT など) を指定します。 例えば、/RESIDENTS [AGE=65 and NAME="Jane Doe"]/ADDRESS は、年齢が 65 歳で名前が Jane Doe のすべての住居者のアドレス要素を選択します。 また、大括弧はリスト内のインデックスを表します。 例えば、/POSTOFFICE/BOX[2] は、POSTOFFICE ルート要素の下の 2 番目のボックス番号要素を示します。
ノード名 nodename 変数は、指定されたノードのすべての子ノードを選択します。 例:
  • bookstore は、bookstore 要素のすべての子ノードを選択します。
  • /bookstore は、ルート要素である bookstore を選択します。 パスがスラッシュ ( / ) で始まる場合、常に要素の絶対パスを表します。
  • bookstore/book は、bookstore のすべての子 book 要素を選択します。
  • book は、文書内のすべての book 要素を選択します。
  • bookstore//book は、bookstore 要素の下であれば深さに関係なく、bookstore の下層にあるすべての book 要素を選択します。
. 単一のピリオドは、現在のノードを選択します。
.. 2 つのピリオドは、現在のノードの親を選択します。
@ アットマークは、属性を選択します。 たとえば、//@lang は、lang という名前の属性をすべて選択します。
func_
'
name
XPath では、substring()round()not() などの組み込み関数がサポートされます。 また、ネーム・スペースを使用してユーザー定義関数を使用可能にすることができます。