Передача переменной XSLT из XSL в другую, вызываемую шаблоном вызова - PullRequest
1 голос
/ 29 октября 2011

У меня есть 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.xsl через шаблон вызова, потому что я получаю сообщение об ошибке, как "Значение переменной" не было объявлено "....

Причина, по которой я это делаю, заключается в том, что мне нужно указать, какая кнопка должна быть выделена.

Спасибо!

1 Ответ

3 голосов
/ 29 октября 2011

Использование 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>
...