This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Global variable in included stylesheet


Hello Andrey,

include means, that every template in 2.xsl is copied to 1.xsl and will be
used there. Your 2.xsl-template can't work as expected, because your global
variable is empty. You only have a local variable declared in the first
template in 1.xsl. You may not handle variables like in Java or other
programming languages. In XSLT it's not possible to reassign a value to
them. If you change your first variable declaration in 1.xsl to
<xsl:variable name="DefaultLanguageID"
select="/global-settings/parameter[@name='DefaultLanguageID']/@value"/>, you
will see the expected output. Now the global variable has the value.

Regards,

Joerg

----- Original Message -----
From: "Andrey Astakhov" <paranorm@yandex.ru>
To: <xsl-list@lists.mulberrytech.com>
Sent: Thursday, February 21, 2002 8:02 AM
Subject: [xsl] Global variable in included stylesheet


> Hello!
>
> I have xml file (global.xml) and two xsl files (1.xsl, 2.xsl).
> File global.xml is transformed with the stylesheet 1.xsl.
> File 2.xsl is included in 1.xsl.
>
> This files here:
>
> File global.xml
>
> <?xml version="1.0"?>
> <global-settings>
>
> <supporting-languages>
> <language ID="En" caption="English"/>
> <language ID="De" caption="German"/>
> </supporting-languages>
>
> <parameter name="DefaultLanguageID" value="En"/>
> <parameter name="DefaultMenuItemID" value="miCommonInformation"/>
>
> </global-settings>
>
>
> --------------------------------------------------
>
> File 1.xsl
>
> <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>
> <xsl:include href="2.xsl"/>
>
> <xsl:variable name="DefaultLanguageID"/>
>
> <xsl:template match="global-settings">
> <xsl:variable name="DefaultLanguageID"
select="parameter[@name='DefaultLanguageID']/@value"/>
>
> <!-- Display variable value in 1.xsl -->
>
> <hr/>
> [1.xsl]: <xsl:value-of select="$DefaultLanguageID"/>
> <hr/>
>
> <xsl:apply-templates select="parameter"/>
>
> </xsl:template>
>
> </xsl:stylesheet>
>
> -----------------------------------------------------
>
> File 2.xsl
>
> <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>
> <xsl:template match="parameter">
>
> It is the parameter
>
> <!-- Display variable value in 2.xsl -->
>
> [2.xsl]: <xsl:value-of select="$DefaultLanguageID"/>
> <br/>
> </xsl:template>
>
> </xsl:stylesheet>
>
> ----------------------------------------------------
>
>
>
>
> After the transforming i see:
>
> -----------------
> [1.xsl]: En
> -----------------
> It is the parameter
> [2.xsl]:
> It is the parameter
> [2.xsl]:
>
>
> The problem - i cann't get the value of global variable $DefaultLanguageID
in included stylesheet 2.xsl.
> I thought all global variables must be available anywhere.
>
> Is it wrong?
> How can i obtain $DefaultLanguageID in 2.xsl?
>
> ...and sorry for my poor English...
>
> Best regards,
> Andrey
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]