2012-12-04 67 views
0

我想在HTML表格中顯示XML內容。我用下面(簡化)代碼,這樣做:XSL,在同一個html表中顯示項目[1]和項目[2]

<xsl:template match="/"> 
    <xsl:apply-templates select="/products/product"> 
     <xsl:sort select="populariteit" order="descending" data-type="number"/> 
    </xsl:apply-templates> 
</xsl:template> 

<xsl:template match="product"> 
    <xsl:if test="position()=1"> 
     <table> 
      <tr> 
       <td> 
        <xsl:value-of select="title"/> 
       </td> 
      </tr> 
     </table> 
    </xsl:if> 
</xsl:template> 

用下面(簡化)的XML:

<products> 
    <product> 
     <title>Title One</title> 
     <popularity>250</popularity> 
    </product> 
    <product> 
     <title>Title Two</title> 
     <popularity>500</popularity> 
    </product> 
    <product> 
     <title>Title Three</title> 
     <popularity>400</popularity> 
    </product> 
</products> 

它是什麼樣的列表中「人氣」,然後顯示錶中第一個條目的標題(最受歡迎)。

現在,我想要完成的是顯示來自前兩受歡迎物品的標題。但無論我嘗試,XSLT都會在兩個不同的表中輸出它們,而不是一個

我已經試過了諸如:

<xsl:template match="product"> 
    <table> 
     <tr> 
      <td> 
       <xsl:if test="position()=1"> 
        <xsl:value-of select="title"/> 
       </xsl:if> 
       <xsl:if test="position()=2"> 
        <xsl:value-of select="title"/> 
       </xsl:if> 
      </td> 
     </tr> 
    </table> 
</xsl:template> 

但是,這會導致兩個不同的表;我希望標題在同一個表中彼此相鄰顯示,,同時仍然使用排序列表中的信息。

我想要的HTML輸出將是:

<table> 
    <tr> 
     <td> 
      Title Three Title Two 
     </td> 
    </tr> 
</table> 

據我只用使用一個XSL來生成此輸出,因爲在我使用該軟件的某些限制是很重要的。

+0

請發佈所需的HTML輸出。 –

回答

2

那麼您需要將代碼生成到另一個模板中,例如

<xsl:template match="/"> 
    <table> 
     <tr> 
    <xsl:apply-templates select="/products/product"> 
     <xsl:sort select="populariteit" order="descending" data-type="number"/> 
    </xsl:apply-templates> 
     </tr> 
    </table> 
</xsl:template> 

<xsl:template match="product"> 
    <xsl:if test="position() &lt; 3"> 

       <td> 
        <xsl:value-of select="title"/> 
       </td> 
    </xsl:if> 
</xsl:template> 

,如果你想要一個能賦予在其自己的小區每個標題,都在同一個小區,你會需要將td結果元素模板移動到其他模板,並且只輸出標題爲product

+0

有沒有辦法做到這一點,而不使用這樣的模板?更像我的例子?我的表格可能需要從(很多)更多不同的XML項目中獲取數據。 –

+1

@JeffreyRoosendaal,您目前的問題已完全解答。請*接受*這個問題,並提出一個關於您的進一步問題的新問題。永遠不要讓讀者猜測你想要什麼 - 通過說「我的表格可能需要在未來從更多不同的XML項目獲取數據」。 –

+0

Jeffrey,如果你只想要一個表格,你不能將每個產品元素映射到一個新表格,因爲匹配'product'的模板和爲每個表格創建一個結果'table'。如果你有進一步的要求,我同意Dimitre,你應該問他們一個新的問題,你提供有代表性的輸入樣本和想要的輸出。 –

相關問題