我的XSL文件中有两段代码。
1)
<xsl:call-template name="Info">
<xsl:with-param name="parententry" select="a:feed/a:entry/@href" />
</xsl:call-template>
2)
<xsl:template name="Info">
<xsl:param name="parentEntry" />
<xsl:variable name="parententryauthorname">
<xsl:value-of select="a:author/a:name" />
</xsl:variable>
<xsl:variable name="info2">
<xsl:value-of select="$parentEntry" />
</xsl:variable>>
<input name="info2" type="hidden" value="{$info2}" />
<input name="parententryauthorname" type="hidden" value="{$parententryauthorname}" />
</xsl:template>
我想要做的是在第一段代码中为“parententry”赋值,然后在第二位引用它。当我在“信息”模板中时,我想进一步处理“parententry”中指定的值以获取作者的姓名。
现在,当我尝试打印$ info2和$ parententryauthorname的值时,它们都是空的。
有什么建议吗?
答案 0 :(得分:0)
此样式表:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:atom="http://www.w3.org/2005/Atom"
exclude-result-prefixes="atom">
<xsl:template match="/">
<xsl:apply-templates select="*/atom:entry" mode="form"/>
</xsl:template>
<xsl:template match="atom:entry" mode="form">
<input name="info2" type="hidden"
value="{atom:link[@rel='alternate']/@href}" />
<input name="parententryauthorname" type="hidden"
value="{atom:author/atom:name}" />
</xsl:template>
</xsl:stylesheet>
使用此页面的Feed,输出:
<input name="info2" type="hidden" value="http://stackoverflow.com/questions/3754954/how-to-refer-a-variable-within-xsl-from-one-function-to-another-function" />
<input name="parententryauthorname" type="hidden" value="Java Doe" />
<input name="info2" type="hidden" value="http://stackoverflow.com/questions/3754954/how-to-refer-a-variable-within-xsl-from-one-function-to-another-function/3755184#3755184" />
<input name="parententryauthorname" type="hidden" value="Alejandro" />
注意:以不同方式处理节点时,模式是正确的工具。
修改:使用新Feed更新输出。只是为了好玩!