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]

Re: Carrying variable value outside for-each loop


sridhar raman <thotha3@yahoo.com> wrote:
> Hi,
>   I have the following xsl structure.
>   <xsl:for-each>
>      <xsl:if <condition>>
>         <!--set a variable value to "true"-->
>      </xsl:if>
>   </xsl:for-each>
>   <!--would like to use the variable value here-->
> 
> But unfortunately, the variable value becomes empty
> outside the for-each scope. So what should I do to
> have the variable retain its acquired value. Can I use
> global variable, if so how?

Variables in XSL are quite different from variables in
most other programming languages.
You have already been told a possible solution for your
problem. This solution:

 <xsl:variable name="status">
   <xsl:for-each select="$node-set>
     <xsl:if test="condition">
        <xsl:value-of select="true()"/>
     </xsl:if>
   </xsl:for-each>
 </xsl:variable>

has some pitfalls: in the sample code Mr.Rajkumar provided,
the test="$status" is always true, you need to test string($status).
There may be better solutions, depending on what you actually
want to do.

If you want to test whether there are nodes fulfilling
a certain condition within a given node set, you can
try

  <xsl:if test="$node-set[condition]">
    <!-- your code here -->
  </xsl:if>

directly.

HTH
J.Pietschmann

 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]