RE: [xsl] Looping and assigning into variable

Subject: RE: [xsl] Looping and assigning into variable
From: Meiyu Lin <MeiyuL@xxxxxxxxxxx>
Date: Thu, 28 Mar 2002 11:29:15 -0800
Hi Michael,
This is just what I am looking for but I just tried the following:
var categorySelect = new Array(30);
var driverName = new Array(30); 
var driverDesc = new Array(30);

   <xsl:for-each select= "driverlist">
   <comment>
      categorySelect[techInd] = '<xsl:value-of select="category" />'
      driverName[techInd] = '<xsl:value-of select="drivername" />'
      driverDesc[techInd++] = '<xsl:value-of select="driverdesc" />'
	</comment>
   </xsl:for-each> 
   <xsl:for-each select= "bsqapplist">
   <comment>
      categorySelect[appInd] = '<xsl:value-of select="bsqappcategory" />'
      driverName[appInd] = '<xsl:value-of select="bsqappname" />'
      driverDesc[appInd++] = '<xsl:value-of select="bsqappdesc" />'
   </comment>
   </xsl:for-each>

I tried 
      categorySelect[techInd] = <xsl:value-of select="category" />
The results for the vars are undefined.  Could you tell me what did I do
wrong?  Thank you.

Meiyu

-----Original Message-----
From: Michael Kay [mailto:michael.h.kay@xxxxxxxxxxxx] 
Sent: Thursday, March 28, 2002 8:54 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Looping and assigning into variable

> How can I do this in XSLT?

Not by trying to update a variable, that's not the way XSLT works.

Do it like this:

<xsl:variable name="commentVar">
  <xsl:for-each select="Header">
    <xsl:value-of select="Comment"/>
  </xsl:for-each>
</xsl:variable>

<Comments>
  <xsl:value-of select="$commentVar"/>
</Comments>

Of course, you might not need a variable at all, you can just do the
xsl:for-each inside the <Comments> element.

In XPath 2.0 / Saxon 7.0, you can just do:

<Comments>
  <xsl:value-of select="Header/Comment" separator=""/>
</Comments>

Michael Kay
Software AG
home: Michael.H.Kay@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx

>
> 	<xsl: variable name="CommentVar"/>
>
> 	<xsl:for-each select="Header">
>
> 		<!-- here i would like to get the current 'Comment'
> value and
> 			concatenate with the previous comment value
> through above 'CommentVar', something like below-->
> 		<xsl:value-of
> select="CommentVar=concat(Comment,$CommentVar)"/>
>
> 	</xsl:for-each>
>
> 	<!-- here I would like to get the concatenated list of all
> 'Comment' values -->
> 	<Comments>
> 		<xsl:value-of select="$CommentVar"/>
> 	</Comments>
>
> Basically Each 'Header' element has 1 'Comment' child element
> in it. So
> I have to loop through all headers and finally get the
> complete list of
> concatenated 'Comment's
>
>
> Thanks in advance..
> VENKAT
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>


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

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


Current Thread