構文参照オプションを使用して、ユーザーの 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() と指定すると、 コンテキスト・ノードの全テキスト・ノードの子が選択されます。 |
ノード・セット
| 演算子 | 関数 |
|---|---|
| | | これは共用体演算子です。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 番目の数式で割った余り。 |