XSLT 1.0 не распознает даты. Выполнение releaseDate > 2018-09-15
фактически аналогично выполнению releaseDate > 1992
(потому что оно анализируется как числовое выражение, а 2018 - 09 - 15 = 1992)
Вы можете попробовать поместить его в апострофах, например releaseDate > '2018-09-15'
, но это тоже не сработает, потому что сравнение строк ограничено в XSLT 1.0, и поэтому оператор >
не работает с строками.
Итак, что вы можете сделать (в XSLT 1.0) - перевести строки в числа (удалив дефисы) и выполнить числовое сравнение
<xsl:if test="number(translate(releaseDate, '-', '')) > 20180915">
В качестве альтернативы, перейдите на XSLT 2.0, который может обрабатывать даты, тогда вы можете сделать ...
<xsl:if test="xs:date(releaseDate) > xs:date('2018-09-15')">
Обратите внимание, что в качестве отдельного условия вы можете поместить условие if в саму xsl:for-each
<xsl:for-each select="//magadvert[number(translate(releaseDate, '-', '')) > 20180915]">