Hi,
You want something in the lines of
<xsl:template match="root">
<TABLE>
<TR>
<xsl:for-each select="box">
<TH>
<xsl:value-of select="@boxref" />
</TH>
</xsl:for-each>
</TR>
<xsl:for-each select="box">
<xsl:sort select="count(tin)" data-type="number" order="descending"/>
<xsl:if test="position() = 1">
<xsl:for-each select="tin">
<xsl:variable name="position" select="position()"/>
<TR>
<xsl:for-each select="../../box">
<TD>
<xsl:value-of select="tin[$position]/@tinid"/>
</TD>
</xsl:for-each>
</TR>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</TABLE>
</xsl:template>
I.e. first process the head, then get the max number of tin children in a box
so you know how many rows you need to create, and then loop through the box
elements using the tin that is of the "corresponding index".
Cheers,
Jarno - Bruderschaft: Forever (remix by Feindflug feat. Aeroflot)
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list