Одной из возможных причин такого поведения является то, что строковое значение ShippingName
состоит только из пробельных символов.
Решение
Либо использовать :
<xsl:strip-space elements="ShippingName"/>
или замените :
<xsl:if test="ShippingName != ''">
с
<xsl:if test="normalize-space(ShippingName)">
Стандартная функция XPath normalize-space
создает новую строку из своего аргумента someString
, в которой все начальные и конечные пробелы отбрасываются, а любые промежуточные пробелы заменяются одиночный пробел. В случае, если someString
состоит только из пробельных символов, все они отбрасываются, и тест для пустого укуса равен false()
, потому что по определению boolean('')
равен false()
.