我有一个 xsl,它看起来像:
<xsl:param name="relativeURL"/>
<xsl:param name="isPersonalPage" />
<xsl:template match="/">
<xsl:call-template name="main_level" >
<xsl:with-param name="urlMatched" select="siteMap/siteMapNode/siteMapNode/@url= $relativeURL" />
</xsl:call-template>
</xsl:template>
<xsl:template name="main_level" match="/">
<div>
<xsl:param name="urlMatched" />
<xsl:for-each select="siteMap/siteMapNode/siteMapNode">
<xsl:choose>
<xsl:when test="(@url = $relativeURL)">
<a class="top_link active">
<xsl:attribute name="href">
<xsl:value-of select="@url"/>
</xsl:attribute>
<xsl:value-of select="@topNavTitle"/>
</a>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="($isPersonalPage = 'true') and (!($urlMatched))">
<a class="top_link active">
<xsl:attribute name="href">
<xsl:value-of select="@url"/>
</xsl:attribute>
<xsl:value-of select="@topNavTitle"/>
</a>
</xsl:when>
<xsl:otherwise>
<a class="top_link">
<xsl:attribute name="href">
<xsl:value-of select="@url"/>
</xsl:attribute>
<xsl:value-of select="@topNavTitle"/>
</a>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
所以,基本上我需要遍历节点并查看任何节点的 url 属性是否与特定 URL 匹配。如果是这样,将变量的值设置为其他东西。然后在被调用的模板“main_nav”中,我希望根据“urlMatched”变量的值做一些事情。但我不确定我是否可以在两者之间更改变量的值。谁能帮我解决这个问题?