posto il codice per coloro che hanno o avranno lo stesso problema.
esso permette di gerarchizzare i dati provenienti dal db nel classico formato xml a righe e trasformarlo in un albero.
codice:<xsl:template match="rs:data"> <xsl:for-each select="//rs:data/z:row[not(@COD_ABI = preceding-sibling::z:row/@COD_ABI)]/@COD_ABI"> <xsl:variable name="curr_abi" select="current()"/> <tr> <td class="Costanti" align="center" valign="top"> <xsl:value-of select="current()"/> </td> <td colspan="2" valign="top"> <xsl:for-each select="//rs:data/z:row[not(@ID_ESITO = preceding-sibling::z:row[@COD_ABI = $curr_abi]/@ID_ESITO) and (@COD_ABI = $curr_abi)]/@ID_ESITO"> <xsl:variable name="classeRiga"> <xsl:choose> <xsl:when test="position() mod 2 = 1">odd</xsl:when> <xsl:otherwise>even</xsl:otherwise> </xsl:choose> </xsl:variable> <table width="100%" cellspacing="0"> <tr class="{$classeRiga}"> <td class="Costanti"> <xsl:value-of select="../@ESITO"/>  </td> <td class="Costanti" align="center" width="50"> <span style="color: red;font-weight:bold;"><xsl:value-of select="count(/xml/rs:data/z:row[@ID_ESITO = current() and @COD_ABI = $curr_abi])"/></span> </td> </tr> </table> </xsl:for-each> </td> </tr> </xsl:for-each> </xsl:template>