такая конструкция не работает <xsl:if test=" .//property[@name = 'photo']/value != '' "> в принципе, нужно писать так <xsl:if test=" not(.//property[@name = 'photo']/value = '') ">
я бы сделал так, если других каких-то ненужных полей с photo в названии нет)
<xsl:apply-templates select=".//property[contains(@name, 'photo')]" mode="yml-photo">
<xsl:with-param name="domain" select="/umidump/meta/domain" />
</xsl:apply-templates>
и шаблон
<xsl:template match="property" mode="yml-photo" />
<xsl:template match="property[not(value = '')]" mode="yml-photo">
<xsl:param name="domain" />
<picture>
<xsl:value-of select="concat('http://', $domain, value)"/>
</picture>
</xsl:template>
p/s/ и друзья, давайте код все-таки вставлять в соответствующие теги, чтобы всем было удобно его читать
Передает следующее
<group name="opisanie_tovara">
<title>Описание товара</title>
<property id="497" name="photo" type="img_file" is-important="0">
<title>Фотография</title>
<value path="./images/cms/data/import_a8a3bb41701c1e385454bd2ef891223f_19_01_2016/d4214ed081130b040993623069dd7990.jpg" folder="/images/cms/data/import_a8a3bb41701c1e385454bd2ef891223f_19_01_2016" name="d4214ed081130b040993623069dd7990" ext="jpg" width="400" height="570" is_broken="0">/images/cms/data/import_a8a3bb41701c1e385454bd2ef891223f_19_01_2016/d4214ed081130b040993623069dd7990.jpg</value>
</property>
<property id="521" name="photo_2" type="img_file" is-important="0">
<title>Фотография 2</title>
<value path="./" is_broken="1">/</value>
</property>
<property id="522" name="photo_3" type="img_file" is-important="0">
<title>Фотография 3</title>
<value path="./" is_broken="1">/</value>
</property>
</group>