パス式

構文

path_expression ::= primary_expression (map_step | array_step)*

map_step ::= "." (map_filter_step | map_field_step)

array_step ::= array_filter_step | array_slice_step

セマンティクス

パス式は、階層的に構造化されたデータ内を移動するために使用します。構文に示されているように、パス式には入力式(1次式の項で説明されているいずれかの1次式の後に1つ以上のステップが続く式)が含まれます。入力式は、任意の順序の項目を返すことができます。各ステップは実際にはそれ自体が式です。入力として項目の順序を取り、0個以上の項目を生成します。この項目は、次のステップ(ある場合)の入力となります。各ステップでは、ステップ自体のみを対象とするネストされたスコープを作成します。

すべてのステップは入力順序を反復して、各入力項目にゼロ個以上の項目を生成します。入力順序が空の場合は、ステップの結果も空になります。それ以外の場合、ステップの全体的な結果は、各入力項目に対して生成された結果を連結したものになります。ステップで現在実行している入力項目はコンテキスト項目と呼ばれ、暗黙的に宣言された変数(名前が単一ドル記号($))を介してステップ式で使用できます。このコンテキスト項目変数は、ステップ式で作成されたスコープに存在します。

ステップにはいくつかの種類があります。すべての種類において、コンテキスト項目がNULLの場合は、追加処理を行わずに出力順序に追加されます。それ以外の場合は、以降の項で、NULL以外の各コンテキスト項目の各種類のステップによって実行される操作について説明します。