在XSLT中基于多个条件显示表

时间:2013-08-02 12:17:43

标签: xslt-1.0

我有五个来自表格的价值观;像state1,state2,state3,state4和state5。 每个值可以是“新建”或“已关闭”。 将根据这些值显示报告。 所以,我创建了5个表,每个表都要在报表上显示。 如果值为“新”,则显示相应的表,否则无需显示。 所以,我创建了如下的XSLT(这只是我代码中的一个片段)。

  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="html" omit-xml-declaration="yes" standalone="yes" indent="yes"cdata-section-elements="script msxsl:script"></xsl:output>
   <xsl:template match="/">
   <html>
     <head><title>Report</title></head>
      <body>
       <table class="row1">
        <tr>
         <td align="left" colspan="2">
         <img src="../images/Logos/logo.gif" height="80"></img>
         </td>
        </tr>
       </table>
   <xsl:if test="(state1='New') and (state2='Closed') and (state3='Closed') and (state4='Closed') and (state5='Closed')">
    <table class="row2">
     <tr>
      <td class="section" uniqueID="ms__id17">
       <b>Details(S1)</b>
      </td>
     </tr>
      <!--some rows -->
    </table>
    </xsl:if>
   <xsl:if test="(state1='New') and (state2='New') and (state3='Closed') and   (state4='Closed') and (state5='Closed')">
    <table class="row2">
     <tr>
      <td class="section" uniqueID="ms__id18">
       <b>Details(S1)</b>
      </td>
     </tr>
      <!--some rows -->
    </table> 
    <table class="row3">
     <tr>
      <td class="section" uniqueID="ms__id19">
       <b>Details(S2)</b>
      </td>
     </tr>
      <!--some rows -->
    </table> 
   </xsl:if>
   <!--more conditions-->
         </body>
       </html>
    </xsl:template>
   </xsl:stylesheet>

如果我继续给出这样的条件我应该给5!条件。

有没有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

这是你想要的(使用或代替和)?

<xsl:if test="(state1='New') or (state2='New') or (state3='New') or (state4='New') or (state5='New')">
<table class="row2">
 <tr>
  <td class="section" uniqueID="ms__id17">
   <b>Details(S1)</b>
  </td>
 </tr>
  <!--some rows -->
</table>
</xsl:if>