我是XSLT中的新手,并且在转换值方面存在问题。 我有XML节点:
<NPD>0</NPD
输入XSD:
<xs:element name="NPD" type="xs:boolean" minOccurs="0"/>
我使用Altova StyleVision创建了XSLT可视化,但现在我必须更改NPD节点值&#34; 0&#34;字符串&#34;否&#34;和价值&#34; 1&#34;字符串&#34;是&#34;。
如何获得此效果?
<td colspan="3" style="padding-left:10px; width:1.40in; ">
<xsl:for-each select="$XML">
<xsl:for-each select="wnio:DD">
<xsl:for-each select="wnio:NPD">
<span style="color:#0024c0; ">
<xsl:apply-templates/>
</span>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
<span>
<xsl:text>  </xsl:text>
</span>
</td>
答案 0 :(得分:3)
使用模板规则:
<xsl:template match="wnio:DD[.='0']">No</xsl:template>
<xsl:template match="wnio:DD[.='1']">Yes</xsl:template>
答案 1 :(得分:2)
您可以使用xsl:choose
在XSLT中执行if / switch之类的语句。这是一个适用于您的场景的示例:
<xsl:template match="NPD">
<xsl:choose>
<xsl:when test="./text()='0'">
<xsl:text>No</xsl:text>
</xsl:when>
<xsl:when test="./text()='1'">
<xsl:text>Yes</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:message terminate="yes">The Yes/No value to be translated did not match expected input</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
有关详情,请参阅https://www.w3schools.com/xml/xsl_choose.asp。
那就是说,Michael Kay's answer的方式更好;优雅而优雅到了这一点。