XSLT 变量概述
在 XSLT 脚本中,可以使用元素 <xsl:variable> 声明变量。该 name 属性指定变量的名称,该名称区分大小写。声明变量后,可以使用以美元符号 ($) 为前缀的变量名称在 XPath 表达式中引用该变量。
变量是不可变的;只有在声明变量时才能设置变量的值,在此之后,该值是固定的。您可以通过在标记中包含<xsl:variable>属性和表达式来select初始化变量。下面的示例声明并初始化变量 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 变量声明的示例以及伪代码说明。
变量声明 |
伪代码说明 |
|---|---|
|
将 |
|
将宏参数的值 |