XSLT 変数の概要
XSLT スクリプトでは、 要素を使用して変数を <xsl:variable>
宣言します。属性は name
、大文字と小文字を区別する変数の名前を指定します。変数を宣言すると、ドル記号($)でプレフィックスが付いた変数名を使用して 、XPath 式内で変数を参照できます。
変数は不変です。変数の値を設定できるのは、変数を宣言した場合のみです。その後、値は固定されます。タグに属性と式を select
含めることで変数を <xsl:variable>
初期化します。次の例では、変数 location
を宣言して初期化します。次に、変数は location
変数の初期化に message
使用されます。
<xsl:variable name="location" select="$dot/@location"/> <xsl:variable name="message" select="concat('We are in ', $location, ' now.')"/>
ローカル変数とグローバル変数の両方を定義できます。変数が要素の <xsl:stylesheet>
子である場合、グローバルです。それ以外の場合は、ローカルです。グローバル変数の値は、スタイル シートの任意の場所からアクセスできます。ローカル変数のスコープは、定義されているテンプレートまたはコードブロックに限定されます。
XSLT 変数は、計算または静的定義できる任意の値を格納できます。これには、データ構造、XML 階層、テキストとパラメーターの組み合わせが含まれます。例えば、 オペレーション・モード・コマンド の XML 出力を変数に割り当て、その変数内の階層にアクセスすることができます。
以下のテンプレートは変数を message
宣言します。変数には message
、テキストとパラメーターの両方の値が含まれています。このテンプレートは、メッセージ変数の値を参照してシステム・ログ・メッセージを生成します。
<xsl:template name="emit-syslog"> <xsl:param name="user"/> <xsl:param name="date"/> <xsl:param name="device"/> <xsl:variable name="message"> <xsl:text>Device </xsl:text> <xsl:value-of select="$device"/> <xsl:text> was changed on </xsl:text> <xsl:value-of select="$date"/> <xsl:text> by user '</xsl:text> <xsl:value-of select="$user"/> <xsl:text>.'</xsl:text> </xsl:variable> <syslog> <message> <xsl:value-of select="$message"/> </message> </syslog> </xsl:template>
その結果、システム ログ メッセージは次のようになります。
「.」ユーザーuserによってデバイスdevice-nameがオンdateに変更されました。
表 1 は、XSLT 変数宣言の例と疑似コードの説明を示しています。
変数宣言 |
疑似コードの説明 |
---|---|
|
という名前 |
|
マクロ パラメーターの値を |