XSLT If 条件帮助

发布于 2024-11-09 16:01:59 字数 1693 浏览 2 评论 0原文

我有 XML 和 XSLT。我想使用 if 条件来检查元素是否为 0,如果是则隐藏它,即不显示任何内容。如果找到 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 时我希望它不打印任何内容,所以我尝试在 XSLT 中的项目周围放置一个 xsl:if :

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

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

有什么想法吗?

I have an XML and XSLT. I want to use the if condition to check if an element is 0, if it is then hide it i.e display nothing. IF 0 is found, simply display a blank cell.

Here is the basic concept:

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>

What I want to do is when Build element = 0 i want it to print nothing, so i tried putting an xsl:if around the item in the XSLT:

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

but this does not seem to work, i get a blank output file.

any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

揪着可爱 2024-11-16 16:01:59

最简单的解决方案是写

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

Simplest solution is to write

    <td bgcolor="#F2F5A9">
        <xsl:value-of select="Build[. != 0]" />
    </td>
梦里南柯 2024-11-16 16:01:59

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

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

A correct approach is also (fragment):

  <td bgcolor="#F2F5A9">
    <xsl:if test="Build[text()!='0']">
      <xsl:value-of select="Build" />
    </xsl:if>
  </td>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文