2013-07-29 43 views
0

我有一個xml:如何使用xsl模板創建此表?

<plot> 
    <image>1.png</image> 
    </plot> 
    <plot> 
    <image>2.png</image> 
    </plot> 
    <plot> 
    <image>3.png</image> 
    </plot> 
    <plot> 
    <image>4.png</image> 
    </plot> 
    <plot> 
    <image>5.png</image> 
    </plot> 

我需要顯示一個表3列,如果最後一列(列第6)不存在了,我需要把「---」, 這樣的:

 
| col_a | col_b | col_c | 
--------+-------+-------- 
| 1.png | 2.png | 3.png | 
| 4.png | 5.png | --- | 

如何使用xsl模板創建此表?

+0

你實際上是在尋找固定寬度的文本輸出嗎?或者你的例子只是HTML表格或類似的表示? –

+0

只是HTML表格的表示。請忽略表頭。我只需要在列中顯示圖像。 – user2609320

回答

1

遍歷每個第三劇情元素,並有每次迭代輸出的所有單元格的行,像這樣:

<xsl:for-each select="plot[position() mod 3 = 1]"> 
    <tr> 
    <td> 
     <xsl:value-of select="."/> 
    </td> 
    <td> 
     <xsl:choose> 
     <xsl:when test="following-sibling::plot[1]"> 
      <xsl:value-of select="following-sibling::plot[1]"/> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:text>---</xsl:text> 
     </xsl:otherwise> 
     </xsl:choose> 
    </td> 
    <td> 
     <xsl:choose> 
     <xsl:when test="following-sibling::plot[2]"> 
      <xsl:value-of select="following-sibling::plot[2]"/> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:text>---</xsl:text> 
     </xsl:otherwise> 
     </xsl:choose> 
    </td> 
    </tr> 
</xsl:for-each> 

如果希望擴展到任意數量的列的解決方案,做同樣的循環,但不是明確地做每列,而是調用一個模板輸出一個單元格,並遞歸地調用其餘單元格輸出。

0

我可能會利用xsl:number count屬性,找到號碼,看它是否能被3整除,計算出有多少----就是你需要

然後通過元素使用foreach循環並添加正確的號碼-----。