xslt中if语句的问题

时间:2011-08-09 07:58:30

标签: xml xslt

如果以admin身份登录,我试图为每一行显示一个编辑按钮。

XML:

<vendors>
   <vendor id="1" name="Microsoft" description="1" odd="1"></vendor>
   <vendor id="2" name="Apple" description="1"></vendor>
   <vendor id="3" name="Google" description="1" odd="1"></vendor>
   <security ADMIN="1"></security>
</vendors>

XSLT:

<xsl:template match="vendors">
  <table>
    <thead>
      <tr>
        <xsl:if test="/vendors/security/@ADMIN = '1'">
          <td></td>
        </xsl:if>
        <td>Name</td>
        <td>Description</td>
      </tr>
    </thead>
      <tbody>
        <xsl:for-each select="vendor">
          <tr>
            <xsl:if test="@odd = '1'">
              <xsl:attribute name="class">odd</xsl:attribute>
            </xsl:if>
            <xsl:if test="/vendors/security/@ADMIN = '1'">
              <th><a href="#"><img src='edit.gif'></a></th>
            </xsl:if>
            <td title='Name'><xsl:value-of select="@name" /></td>
            <td title='Description'><xsl:value-of select="@description" /></td>
          </tr>
        </xsl:for-each>
      </tbody>
    </table>
  </div>
</xsl:template>

现在这不起作用。以admin身份登录(@ADMIN =“1”)时,一切正常。使用@ADMIN =“”登录时,不显示任何表格单元格(仅显示空行)。

1 个答案:

答案 0 :(得分:1)

除了输出文档中的一个问题(未关闭 img 标记而未打开 div ),显示的XSLT是正确的,并且应该显示单元格名称/描述,即使< strong> @ADMIN 是“”(使用Saxon测试)。

您也可以直接比较整数,如下所示:

test="/vendors/security/@ADMIN = 1"