first-of() Function (SLAX and XSLT)
名前 空間
http://xml.juniper.net/junos/commit-scripts/1.0 http://xml.libslax.org/slax
SLAXの構文
var $result = prefix:first-of(object, "expression");
XSLT 構文
<xsl:variable name="result" select="prefix:first-of(object, 'expression')"/>
説明
リスト内の最初の空でない (null 以外の) 項目を返します。リスト内のすべてのオブジェクトが空の場合、既定の式が返されます。この関数は、 if / else-if / else
コンストラクトと同じ機能を提供しますが、はるかに簡潔な形式で提供されます。
名前空間 URI との関連付けは prefix 、スタイル シートのプレフィックスと名前空間のマッピングで定義する必要があります。
パラメーター
expression |
リスト内のすべてのオブジェクトが空の場合に返される既定値。 |
object |
オブジェクトのリスト。 |
戻り値
result |
オブジェクト リスト内の最初の空でない (null 以外の) 項目。リスト内のすべてのオブジェクトが空の場合、既定の式が返されます。 |
使用例
次の例では、 の $a
値が空の場合、 $b
がチェックされます。の $b
値が空の場合、 $c
がチェックされます。の $c
値が空の場合、 $d
がチェックされます。の $d
値が空の場合、文字列 "none" が返されます。
jcs:first-of($a, $b, $c, $d, "none")
次の例では、物理インターフェイスごとに、スクリプトは各論理インターフェイスの説明をチェックします。論理インターフェイス記述が存在しない場合、関数は (親) 物理インターフェイスの説明を返します。親物理インターフェース記述が存在しない場合、関数は記述が見つからなかったというメッセージを返します。
var $rpc = <get-interface-information>; var $results = jcs:invoke($rpc); for-each ($results/physical-interface/logical-interface) { var $description = jcs:first-of(description, ../description, "no description found"); }
これに相当する XSLT コードは次のとおりです。
<xsl:variable name="rpc"> <get-interface-information/> </xsl:variable> <xsl:variable name="results" select="jcs:invoke($rpc)"/> <xsl:for-each select="$results/physical-interface/logical-interface"> <xsl:variable name="description" select="jcs:first-of(description, ../description, 'no description found')"/> </xsl:for-each>
前の例の変数宣言の description
コードは、次のより詳細な if / else-if / else
コンストラクトと同等です。
var $description = { if (description) { expr description; } else if (../description) { expr ../description; } else { expr "no description found"; } }
「例: Op スクリプトを使用した DNS ホスト名情報の表示」も参照してください。
リリース情報
Junos OS リリース 7.6 で導入された機能。
slax名前空間のサポート http://xml.libslax.org/slax Junos OSリリース12.2で追加されました。