Re: Re: [xsl] Introducing a comma.

Subject: Re: Re: [xsl] Introducing a comma.
From: Paul DuBois <paul@xxxxxxxxxxxx>
Date: Tue, 18 Nov 2003 12:49:05 -0600
On Tue, Nov 18, 2003 at 01:08:39PM -0500, cknell@xxxxxxxxxx wrote:
> Sorry if another version of this appears without the stylesheet. I expected this stylesheet to work just the way the example shown in the spec does, but the comma appears after all instances of <in>. Can anyone see what I'm missing?
> 
> <?xml version="1.0" encoding="UTF-8" ?>
> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>   <xsl:output method="xml" indent="yes" encoding="UTF-8" />
> 
>   <xsl:template match="/signature">
>     <signature>
>       <xsl:apply-templates />
>     </signature>
>   </xsl:template>
> 
>   <xsl:template match="*">
>     <xsl:choose>
>       <xsl:when test="name() = 'in'">
>         <xsl:copy-of select="." />
>         <xsl:if test="not(position() = last())">
>           <xsl:text>,</xsl:text>
>         </xsl:if>
>       </xsl:when>
>       <xsl:otherwise>
>         <xsl:copy-of select="." />
>       </xsl:otherwise>
>     </xsl:choose>
>   </xsl:template>
> 
> </xsl:stylesheet>
> -- 
> Charles Knell
> cknell@xxxxxxxxxx - email

Your input document is:

<signature>signature <identifier>DNSQuery</identifier>
   <in>in<long>long</long><identifier>a</identifier></in>
   <in>in<string>string</string><identifier>b</identifier></in>
   <in>in<float>float</float><identifier>c</identifier></in>
</signature>

I suppose you are expecting position() to be 1, 2, or 3, and last() to
be 3.  But they're not.  You have text nodes (both empty and non-empty)
within your <signature> element.

For your document,  position() is 4, 6, and 8, and last() is 9.

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


Current Thread