2012-02-02 89 views
0

我是XSLT新手,嘗試使用XSLT2和altovaXML處理器時遇到以下問題。使用XSLT2進行XML轉換分組

<?xml version="1.0"?> 
<document> 
    <row> 
    <WEEK>11</WEEK> 
    <PERIOD>201103</PERIOD> 
    <ILPROD>some item</ILPROD> 
    <CNME>some name</CNME> 
    <QTY>100</QTY> 
    <SP>40</SP> 
    <REV>4000</REV> 
    <COST>2000</COST> 
    <VA>2000</VA> 
    <VAP>50</VAP> 
    </row> 
</document> 

我的XSL是如下

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 

<xsl:template match="/"> 
    <html> 
    <body> 
    <h2>Some text</h2> 
    <table border="1"> 
    <tr bgcolor="#9acd32"> 
     <th>Analysis</th> 
    </tr> 
    <xsl:for-each-group select="document/row" group-by="ILPROD"> 
    <xsl:for-each select="current-group()"> 
     <tr> 
     <td><xsl:value-of select="WEEK"/></td> 
     <td><xsl:value-of select="PERIOD"/></td> 
     <td><xsl:value-of select="ILPROD"/></td> 
    </tr> 
    </xsl:for-each> 
    <tr><td>&nbsp</td></tr> 
    </xsl:for-each-group> 
    </table> 
    </body> 
    </html> 
</xsl:template> 

</xsl:stylesheet> 

很簡單,我的「ILPROD」子節點和輸出設法組各組後一個空格。聽起來很容易,但我明顯犯了一個基本錯誤,因爲處理器說它無法加載文檔。如果我刪除分組,它工作正常。

任何想法我錯了嗎?

回答

1

嘗試使用,而不是& NBSP以下(這是失蹤的方式分號):

<tr><td colspan="3"><br></br></td></tr> 

而且不要忘了輸出切換到HTML:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:output method="html"/> 

<xsl:template match="/"> 
    <html> 
    <body> 
    <h2>Some text</h2> 
    <table border="1"> 
    <tr bgcolor="#9acd32"> 
     <th>Analysis</th> 
    </tr> 
    <xsl:for-each-group select="document/row" group-by="ILPROD"> 
    <xsl:for-each select="current-group()"> 
     <tr> 
     <td><xsl:value-of select="WEEK"/></td> 
     <td><xsl:value-of select="PERIOD"/></td> 
     <td><xsl:value-of select="ILPROD"/></td> 
    </tr> 
    </xsl:for-each> 
    <tr><td colspan="3"><br></br></td></tr> 
    </xsl:for-each-group> 
    </table> 
    </body> 
    </html> 
</xsl:template> 

</xsl:stylesheet> 

當我在Altova XML中運行這個時,我得到了正確的輸出:

<html> 
    <body> 
     <h2>Some text</h2> 
     <table border="1"> 
      <tr bgcolor="#9acd32"> 
       <th>Analysis</th> 
      </tr> 
      <tr> 
       <td>11</td> 
       <td>201103</td> 
       <td>some item</td> 
      </tr> 
      <tr> 
       <td colspan="3"><br></td> 
      </tr> 
     </table> 
    </body> 
</html> 
+0

很簡單,因爲有這個幫助。 – 2012-02-02 15:17:37