XSLT : Using choose to transform tag value depending on true/false

Viewed 145

I have an xml like:

<TransactionData>
<Tag1>abc</Tag1>
<Tag2>cde</Tag2>
<EnhancedDataIndicator>true</EnhancedDataIndicator> 
 <EmailAddress>bob.smith@email.com</EmailAddress> 
 <PassengerName>SMITH/BOB</PassengerName> 
</TransactionData>

and a corresponding XSLT like:

...

<xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template> 
   <xsl:template match="EnhancedDataIndicator">
   <xsl:choose>
            <xsl:when test = "EnhancedDataIndicator = 'true'">
              <EnhancedDataIndicator>Y</EnhancedDataIndicator>
            </xsl:when>
            <xsl:otherwise>
            <EnhancedDataIndicator><xsl:text>N</xsl:text></EnhancedDataIndicator>
            </xsl:otherwise>
   </xsl:choose>
 </xsl:template>

I am trying to put in a logic which can make EnhancedDataIndicator value as 'Y' when it is 'true' and 'N' when it is 'false'. Currently the XSLT doesn't achieve that. It always shows 'N' for EnhancedDataIndicator. Current xml after transformation looks like:

 <TransactionData>
    <Tag1>abc</Tag1>
    <Tag2>cde</Tag2>
    <EnhancedDataIndicator>true</EnhancedDataIndicator> 
     <EmailAddress>bob.smith@email.com</EmailAddress> 
     <PassengerName>SMITH/BOB</PassengerName> 
    </TransactionData> 

Kindly advise.

2 Answers
Related