James
James

Reputation: 559

XSLT determining if a parameter is null or empty then do something

I'm trying to determine if ../../coupon_code is null or empty. I've tried the methods in this thread Check if a string is null or empty in XSLT to no avail. Maybe I'm doing something wrong?

<!--Coupon Code Name and Code-->
<xsl:choose>
    <xsl:when test="not(../../coupon_code)">
        <xsl:if test="../../coupon_code != ''"> 
            <xsl:value-of select="../../coupon_rule_name" /> <xsl:value-of select="../../coupon_code" /><xsl:value-of select="$sepend" />D.PROMOTION<xsl:value-of select="$sepend" />
        </xsl:if> 
    </xsl:when>
    <xsl:otherwise>
    </xsl:otherwise>
</xsl:choose>
<!--End Coupon Code Name and Code-->

I'm doing

<xsl:when test="not(../../coupon_code)">

To determine if it's null. Then, I'm doing

<xsl:if test="../../coupon_code != ''"> 

To determine if it's empty.

However, I'm looking at data where this is clearly populated, and it's not entering the when/if to display the data at all. So it's failing somewhere and I don't know where.

Sometimes, ../../coupon_code will have a coupon code in it, like COUPON122. Sometimes it won't have anything in it.

Upvotes: 1

Views: 853

Answers (1)

Martin Honnen
Martin Honnen

Reputation: 167716

You can check

<xsl:if test="normalize-space(../../coupon_code)">
  <xsl:value-of select="../../coupon_rule_name" /> <xsl:value-of select="../../coupon_code" /><xsl:value-of select="$sepend" />D.PROMOTION<xsl:value-of select="$sepend" />
</xsl:if>

to have the xsl:value-ofs processed only if the ../../coupon_code element has some non-whitespace content.

Upvotes: 1

Related Questions