Я протестировал ваш пример, и, похоже, он будет работать, если вы сделаете свой brand
путь абсолютным:
<div class="logo">
<xsl:variable name="brand" select="/books/book/a/ItemFields/ItemMainCategory"/>
<xsl:if test="$isMissingImg = 'false'">
<h2>Hello</h2> <!-- this condition is working-->
<xsl:if test="$brand = 'White T-shirt'"> <!-- this condition is NOT working-->
<xsl:element name="img">
<xsl:attribute name="src">
<xsl:text>https://example.com/images/black.png</xsl:text>
</xsl:attribute>
<xsl:attribute name='border'>0</xsl:attribute>
</xsl:element>
</xsl:if>
</xsl:if>
</div>
Кстати, вы можете упростить этот код следующим образом:
<div class="logo">
<xsl:variable name="brand" select="/books/book/a/ItemFields/ItemMainCategory"/>
<xsl:if test="$isMissingImg = 'false'">
<h2>Hello</h2>
<xsl:if test="$brand = 'White T-shirt'">
<img src="https://example.com/images/black.png" border="0" />
</xsl:if>
</xsl:if>
</div>
Вы должны позаботиться о <xsl:if test="$isMissingImg = 'false'">
.Он проверяет, имеет ли $isMissingImg
строковое значение «ложь» и не логическое значение false
.Имейте это в виду.