@ Решение Томалака не совсем корректно и даст неправильный результат в случае, когда есть вложенные таблицы.
Причина этого в том, что XPath preceding
и *Оси 1006 * не перекрываются.
Одно правильное выражение XPath, которое дает искомое число:
count(ancestor::table | preceding::table) + 1
Итак, используйте :
<xsl:template match="table">
<table id="tbl_{count(ancestor::table | preceding::table) + 1}">
<!-- further processing -->
</table>
</xsl:template>