<xsl:variable> 元素

指定表达式中绑定的值。

<xsl:variable
  name = QName
  select = Expression
</xsl:variable>

特性

  • select
    属性值为表达式,变量值为计算该表达式得出的对象。 当指定此属性时,<xsl:variable> 的内容必须为空。

元素信息

出现次数

无限制

父元素

xsl:attributexsl:commentxsl:copyxsl:elementxsl:for-eachxsl:ifxsl:otherwisexsl:paramxsl:processing-instructionxsl:stylesheetxsl:template、xsl:variable、xsl:whenxsl:with-param、输出元素

子元素

xsl:apply-templatesxsl:attributexsl:call-templatexsl:choosexsl:commentxsl:copyxsl:copy-ofxsl:elementxsl:for-eachxsl:ifxsl:processing-instructionxsl:textxsl:value-of、xsl:variable、输出元素

备注

变量值可以是任何表达式可以返回的类型的对象。 <xsl:variable> 元素可以以三种备选方式指定变量值:

  • 如果元素具有 select 属性,属性值必须是表达式,变量值是计算该表达式得出的对象。 在这种情况下,元素的内容必须是空的。

  • 如果元素没有 select 属性,并且包含非空的内容,例如一个或多个子节点,内容将指定该值。 内容是通过实例化为变量指定值的模板。 值是结果树的一个片断,等效于只包含一个根节点、将通过实例化该模板生成的节点序列作为子节点的节点集。 该结果树片断中的节点的基 URI 是变量绑定元素的基统一资源标识符 (URI)。

    如果通过实例化该模板创建的节点序列中的某个成员是属性节点或命名空间节点,将出错,因为根节点不能将属性节点或命名空间节点作为子节点。

  • 如果内容是空的并且没有 select 属性,变量值将为空字符串。 因此

    <xsl:variable name="x"/>
    

    等效于

    <xsl:variable name="x" select="''"/>
    

    如果使用变量以便根据位置选择节点,要避免进行以下操作:

    <xsl:variable name="n">2</xsl:variable>
    ...
    <xsl:value-of select="item[$n]"/>
    

    这将输出第一项元素的值,因为变量“n”将被绑定到结果树的片段上,而不是数字上。 而应进行此操作:

    <xsl:variable name="n" select="2"/>
    ...
    <xsl:value-of select="item[$n]"/>
    

    ... 或此操作:

    <xsl:variable name="n">2</xsl:variable>
    ...
    <xsl:value-of select="item[number($n)]"/>
    

另请参见

参考

<xsl:param> 元素