Axiomateria , это базовые примеры работы с xslt
xsl:value-of выводит только одно значение (если их несколько, то первое из списка), даже если в атрибуте select был указан путь, который подходит для нескольких узлов (например <xsl:value-of select="//property" />)
xsl:apply-templates выводит все узлы, которые соответствуют xpath, указанному в атрибуте select. И выводит он их по какому-то шаблону.
То есть, в вашем случает, надо через xsl:apply-templates перебрать все значения которые есть в поле "ссылка на дерево", а в шаблоне, по которому будут выводиться данные значения обращаться к upage и вытягивать то что вам надо.
Получиться примерно так:
1. перебрать на странице товара "тур" все страницы, выбранные в поле "ссылка на дерево" (поле = 'days_program'). Поместим список страниц из поля "ссылка на дерево" в переменную, чтобы все было наглядней, и выведем её:
<xsl:variable name="days_program_pages" select="//property[@name = 'days_program']/value/page" />
2. переберем все полученые страницы (даже если там одна страница все равно переберем)
<xsl:apply-templates select="$days_program_pages" mode="days_program_pages"/>
3. напишем отдельный шаблон для этого вызова в котором будем обращаться к upage протоколу и вытягивать поле photo
<xsl:templates match="page" mode="days_program_pages">
<xsl:variable name="page_info" select="document(concat('upage://',$days_program_page_id))/udata" />
<xsl:value-of select="$page_info//property[@name='photo']/value" />
</xsl:templates>
P.S. для вывода полей группы вам также понадобиться apply-templates
<xsl:apply-templates select="$days_program_page//group[@name='day_schedule']/property" mode="property_value_template"/>
и отдельный шаблон
<!--основной шаблон для всех property-->
<xsl:templates match="property" mode="property_value_template" />
<!--уточняющий шаблон для всех property со значением-->
<xsl:templates match="property[value]" mode="property_value_template">
<xsl:value-of select="title" />:<xsl:value-of select="value" />
</xsl:templates>