Location Path

Updated: 2002-11-21 19:34:33 - [ Home | Wiki Home | Index | Changes ]

ロケーションパスは、XPathの式の一種で、XMLツリーのノードを選択するために使われます。

目次

ロケーションパスとは
ステップ
ステップを構成するパーツ
役割
働き
軸 (axis)
軸の種類(13種類)
省略した書き方
主ノード型
ノードテスト (node test)
述部 (predicate)
ステップの区切り(/と//)
参照

以下は、ロケーションパスの例です。

ロケーションパスとは

XPathの式のうち、XMLツリーのノードの集合(ノードセット)を得るための式を、ロケーションパスと呼びます。

ステップ

スタート地点として渡されたノード(コンテキストノード)から、次のノードセットを選択するまでの処理の単位を、 ステップ と呼びます。

コンテキストノード(入力) → ステップ → ノードセット(出力)

ロケーションパスは、「/」「//」で区切られた一つ以上のステップで構成されます。

ステップを構成するパーツ

ステップはさらに、 ノードテスト述部 に分解できます。

ロケーションパス −(分解)→ ステップ −(分解)→ 軸,ノードテスト,述部

ステップは、つぎのような形式で記述されます。

軸::ノードテスト[述部]

軸と述部は省略できます。

役割

軸・ノードテスト・述部の役割の違いは、つぎのようなものです。

軸は、今選ばれているノードと、次に選びたいノードとの関係を表します。ノードテストは、名前や型のようなノード自身の性質を表します。最後に、軸やノードテストだけでは表現しきれない複雑な条件が、述部によって表現されます。

働き

つぎのような手順でノードセットが選ばれます。

  1. 軸による選択: 今選ばれているノード(コンテキストノード)と、特定の関係にあるノードを選択する。
  2. ノードテストによる選択: 軸で選ばれたノードのうち、特定の性質をもっているノードを選択する。
  3. 述部による選択: 条件式が評価され、真になったものだけを結果のノードセットに追加する。

以下で、これらを詳しく見ていきます。

(axis)

軸は、現在選択されているノード(コンテキストノード)と、次に選択したいノードとの関係を表します。

軸の種類(13種類)

軸は全部で13種類あります。以下に全てを挙げます。

省略した書き方

つぎのような省略した書き方ができます。

ノード型

すべての軸は、主ノード型を持ちます。

主ノード型は、続くノードテストで名前を指定した際の結果に影響します。たとえば、主ノード型が要素型の軸を使った場合、後に続く名前は要素の名前であると判断されます。属性の名前で一致するものがあっても、その属性ノードが選ばれることはありません。

ノードテスト (node test)

ノードテストは、軸で選ばれたノードの性質を表現します。ノードテストには、つぎのものを指定できます。

名前を指定した場合は、上で説明したとおり、軸の主ノード型と一致し、かつ名前が一致するノードが選ばれます。名前はリテラルとして(そのまま)書けます。

child::a/attribute::href

述部 (predicate)

述部には、軸とノードテストだけでは表現しきれなかった、複雑な条件を指定できます。ここに記述した式が真を返したノードだけが、ステップを評価した結果のノードセットに加えられます。

述部に数字だけが書かれた場合、例えば[ 3 ]とあった場合は、[position() = 3]の略です。

ステップの区切り(/と//)

ステップの区切りには、以下の2つがあります。

//は、/descendant-or-self::node()/の略です。つまり、

です。

参照



KOSEKI Kengo <kengo@tt.rim.or.jp>