XSLT如果条件帮助

时间:2011-05-24 09:08:44

标签: xml xslt dom if-statement

我有一个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>

但这似乎不起作用,我得到一个空白的输出文件。

任何想法?

2 个答案:

答案 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>