This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: last attribute ?
- To: xsl-list at mulberrytech dot com
- Subject: Re: last attribute ?
- From: David Carlisle <davidc at nag dot co dot uk>
- Date: Tue, 26 Sep 2000 13:05:39 GMT
- References: <11CD408013B6D2119BB50008C7EA510C03ED06D7@eseis05nok>
- Reply-To: xsl-list at mulberrytech dot com
> I tried e.g: (idea: if you are last attribute of current node don't do this
> if)
>
> <xsl:if test="@*[position() != last()]">
> <xsl:text>,</xsl:text>
> </xsl:if>
I suspect (but you didn't say) that you tried that in the template you
are using for attributes, in which case the @* is testing the attributes
of the attribute.
You want
<xsl:if test="position() != last()">
<xsl:text>,</xsl:text>
</xsl:if>
in your template (or for-each) for attributes.
> but position function can't count attributes ??
it counts nodes of any sort.
so something like (untested)
<xsl:template match="test">
<xsl:attribute name="attributes">
<xsl:for-each select="@*">
<xsl:sort select="name()"/> <!-- optional -->
<xsl:value-of select="name()">
<xsl:text>="</xsl:text>
<xsl:value-of select="."/>
<xsl:text>"</xsl:text>
<xsl:if test="position() != last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:attribute>
</xsl:template>
David
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list