我有一个XML和XSLT。我想使用if条件来检查元素是否为0,如果它是隐藏它,即什么都不显示。找到IF 0,只需显示一个空白单元格。
这是基本概念:
XML
<Sheet1>
<Build>0</Build>
<Item>X</Item>
<T1>0:06:00</T1>
<T2>0:14:15</T2>
<T3>0:07:22</T3>
</Sheet1>
XSLT
<table border="1">
<tr bgcolor="#dccdc">
<th align="center">Build</th>
<th align="center">Item</th>
<th align="center">T1</th>
<th align="center">T2</th>
<th align="center">T3</th>
</tr>
<xsl:for-each select="Sheet1">
<tr>
<td bgcolor="#F2F5A9">
<xsl:value-of select="Build" />
</td>
<td bgcolor="#F2F5A9">
<xsl:value-of select="Item" />
</td>
<td bgcolor="#F2F5A9">
<xsl:value-of select="T1" />
</td>
<td bgcolor="#F2F5A9">
<xsl:value-of select="T2" />
</td>
<td bgcolor="#F2F5A9">
<xsl:value-of select="T3" />
</td>
</tr>
</xsl:for-each>
</table>
我想要做的是当Build element = 0时我想要它什么都不打印,所以我尝试放一个xsl:if在XSLT中的项目周围:
<xsl:if test="Build!='0'">
<td bgcolor="#F2F5A9">
<xsl:value-of select="Build" />
</td>
</xsl:if>
但这似乎不起作用,我得到一个空白的输出文件。
任何想法?
答案 0 :(得分:2)
最简单的解决方案是编写
<td bgcolor="#F2F5A9">
<xsl:value-of select="Build[. != 0]" />
</td>
答案 1 :(得分:1)
正确的方法也是(片段):
<td bgcolor="#F2F5A9">
<xsl:if test="Build[text()!='0']">
<xsl:value-of select="Build" />
</xsl:if>
</td>