Also das xsl sieht nicht sehr performant aus. Ich wuerde nicht xsl:for-each einsetzen, sondern apply-template select="... Darüber hinaus würde ich mir variablen erzeugen, die pro tabelle etwa anzahl der col und wert der aktuellen col ausgeben.
du kannst du werte bestimmen, in dem du mit xpath navigierst und diese zählen lässt. perceding-sibling::* parent::* & co sollten hier weiterhelfen.
Du könntest auf den aktuellen knoten abfragen mit einer eigenen funktion, sofern du xslt2.0 verwendest.