xsl-list
[Top] [All Lists]

RE: Cannot select a node here: the context item is an atomic value

2005-04-05 10:28:51
You'll need to set a variable outside the outer loop, and in the inner loop
do something like

<xsl:for-each select="$s/my/xpath/query[(_at_)day=$day]">

In fact, you might as well select the whole path in the variable and just
use

<xsl:for-each select="$s[(_at_)day=$day]"> 

I would tend to use .-1 rather than position()-1, but the effect is the
same. Actually, I would probably not build the duration from a string, but
rather from:

<xsl:variable name="one-day" select="xs:dayTimeDuration('P1D')"/>  (global
variable)

then in the loop:
<xsl:variable name="day" select=". * $one-day"/>

Michael Kay
http://www.saxonica.com/

-----Original Message-----
From: chris [mailto:oneskiingfool(_at_)gmail(_dot_)com] 
Sent: 05 April 2005 18:11
To: xslt
Subject: [xsl] Cannot select a node here: the context item is 
an atomic value

Hello,
I'm using XSLT/XPath 2.0 and am stuck on a very basic problem again. 
All I want to do is nest my for-each loop inside another loop so that
the inner for-each loops executes x number of times.
To be more specific, I'm creating an HTML table with dates running
down the left column and corresponding values in the rest of the
cells.
So I have date range: $date1 to $date2
I calculated the number of days between the two: $dayCount

<xsl:for-each select="1 to $dayCount">
   <xsl:variable name="day" select="($date1+
xdt:dayTimeDuration(concat('P',position()-1,'D')))"/>
   <tr>
     <td>
       <xsl:value-of 
select="format-dateTime($day,'[Y,*-2]-[M,2]-[D,2]')"/>
     </td>
     <xsl:for-each select="my/xpath/query[(_at_)day=$day]">
       <td>
          <xsl:value-of select="."/>
       </td>
     </xsl:for-each>
   </tr>
</xsl:for-each>


The inner loop gives me this error:
Cannot select a node here: the context item is an atomic value

Could somebody kindly let me know how to do this?  It's clearly stated
in the documentation that I can't do it this way (nest node loops in
atomic loops), but I don't see a workaround.

P.S. Also any hints if there is a better way to do that outer loop
would be appreciated as well.

Thanks!

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--