Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

XSLT の概要

コミット スクリプト、op スクリプト、イベント スクリプト、SNMP スクリプトは、XML(Extensible Markup Language)データの処理の標準である XSLT(Extensible Stylesheet Language Transformations)で記述できます。XSLT は W3C(World Wide Web Consortium)によって開発され、http://www.w3c.org/TR/xslt でアクセス可能です。

XSLT のメリット

XSLT は、ネイティブ XML 機能を備えた Junos OS に自然にマッチします。XSLT は XML から XML への変換を実行し、XML 階層を別の階層に変換します。入力 XML を変換する際の自由度とパワーが高まり、既存の階層(追加や削除など)に至るまで、あらゆることが可能になり、完全に新しいドキュメント階層を構築できます。

XSLT は XML 間の汎用変換を可能にするために作成されているため、構成構文の検査(Junos OS が XML で簡単に表現できる)とエラーや警告(Junos OS が内部で XML と通信する)の両方を検査する場合に最適です。XSLT には、特定の基準に一致する構成ステートメントを見つけるための強力なメカニズムが含まれています。XSLT は、これらの構成ステートメントから適切な XML 結果ツリーを生成し、Junos OS UI(ユーザー インターフェイス)コンポーネントに目的の動作を実行するよう指示できます。

XSLT は強力なスクリプティング機能を提供しますが、その焦点は限定的で制限されています。任意のプログラマや悪意のあるプログラマに対して Junos OS を脆弱にすることはありません。XSLT では、ランダムな TCP(Transmission Control Protocol)ポートを開いたり、多数のプロセスをフォークしたり、電子メールを送信したりするなど、プログラマが無計画な操作を行うのを制限します。XSLT で使用可能な唯一のアクションは XML を生成することであり、XML は固定セマンティクスに従って UI によって解釈されます。XSLT スクリプトは、上記の特定の機能(エラー、警告、システム ログ メッセージ、永続的および一時構成変更)のみを生成できるように UI インフラストラクチャによって直接処理される XML データのみを出力できます。これは、デバイス上のコミットスクリプト、opスクリプト、イベントスクリプト、SNMPスクリプトの影響が適切に定義されており、その目的で追加されたコマンドを使用してCLI(コマンドラインインターフェイス)内に表示できることを意味します。

XSLT エンジン

XSLT は、ある XML ドキュメントを別の XML ドキュメントに変換するための言語です。基本的なモデルは、XSLT エンジン(またはプロセッサ)がスクリプト(またはスタイル シート)と XML ドキュメントを読み取るということです。XSLT エンジンは、スクリプト内の命令を使用して、ドキュメントの階層をトラバースして XML ドキュメントを処理します。このスクリプトは、ツリーのどの部分を通過すべきか、どのように検査すべきか、各ポイントで生成すべき XML を示します。コミット スクリプト、op スクリプト、イベント スクリプト、SNMP スクリプトの場合、XSLT エンジンは Junos OS 管理プロセス(mgd)の関数です。

図 1 は、XSLT コミット スクリプトと XSLT エンジンの関係を示しています。

図 1: XSLT エンジンを介した XSLT コミット スクリプトのフロー Flow of XSLT Commit Script Through the XSLT Engine

XSLT の概念

XSLT には 7 つの基本概念があります。これらは 表1にまとめられています。

表 1:XSLT の概念

XSLT の概念

説明

Xpath

入力文書内のノードを指定するための式構文

テンプレート

入力階層を処理する命令にマッピングするメカニズム

パラメーター

テンプレートに引数を渡すメカニズム

変数

ノードへの読み取り専用参照を定義するメカニズム

プログラミング手順

XSLT の論理を定義するためのメカニズム

再帰

テンプレートを呼び出してループを促進するメカニズム

コンテキスト(点)

入力ドキュメントで現在検査されているノード