将XSLT变量从XSL传递到另一个由调用模板调用的变量

时间:2011-10-28 21:53:28

标签: xml tags xslt xslt-1.0

我有2个文件。

1→index.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <!-- Includes -->
    <xsl:include href="navigation.xsl" />
    <xsl:include href="head.xsl" />

    <xsl:template match="/">

    <!-- WANT TO PASS THIS VARIABLE TO navigation.xsl-->
    <xsl:variable name="value" select="1"/>
    <!-- WANT TO PASS THIS VARIABLE TO navigation.xsl-->

    <html>
        <head>
            <!-- Basic -->
            <xsl:call-template name="HtmlBasicHead"/>
            <!-- Seo -->
            <title>Impress</title>
            <meta name="description" content="..." />
            <meta name="keywords" content="..." />
        </head>

        <body>
            <div id="main">

                <xsl:call-template name="Header"/>

                <xsl:call-template name="NavigationMenu"/>

            </div>
        </body>
    </html>

    </xsl:template>

</xsl:stylesheet>

2→navigation.xsl

<xsl:template name="NavigationMenu">
    <!-- NAVIGATION MENU BEGIN -->
    <div id="tray">
    <ul>
        <xsl:if test="$value='1'">
        VALUE IS 1
        </xsl:if>

        <li id="tray-active"><a href="#">Homepage</a></li>
        <li><a href="#">Live demo</a></li>
        <li><a href="#">About product</a></li>
        <li><a href="#">Testimonials</a></li>
        <li><a href="#">Download</a></li>
        <li><a href="#">Purchase</a></li>

    </ul>
    <!-- NAVIGATION MENU END -->
</xsl:template>

我试图做的是在index.xsl中声明变量,并且仍然通过call-template在navigation.xsl中使用它,因为我收到的错误如“变量'值'尚未声明。” ....

我这样做的原因是因为我需要指定应突出显示的按钮。

谢谢!

1 个答案:

答案 0 :(得分:3)

使用xsl:with-param

http://www.w3schools.com/xsl/el_with-param.asp

以下列方式修改navigation.xsl

<xsl:template name="NavigationMenu">
   <xsl:param name="value" />
   ...

然后以这种方式从index.xsl调用它

<xsl:call-template name="NavigationMenu">
   <xsl:with-param name="value" select="1" />
</xsl:call-template>