「XPath 式 (XPath expression)」ウィザード - 構文参照オプション

構文参照オプションを使用して、ユーザーの XPath 式のロケーション・パスと演算子を指定することができます。数値の操作、パスの結合、およびストリングまたは数値の比較に演算子が使われます。 ロケーション・パスは、XML 文書にノードまたはノード・グループのロケーションを記述します。

ロケーション・パスには、絶対と相対の 2 種類があります。絶対パスは、固定参照点 (ルート・ノード) で開始します。 相対パスは、可変小数点 (コンテキスト・ノード) で開始します。

ロケーション・パスは、ノード (要素、属性、ネーム・スペース、コメントなど、 XML 文書の任意のパーツ) のコレクションであるノード・セットを戻します。 ロケーション・パスはロケーション・ステップから構成されます。各ステップは次の 2 つのパーツから成っています。

ロケーション・ステップは次のようなものです。

axis: node-test

それぞれをスラッシュで区切ることによって、複数のロケーション・ステップを結合することができます。 結果のロケーション・パスの各ステップが、そのステップの次のパスのコンテキスト・ノードを設定します。

構文参照オプションにアクセスするには、「XPath 式」ウィザード内の「参照 (Reference)」タブをクリックします。

軸指定子

各 XPath ロケーション・ステップは、コンテキスト・ノードから軸に沿って移動します。たとえば、 軸として child を選択すると、XPath 式はコンテキスト・ノードのすべての子の検索を行います。

ノードが検索されるロケーション
ancestor:: ルート・ノードおよびコンテキスト・ノードを含むすべての要素ノード。
ancestor-or-self:: コンテキスト・ノードのすべての祖先、およびノード自体。
attribute:: コンテキスト・ノードのすべての属性。
child:: コンテキスト・ノードのすべての子。属性ノードとネーム・スペース・ノードは、親ノードを持ってはいても、どのノードの子でもありません。

これはデフォルト値です。

descendant:: コンテキスト・ノード内に含まれるすべてのノード、つまり、子、子の子など。  ルート・ノードと要素ノードだけが子孫を持っています。 子軸同様、子孫軸にも、 属性ノードまたはネーム・スペース・ノードは含まれません。
descendant-or-self:: コンテキスト・ノードの子孫またはコンテキスト・ノード自体。
following:: コンテキスト・ノードの終了後に開始するすべてのノード。 ただし、属性ノードとネーム・スペース・ノードは除きます。
following-sibling::  コンテキスト・ノードの終了に続く、同じ親ノードを持つすべてのノード。 属性ノードとネーム・スペース・ノードに兄弟はありません。
namespace::  コンテキスト・ノードのスコープ内のすべてのネーム・スペース。
parent::  即時にコンテキスト・ノードを含む要素ノードまたはルート・ノード。 ルート・ノードのみ親ノードを持っていません。
preceding::  コンテキスト・ノードの開始前に終了するすべてのノード。ただし、属性ノードとネーム・スペース・ノードは除きます。
preceding-sibling:: コンテキスト・ノードの開始に先行する、同じ親ノードを持つすべてのノード。 属性ノードとネーム・スペース・ノードに兄弟はありません。
self::  コンテキスト・ノード自体。

ノード・テスト

各ロケーション・ステップは、少なくとも 1 つの軸と 1 つのノード・テストを持っています。ノード・テストは、 ロケーション・ステップで選択されたノードをさらに詳細化します。たとえば、 ロケーション・ステップとして child:: comment( ) を指定すると、 XPath 式はコンテキスト・ノードのすべてのコメント・ノードの子を戻します。

ノード 戻される値
* 名前に関係なく、すべての要素を選択する。たとえば、 child::* と指定すると、コンテキスト・ノードの全要素の子が選択され、 attribute::* と指定すると、コンテキスト・ノードの全属性が選択されます。
comment ( ) 全コメント・ノード。
node( ) タイプに関係なく、全ノード。
processing-instruction ('target' ) 引き数を指定しないと、すべての処理命令が戻される。単一ストリングの引き数 target を指定すると、 指定のターゲットを持つすべての処理命令が選択されます。
text( ) 全テキスト・ノード。たとえば、child::text() と指定すると、 コンテキスト・ノードの全テキスト・ノードの子が選択されます。

演算子

3 つの異なった種類の演算子があります。
  • ノード・セット - パスの結合または定義に使用する演算子
  • ブール - ストリングまたは数式の比較に使用する演算子
  • 数値 - 数値操作に使用される

ノード・セット

演算子 関数
| これは共用体演算子です。2 つのノード・セットを取り出し、 そのノード・セット内のすべてのノードを (重複するノードを除去した後で) 結合します。
/ すべての子ノードを選択します。
// 子孫ノードを選択します。

ブール値

ブール演算子を使用して、ストリング、数式またはブール値を比較することができます。

演算子 戻り
<= 1 番目の数式の値が 2 番目の数式の値より小か等しい場合は true、 そうでない場合は false
< 1 番目の数式の値が 2 番目の数式の値より小さい場合は true、 そうでない場合は false
>= 1 番目の数式の値が 2 番目の数式の値より大か等しい場合は true、 そうでない場合は false
> 1 番目の数式の値が 2 番目の数式の値より大きい場合は true、 そうでない場合は false
= (ストリングまたは数値の) どちらの式にも同じ値がある場合は true、 そうでない場合は false
!= (ストリングまたは数値の) 両方の式に同じ値がない場合は true、 そうでない場合は false
and どちらのブール値も true の場合は true、そうでない場合は false
or どちらの値も false の場合にのみ false、それ以外の場合は true です。

数値

以下の演算子を使用して、数値を操作することができます。

演算子 戻り
+ 2 つの数式の和。
- 1 番目の数式から 2 番目の数式を引いた差。
* 2 つの数式の積。
div 1 番目の数式を 2 番目の数式で割った値。
mod \ 1 番目の数式を 2 番目の数式で割った余り。
関連タスク
XPath 式の作成
関連資料
「XPath 式 (XPath expression)」ウィザード - 関数参照オプション

フィードバック