XSLT:使用选择根据true/false转换标记值

use*_*948 4 xml xslt

我有一个像xml:

<TransactionData>
<Tag1>abc</Tag1>
<Tag2>cde</Tag2>
<EnhancedDataIndicator>true</EnhancedDataIndicator> 
 <EmailAddress>bob.smith@email.com</EmailAddress> 
 <PassengerName>SMITH/BOB</PassengerName> 
</TransactionData>
Run Code Online (Sandbox Code Playgroud)

和相应的XSLT如:

...

<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>
Run Code Online (Sandbox Code Playgroud)

我试图输入一个逻辑,当它为'true'时,可以使EnhancedDataIndicator值为'Y',当'false'时,它为'N'.目前,XSLT没有实现这一点.它始终显示"N"表示EnhancedDataIndicator.转换后的当前xml如下所示:

 <TransactionData>
    <Tag1>abc</Tag1>
    <Tag2>cde</Tag2>
    <EnhancedDataIndicator>true</EnhancedDataIndicator> 
     <EmailAddress>bob.smith@email.com</EmailAddress> 
     <PassengerName>SMITH/BOB</PassengerName> 
    </TransactionData> 
Run Code Online (Sandbox Code Playgroud)

好心提醒.

Stu*_*tLC 5

由于您的模板已经匹配EnhancedDataIndicator,您只需要测试其值current(),即

        <xsl:when test = ". = 'true'">
Run Code Online (Sandbox Code Playgroud)