2015-02-09 58 views
0

有沒有可能的解決方法:XSL選擇的時候,否則使用?

你可以有兩列,一個標題爲'sign',另一個'post'。但只能顯示實際使用的是什麼? (如果你有400個客戶,那麼簽署的人有<th>說感嘆Via等在哪裏,如果他們收到的郵寄然後PostID和其他<th>出現在表中)。

我就是用這個方法:

 <th> Sign Via</th> 
     <th> Sign Name</th> 
     <th> Sign Address</th> 
     <th> Sign City</th> 

     <xsl:for-each select="delivery/sign"> 
     <td><xsl:value-of select="SignVia"/></td> 
     <td><xsl:value-of select="SignName"/></td> 
     <td><xsl:value-of select="SignAddress"/></td> 
     <td><xsl:value-of select="SignCity"/></td></xsl:for-each> 

     <th> Post ID</th> 
     <th> Post Date</th> 
     <th> Post Address</th> 

    <xsl:for-each select="delivery/post"> 
     <td> 
      <xsl:value-of select="postID"/> 
     </td> 
     <td> 
      <xsl:value-of select="postDate"/> 
     </td> 
     <td> 
      <xsl:value-of select="postAddress"/> 
     </td> 
    </xsl:for-each> 

我試圖在一個XSL添加選擇語句:

<xsl:choose> 
<xsl:when test="PostID"> 
     <td> 
      <xsl:value-of select="postID"/> 
     </td> 
     <td> 
      <xsl:value-of select="postDate"/> 
     </td> 
     <td> 
      <xsl:value-of select="postAddress"/> 
     </td> 
</xsl:when> 
<xsl:otherwise> 
<td><xsl:value-of select="SignVia"/></td> 
     <td><xsl:value-of select="SignName"/></td> 
     <td><xsl:value-of select="SignAddress"/></td> 
     <td><xsl:value-of select="SignCity"/></td> 
     </xsl:for-each> 
     </xsl:otherwise> 

我非常新的XSL和XML,並使用W3教程,讓我通過每個階段,但是我認爲我失去了一些東西,因爲我無法找到一種方法來做到這一點,同時使用

我希望最終的結果會有像下面的東西(我無法發佈圖像因爲我是新的)。 預期結果:

一張表。 表包含有關該產品的大量信息,最後縮小爲客戶將如何收到此項目。 表格將包括客戶詳細信息(地址等),訂單信息和產品規格(全部成功輸入)。但是,似乎當我上傳它顯示信息加上額外的'頭'。

例如: 客戶已經爲他們的物品簽名,它出現'signvia signname'等等。但是它上面還粘住了'postID,postDate',即使它們是空的。

提前歡呼。

編輯: 餘XSL的:

 <body> 
      <th> Customer Name</th> 
      <th> Number</th> 
      <th>Address</th> 

     <xsl:for-each select="customer"> 
      <tr style="color:black; background: #eee;"> 
      <td><xsl:value-of select="CustomerName"/></td> 
      <td><xsl:value-of select="Number"/></td> 
      <td><xsl:value-of select="Address"/></td> 
     </tr> 



      <th> Post ID</th> 
     <th>Post Date</th> 
     <th> Post Address</th> 
<xsl:choose> 
<xsl:when test="PostID"> 
     <td> 
      <xsl:value-of select="postID"/> 
     </td> 
     <td> 
      <xsl:value-of select="postDate"/> 
     </td> 
     <td> 
      <xsl:value-of select="postAddress"/> 
     </td> 
</xsl:when> 
<xsl:otherwise> 
<th> Sign Name</th> 
     <th> Sign Address</th> 
     <th> Sign City</th> 
     <td><xsl:value-of select="SignName"/></td> 
     <td><xsl:value-of select="SignAddress"/></td> 
     <td><xsl:value-of select="SignCity"/></td> 
     </xsl:for-each> 
     </xsl:otherwise> 




     <th> ProductN</th> 
     <th> Quan</th> 
     <th> Unit </th> 
     <th> Disc </th> 

    <xsl:for-each select="productStock/product">  
     <td><xsl:value-of select="ProductN"/></td> 
     <td><xsl:value-of select="Quan"/></td> 
     <td><xsl:value-of select="Amoun"/></td>  
     <td><xsl:value-of select="Reas"/></td>  



    </xsl:for-each> 
    </xsl:for-each> 
    </xsl:for-each> 
    </xsl:for-each> 
    </xsl:for-each> 
    </xsl:for-each> 
    </table> 
    </body> 
    </html> 
    </xsl:template> 
    </xsl:stylesheet> 
+0

你能發表一個小例子的輸入+這個例子的預期結果嗎? - – 2015-02-09 01:15:27

+0

你是否將你的企圖放在double foreach中,如下所示: // yourattempt // 2015-02-09 01:21:38

+0

@ michael.hor257k我已更新,對不起,如果我的解釋過於牽強。我無法上傳圖片! – 2015-02-09 01:27:10

回答

0

嗯,我不是一個xml大師,但有些東西我有一種感覺,你的程序流程是錯誤的。試試這個:

 <xsl:if test="customer/PostID"> 
      <xsl:for-each select="delivery/post"> 
       <td> 
        <xsl:value-of select="postID"/> 
       </td> 
       <td> 
        <xsl:value-of select="postDate"/> 
       </td> 
       <td> 
        <xsl:value-of select="postAddress"/> 
       </td> 
      </xsl:for-each> 
     </xsl:if> 
     <xsl:if test="not(customer/PostID)"> 
     <xsl:for-each select="delivery/sign"> 
     <td><xsl:value-of select="SignVia"/></td> 
       <td><xsl:value-of select="SignName"/></td> 
       <td><xsl:value-of select="SignAddress"/></td> 
       <td><xsl:value-of select="SignCity"/></td> 
     </xsl:for-each>   
    </xsl:if> 
+0

不知怎的,通過這樣做,它已經刪除了任何'發佈'信息,只顯示一個客戶簽名。 @noob – 2015-02-09 01:32:52

+0

唯一改變的是'sign'部分的頭部仍然沒有內容:( – 2015-02-09 01:50:50

+3

我們沒有看到太多的代碼(沒有模板匹配),更不用說輸入樣本。只要OP沒有提供完整的信息。 – 2015-02-09 01:57:53