如何将XSL中的变量从一个函数引用到另一个函数?

时间:2010-09-20 19:49:45

标签: xslt

我的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的值时,它们都是空的。

有什么建议吗?

1 个答案:

答案 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更新输出。只是为了好玩!