相対位置経路

相対位置経路

[1]XPath文脈節からの相対的な位置を表す位置経路のことを、そのままですが相対位置経路 (relative location path) といいます。

相対位置経路は、1つ以上の位置段階が区切子 / で区切られた形になってます。

まず最初の位置段階をその文脈で評価し、 その結果を新しい文脈として更に次の位置段階で評価します。 これを最後の位置段階まで繰り返して、 残った節の集合が与えられた相対位置経路の評価結果になります。

[2] たとえば、次の XML 文書断片を考えます。

<context>
  <p id="p1">
    <q id="q1">
      <r id="r1"></r>
      <r id="r2"></r>
      <q id="q2">
        <r id="r3"></r>
      </q>
    </q>
    <p id="p2">
      <q id="q3">
        <r id="r4"/>
      </q>
    </p>
    <q id="q4">
    </q>
    <q id="q5">
      <r id="r5"/>
    </q>
  </p>
</context>

context 要素を文脈節として、 child:p/child:q/child:r を評価することを考えます。

まず、最初の位置段階である child:p を評価します。ここで、 child子要素を選択することを意味します。 そこで context 要素の子要素で型名が p であるものを探します。 すると要素 p1 が見つかります。

次に、得られた結果である要素 p1 を文脈節として、二番目の位置段階である child:q を評価します。 同様に子要素を眺めると、該当する節は3つ見つかります。

そして、三番目の位置段階 child:r を評価します。まず、 q1 を文脈節にしてみると、2つの節が見つかります。

次に、 q4 を文脈節にしてみます。 ところが、 child:r に合致する節は見つかりません。

最後になりますが、 q5 を文脈節にします。 該当する節は1つあります。

ということで、以上の結果を総合すると、

従って、 child:p/child:q/child:r を評価すると、節集合 {r1, r2, r5} が得られます。