RE: [xsl] using position() and last() with join

Subject: RE: [xsl] using position() and last() with join
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 29 May 2008 17:21:23 +0100
You haven't shown us what $lessonFile is, but my guess is that it's a
singleton document node. If that's true, then position() and last() are both
1, so position()!=last() is false.

Did you want the newlines between the things copied by the xsl:copy-of,
perhaps?

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

> -----Original Message-----
> From: Terry Ofner [mailto:tofner@xxxxxxxxxxx] 
> Sent: 29 May 2008 17:03
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] using position() and last() with join
> 
> I am attempting to insert a return (&#10;) after each element 
> but the last of a node set generated by a join. I am building 
> a table  in which one or more lesson names will be pulled 
> into the right-hand cell of each row. The join works fine.
> 
> Here is the part of the stylesheet in question:
> 
>   <xsl:for-each-group select="current-group()/SS" 
> group-by="."> <!--left-hand cell text selected from main xml 
> document-->
>             <Cell aid:table="cell" aid:crows="1" aid:ccols="1"  
> aid:ccolwidth="342.5">
>                <xsl:copy-of select="node()"/>
>            </Cell>
> 
> <!--right-hand cell; nodes from $lessonFile-->
>           <Cell aid:table="cell" aid:crows="1" aid:ccols="1"  
> aid:ccolwidth="197.">
>                <xsl:variable name="skillNumber" 
> select="current-group ()/../@skill"/>
>                    <xsl:for-each select="$lessonFile">
> 
>                      <xsl:copy-of 
> select="key('lessonName_by_num', $skillNumber)/child::node()" />
> 
> <!--the if statement below does nothing here or directly 
> above the copy-of line-->
> 
>                      <xsl:if test="position() != last()"> 
> <xsl:text>&#10;</xsl:text> </xsl:if>
>           </xsl:for-each>
>        </Cell>
>               </xsl:for-each-group>
> 
> 
> 
> Thanks in advance for any suggestions.
> 
> 
> Terry Ofner

Current Thread