Sorry I tidied your sample xml incorrectly and was working with bad data
(I put the software value inside hardware..) I see what you are trying
to do now :)
This might be what you need:
<xsl:stylesheet version="1.0"
xmlns:exsl="http://exslt.org/common"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="firstVar-rtf">
<xsl:apply-templates select="/root/thing" mode="number">
<xsl:sort select="@sequenceIndex" order="ascending"
data-type="number"/>
</xsl:apply-templates>
</xsl:variable>
<xsl:variable name="firstVar" select="exsl:node-set($firstVar-rtf)"/>
<xsl:template match="/">
<xsl:for-each select="$firstVar">
<xsl:apply-templates/>
</xsl:for-each>
</xsl:template>
<xsl:template match="thing" mode="number">
<thing id="{generate-id()}" key="{(_at_)key}">
<xsl:apply-templates select="thing" mode="number">
<xsl:sort select="@sequenceIndex" order="ascending"
data-type="number"/>
</xsl:apply-templates>
</thing>
</xsl:template>
<xsl:template match="thing">
<div>
<xsl:number format="1.1.1" level="multiple"/>
<xsl:text/> - <xsl:value-of select="@key"/>
</div>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
Cheers
andrew
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list