Хе-хе
В данном случае вы слишком уж загнули
Эта задача решается проще, средствами одного лишь XSLT, точнее его расширения - EXSLT. Libxml, используемая в php поддерживает очень многие из этих раcширений, чем мы и воспользуемся.
У нас же для вычисления числа дней есть в XML почти все необходимые данные. Нет только текущей даты. Поэтому мы передадим ее в ТДС:
$external_propertys['today'] = date('Y-m-d', time());
и больше на php нам ничего делать не нужно.
А теперь в XSL делаем следующее: в тег xsl:stylesheet нужно дописать неймспейс date и исключить его из вывода
xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="date"
И потом, в темплейте item мы можем сделать такую штуку:
<!--текущая дата-->
<xsl:variable name="today" select="/shop/today"/>
<!--для совместимости с версиями 5 и 6 сразу-->
<xsl:variable name="end_date" select="putend_date|end_datetime"/>
<!--если дата окончания определена-->
<xsl:if test="not(contains($end_date, '0000'))">
<!--сформатируем дату правильно-->
<xsl:variable name="end" select="concat(substring($end_date,7,4), '-', substring($end_date,4,2), '-', substring($end_date,1,2))"/>
<!--вычислим число дней до окончания-->
<xsl:variable name="duration" select="substring-before(substring-after(date:difference($today, $end), 'P'), 'D')"/>
<!--выведем значение-->
<xsl:value-of select="$duration"/>
</xsl:if>
И все
Способ подходит и для 5й версии и для 6й, пригоден как для вывода карточки товара так и для вывода группы товаров.