2012-02-02 3 views
0

XSLT를 처음 사용하고 XSLT2 및 altovaXML 프로세서를 사용할 때 다음과 같은 문제점이 있습니다. 아주 간단하게 나는 "ILPROD"자식 노드와 출력에 의해 그룹으로 각 그룹 후 빈 공간을 시도하고있다XSLT2를 사용한 XML 변환 그룹화

<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> 

을 다음과 같이

<?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입니다. 쉽게 들리지만 프로세서가 문서를로드 할 수 없다고 말하기 때문에 분명히 기본적인 오류가 발생합니다. 그룹화를 제거하면 정상적으로 작동합니다.

내가 잘못 가고있는 아이디어가 있습니까?

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

을 그리고 HTML로 출력을 변경하는 것을 잊지 마세요 :

답변

1

(이 방법에 의해 세미콜론 누락) 대신 & NBSP의 아래 사용해보십시오

<?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

단순한 도움을 주셔서 감사합니다. –