2011-05-24 88 views
0

我有一個XML和XSLT。我想使用if條件來檢查一個元素是否爲0,如果它隱藏它,即什麼都不顯示。如果找到0,只需顯示一個空白單元格。XSLT如果條件幫助

這裏的基本概念:

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> 

我想要做的是,當構建元素= 0,我想它打印什麼,所以我試着把一個xsl:如果圍繞XSLT中的項目:

<xsl:if test="Build!='0'"> 
    <td bgcolor="#F2F5A9"> 
     <xsl:value-of select="Build" /> 
    </td> 
</xsl:if> 

但這似乎不工作,我得到一個空白的輸出文件。

有什麼想法?

+0

'Item'是不封閉的罰款。 – 2011-05-24 10:16:54

+0

correction-typo – KP65 2011-05-24 10:30:28

回答

2

簡單的解決方案是寫

<td bgcolor="#F2F5A9"> 
     <xsl:value-of select="Build[. != 0]" /> 
    </td> 
1

正確的做法也是(片段):

<td bgcolor="#F2F5A9"> 
    <xsl:if test="Build[text()!='0']"> 
     <xsl:value-of select="Build" /> 
    </xsl:if> 
    </td> 
+0

然而,如果你知道什麼是平均值,我仍然希望這個行被罰款,我只想在單元格中看到一個空單元而不是0。 – KP65 2011-05-24 10:31:14

+0

好吧,我已經更改爲顯示空白單元格。 @邁克爾凱片段也應該工作得很好。那麼問題是什麼? – 2011-05-24 10:39:05

+0

感謝 - 工作(都) – KP65 2011-05-24 11:04:01