Этого можно добиться в XSLT с помощью рекурсивного шаблона для итерации на основе элемента photocount
Попробуйте следующий XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="root">
<root>
<response>
<xsl:call-template name="photo">
<xsl:with-param name="name" select="photoname"/>
<xsl:with-param name="count" select="photocount"/>
</xsl:call-template>
</response>
</root>
</xsl:template>
<xsl:template name="photo">
<xsl:param name="name"/>
<xsl:param name="count"/>
<xsl:param name="current" select="1" />
<images>
<image>
<small>
<xsl:value-of select="concat($name, '_', $current, '_120.jpg')"/>
</small>
</image>
</images>
<xsl:if test="not($current >= $count)">
<xsl:call-template name="photo">
<xsl:with-param name="name" select="$name"/>
<xsl:with-param name="count" select="$count"/>
<xsl:with-param name="current" select="$current + 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Применительно к вашему образцуXML, выводится следующее:
<root>
<response>
<images>
<image>
<small>image_1_120.jpg</small>
</image>
</images>
<images>
<image>
<small>image_2_120.jpg</small>
</image>
</images>
<images>
<image>
<small>image_3_120.jpg</small>
</image>
</images>
</response>
</root>
Обратите внимание, что я не знал, как был создан суффикс _120 , поэтому мне пришлось жестко кодировать его в XSLT.