XSL:如何在调用父作用域中访问被调用模板中定义的变量?

时间:2016-07-13 14:56:53

标签: xslt

我的代码看起来像这样(故意简化):

select min(row_number) from
(
SELECT @rownum:=@rownum + 1 as row_number, 
       p.*
FROM p,
(SELECT @rownum := 0) r
  ) g
where userid = 100

显然,由于变量的范围,这不起作用。我的问题是: 有没有办法从<xsl:template match="/"> <xsl:call-template name="call_me" /> <xsl:value-of select="$inner_variable" /> </xsl:template> <xsl:template name="call_me"> <xsl:variable name="inner_variable" select="/*" /> </xsl:template> 模板全局定义变量,或从父(调用模板)范围访问此局部变量?

编辑:变量不是XML树片段,而是由C#函数处理的节点集。所以我真的需要访问变量。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您想要一个包含被调用模板结果的变量,请执行:

<xsl:template match="/">
    <xsl:variable name="result">
        <xsl:call-template name="call_me" />
    </xsl:variable>
    ...
</xsl:template>

这假设被调用的模板返回某种结果,例如:

<xsl:template name="call_me">
    <xsl:value-of select="some-node" />
</xsl:template>