Рекурсивный именованный шаблон может сделать это:
<xsl:template name="processNode">
<xsl:param name="current" select="1"/>
<xsl:variable name="currentNode" select="*[local-name() = concat('node', $current)]"/>
<xsl:if test="$currentNode">
<!-- Process me -->
<xsl:call-template name="processNode">
<xsl:with-param name="current" select="$current + 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
Или, если вам не важен порядок, просто обычный шаблон:
<xsl:template match="*[starts-with(local-name(), 'node')]">
</xsl:template>