This is a fairly standard grouping problem, it would be easier in xslt2
but in xslt 1 you want to use keys as explained on Jeni's site.
In your case you want to group things based on the following ve with
three . in its pos attribute so your key is
<xsl:key name="x" match="ve"
use="(.|folowing-sibling::ve)
[string-length(@pos)=3+string-length(translate(@pos,'.',''))][1]/@pos"/>
then something like (untested)
<xsl:for-each
select="ve[string-length(@pos)=3+string-length(translate(@pos,'.',''))]">
<tr>
<xsl:for-each select="key('x',@pos)">
<td><xsl:value-of select="."/></td>
</xsl:for-each>
</tr>
</xsl:for-each>
David
--
http://www.dcarlisle.demon.co.uk/matthew
________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list