[
Lists Home |
Date Index |
Thread Index
]
xsl-list is better than xml-dev for this sort of question.
The scope of a variable declaration is its containing element so in
<xsl:when test="@header_name != $header_name1">
<xsl:variable name="bFound">false</xsl:variable>
</xsl:when>
> I know that when the </xsl:choose> is reached that the variable looses its
> scope.
the scope of $bfound is _just_ that xsl:when element ie it's out of
scope before the close of the choose element.
You don't want to conditionally define a variable, you want to define a
variable with a value that depends on a condition, so you have
xsl:variable and xsl:choose nested the wrong way:
<xsl:variable name="bFound">
<xsl:choose>
<xsl:when test="@header_name = $header_name1">true</xsl:when>
<xsl:when test="@header_name != $header_name1">false</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:if test="$bFound='false'">...
that's the general case but here you don't need an xsl:choose at all as
you just want to set the variable to the boolean value directly
<xsl:variable name="bFound" select="@header_name = $header_name1"/>
<xsl:if test="$bFound">....
The rest of the code could be greatly simplified as well:
<xsl:variable name="header_name1"><xsl:value-of
select="@header_name"/></xsl:variable>
is a a verbose (and costly) version of
<xsl:variable name="header_name1" select="@header_name"/>
<header>
<xsl:attribute name="header_name"><xsl:value-of
select="@header_name"/></xsl:attribute>
</header>
is a verbose version of
<header header_name="{@header_name}"/>
David
_____________________________________________________________________
This message has been checked for all known viruses by Star Internet
delivered through the MessageLabs Virus Scanning Service. For further
information visit http://www.star.net.uk/stats.asp or alternatively call
Star Internet for details on the Virus Scanning Service.
|