我有一个xml,如:
<TransactionData>
<Tag1>abc</Tag1>
<Tag2>cde</Tag2>
<EnhancedDataIndicator>true</EnhancedDataIndicator>
<EmailAddress>bob.smith@email.com</EmailAddress>
<PassengerName>SMITH/BOB</PassengerName>
</TransactionData>
和相应的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>
我试图输入一个逻辑,当它为'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>
请告知。
答案 0 :(得分:5)
由于您的模板已在EnhancedDataIndicator
上匹配,因此您只需要测试current()
的值,即
<xsl:when test = ". = 'true'">
答案 1 :(得分:-1)
尝试使用XSLT Online检查您的代码