sort
構文
sort expression {; case-order "upper-first" | "lower-first"; data-type "text" | "number" | type-name; order "ascending" | "descending"; }
説明
および apply-templates
ステートメントが現在のノードリストをfor-each
繰り返す順序を制御します。デフォルトでは、 および apply-templates
ステートメントはノードをfor-each
ドキュメントの順序で考慮しますが、 ステートメントはsort
ノードリストを反復処理する前の順序を定義します。または apply-templates
ステートメントの直後に sort
ステートメントをfor-each
挿入します。ステートメントはsort
、ループが最初に開始された場合にのみ処理されます。
sort
ステートメントには、オプションの XPath 式と、3 つのオプション パラメーターがあります。order
case-order
data-type
XPath 式は、並べ替えに使用される各ノードの比較文字列を決定します。スクリプトはノードを持つ式をコンテキストとして評価し、結果をそのノードの比較文字列に変換します。XPath 式を指定しない場合、デフォルト値は「.」となり、リスト内の各ノードの文字列内容が比較されます。== や _ などの SLAX 固有の演算子は、式文字列内では使用できません。ステートメントにsort
オプションパラメータが含まれていない場合、各ノードの文字列値に基づいてリストがソートされます。
ステートメントはsort
、基になる XML データ構造を永続的にソートせず、 または apply-templates
ステートメントでfor-each
使用されている現在のノードリストの順序のみを表示します。1 つのfor-each
または apply-templates
ステートメントに複数sort
のステートメントを割り当てることができます。それらは、違いが見つかるまで順に適用されます。
属性
expression |
並べ替えに使用される各ノードの比較文字列を決定する XPath 式。デフォルト値は「..」です。 |
case-order |
最初に小文字をソートするか、最初に大文字でソートするかを指定します。許容できる値は、「下位優先」または「上位優先」です。デフォルトは「上位優先」です。 |
data-type |
要素タイプを指定して、数値、字句、またはその他の並べ替えを実行するかどうかを決定します。許容できる値は「数値」と「テキスト」です。デフォルトは「テキスト」です。 「text」に設定 |
order |
昇順または降順で並べ替えるかどうかを指定します。許容できる値は「降順」または「昇順」です。デフォルトは「昇順」です。 |
SLAX の例
次の SLAX スクリプトの例では、Junos XML API get-interface-information
コマンドを実行し、結果の出力を解析します。ループは for-each
、昇順でソートされたデバイス上の各物理インターフェイスの名前を印刷します。
version 1.1; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; match / { <op-script-results> { var $results = jcs:invoke("get-interface-information"); for-each ($results/physical-interface/name) { sort . { data-type "text"; order "ascending"; } <interface-name> .; } } }
リリース情報
Junos OSリリース12.2以降のリリースでサポートされているSLAX言語のバージョン1.1で導入されたステートメント。