Используйте count(preceding-sibling::*)+1
, чтобы получить индекс текущего элемента.
Полный пример:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- identity transform -->
<xsl:template match="node()|@*">
<xsl:copy><xsl:apply-templates select="node()|@*"/></xsl:copy>
</xsl:template>
<!-- override for picture elements to rename element -->
<xsl:template match="picture">
<xsl:element name="{name()}{count(preceding-sibling::*)+1}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>