This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: last attribute ?



> 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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]