2012-02-02 4 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: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> 

を次のように私のXSLは非常に単純に私は、各グループの後に「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

シンプルなので、ありがとうございました。 –