Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
このページの目次
 

key

構文

説明

XPath 関数で使用する key() キーを定義します。キーは ID の代わりになり、XML ドキュメント内のノードにインデックスを付けるために使用されます。キーは、スクリプト内の最上位ステートメントとして定義する必要があります。定義は key 、キー識別子、インデックスを作成するノード、および一致するノードを参照するためのキー名とペアになっている値で構成されます。次に、 key() この関数を使用して適切なノードを見つけます。

この key() 関数は、現在のノードの XML ドキュメントで動作し、指定された key 定義を使用して、特定の名前と値によって参照されるノードを取得します。関数の引数は、キー名と目的のキーの値です。戻り値は、そのキー名と値によって参照されるすべてのノードを含むノード セットです。目的のキー値が文字列ではなくノード セットとして提供されている場合、返されるノード セットは、ノード セット内のノードによって表されるキー値について、参照されているすべてのノードの和集合です。

たとえば、キーを定義するとします。

次のコードは、"trace" の値を持つ属性を持つ要素を選択し<prototype>、子要素name<return-type>の値を出力します。

属性

key name

キー識別子は、スクリプト内でキーを一意に識別し、関数の最初の引数として渡されます key()

match pattern

インデックスを作成するノードのセットを選択する XPath 式。

value expression

キーの値を定義する XPath 式。

SLAXの例

次の op スクリプトは、2 つのkey定義 と を作成し、デバイス上のすべてのスタティック ルートとnext-hopprotocolネクスト ホップが ge-0/0/0.0 のすべてのルートを取得して表示するために使用されます。スクリプトは、Junos XML APIget-route-informationコマンドを呼び出して、デバイスのルート情報を取得します。ステートメントはfor-each( $results )、現在のノードを $results XML ドキュメントに変更します。後続のfor-eachループでは、キーを使用して、キー名と値に従ってインデックスが付けられたすべてのノードを取得します。

このステートメントはfor-each( key( "protocol", "Static" )、要素でroute-table/rt一致するキー定義を使用してprotocol、目的のノードを取得します。rt-entry/protocol-nameキー値は、<protocol-name>値 "Static" を持つ子要素と一致します。コード ブロックは、コンテキスト ノードとして使用して<rt>実行されます。一致ごとに、スクリプトは要素の値を出力します<rt-destination>

ステートメントは for-each( key( "next-hop", "ge-0/0/0.0" ) 、要素で route-table/rt 一致する「ネクストホップ」キー定義を使用して、目的のノードを取得します。 rt-entry/nh/via キー値は、 <via> 値 "ge-0/0/0.0" を持つ子要素と一致します。コード ブロックは、コンテキスト ノードとして使用して <rt> 実行されます。一致ごとに、スクリプトは要素の値を出力します <rt-destination>

リリース情報

Junos OSリリース12.2以降のリリースでサポートされているSLAX言語のバージョン1.1で導入されたステートメント。