重用 XSLT 中选择内部和选择外部定义的变量
我有一段与此类似的代码:
<xsl:choose>
<xsl:when test="some_test">
<xsl:value-of select="Something" />
You are:
<xsl:variable name="age">12</xsl:variable>
years
</xsl:when>
</xsl:choose>
我的问题是我想在选择之外使用变量 $age 。我该怎么做?
类似的问题是我的 XSLT 文件中有多个模板,其中之一是主模板。这个:
<xsl:template match="/">
</xsl:template>
在此模板内部,我调用了其他几个模板,并且我想再次使用其他模板中的一些变量。
例如,如果我有以下代码:
<xsl:template match="/">
<xsl:call-template name="search">
</xsl:call-template>
</xsl:template>
<xsl:template name="search">
<xsl:variable name="searchVar">Something...</xsl:variable>
</xsl:template>
那么我想在主模板中使用 $searchVar 。
我认为这是同一个问题,但我似乎无法解决这个问题。
顺便说一句,我运行 Umbraco 作为我的 CMS :)
我希望你们中的一些人能找到答案。
谢谢 - 金
I have a piece of code that look similar to this:
<xsl:choose>
<xsl:when test="some_test">
<xsl:value-of select="Something" />
You are:
<xsl:variable name="age">12</xsl:variable>
years
</xsl:when>
</xsl:choose>
My problem is that I would like to use the variable $age outside of the choose. How do I do that?
A similar problem is that I have several templates in my XSLT-file, and one of them is the main template. This one:
<xsl:template match="/">
</xsl:template>
Inside of this template, I call several other templates, and again I would like to use some of the variables from the other templates.
In example, if I have this code:
<xsl:template match="/">
<xsl:call-template name="search">
</xsl:call-template>
</xsl:template>
<xsl:template name="search">
<xsl:variable name="searchVar">Something...</xsl:variable>
</xsl:template>
Then I would like to use the $searchVar inside of my main-template.
It's kind of the same issue I think, but I can't seem to figure this one out.
And I run Umbraco as my CMS by the way :)
I hope that some of you have the answer.
Thanks
- Kim
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
查看 xsl:param。
编辑:未经测试,但可能有效:
Have a look at xsl:param.
Edit: Untested, but may work:
对于#1:变量仅在其父元素内有效。这意味着您必须将逻辑放在变量内部,而不是“围绕”变量:
#2:使用参数将值传输到模板中。
要将值传输回调用模板,请结合以上内容:
To #1: Variables are valid within their parent element only. Which means you must put the logic inside the variable instead of "around" it:
To #2: Use parameters to transport values into templates.
To transport a value back to the calling template, combine the above: