2010-07-20 4 views
2

XML 태그에 500 개의 이름 목록이 있다고 가정 해 보겠습니다. 이 목록을 XSLT를 사용하여 테이블에 표시하려고합니다. XSLT 테이블에서 최대 3 개의 행이 필요합니다. 내가 가진 열의 수에 상관없이 테이블을 스크롤 가능한 div에 넣을 계획입니다. 내 이름 목록이 1,000으로 늘어나도 여전히 3 개의 행 만 있으면되지만 열의 크기는 원하는 크기로 커질 수 있습니다.XML/XSL 표 형식화

어떻게하면 XSLT에서이 작업을 수행 할 수 있습니까? XSL 테이블에 관한 한, xsl : for-each에 익숙하지만, 그것에 관한 내용입니다.

형식은 다음과 같이이다 :

< 노드 1> < 노드 2> < NAME> 데이터 </NAME> < NAME> 데이터 </NAME> ... </노드 2> </node1>

+0

XML의 형식은 무엇입니까? "XSL 표"란 무엇을 의미합니까? –

+0

"XSL 표"란 XSLT 형식의 HTML 표를 의미합니다. 아래 링크를 이용해 주셔서 감사합니다. –

+0

좋은 질문 (+1). 완벽한 해결책은 내 대답을 참조하십시오. –

답변

1

이 변환 : 예로서, 지정된 형식으로 임의의 XML 문서에 대해 수행

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

<xsl:param name="pnumRows" select="3"/> 

<xsl:variable name="vnumCells" select="count(/*/*/NAME)"/> 
<xsl:variable name="vcellsPerRow" 
     select="ceiling($vnumCells div $pnumRows)"/> 


<xsl:template match="node2"> 
    <table> 
    <xsl:apply-templates select="NAME[position() mod $vcellsPerRow = 1]"/> 
    </table> 
</xsl:template> 

<xsl:template match="NAME"> 
    <tr> 
    <xsl:apply-templates mode="copy" select= 
    ". | following-sibling::*[not(position() >= $vcellsPerRow)]"/> 
    </tr> 
</xsl:template> 

<xsl:template match="NAME" mode="copy"> 
    <td><xsl:value-of select="."/></td> 
</xsl:template> 
</xsl:stylesheet> 

을 다음

<node1> 
    <node2> 
     <NAME>name1</NAME> 
     <NAME>name2</NAME> 
     <NAME>name3</NAME> 
     <NAME>name4</NAME> 
     <NAME>name5</NAME> 
     <NAME>name6</NAME> 
     <NAME>name7</NAME> 
     <NAME>name8</NAME> 
     <NAME>name9</NAME> 
     <NAME>name10</NAME> 
    </node2> 
</node1> 

는 원하는 결과를 산출 : 테이블과 세 행, 첫 번째 두 행의 셀 수가 같고 마지막 행의 길이가 더 짧을 수 있습니다.

<table> 
    <tr> 
     <td>name1</td> 
     <td>name2</td> 
     <td>name3</td> 
     <td>name4</td> 
    </tr> 
    <tr> 
     <td>name5</td> 
     <td>name6</td> 
     <td>name7</td> 
     <td>name8</td> 
    </tr> 
    <tr> 
     <td>name9</td> 
     <td>name10</td> 
    </tr> 
</table> 
0

XSLT를 사용하여 XML을 HTML 테이블로 변환하는 것에 대해 이야기하는 경우을 살펴 보시기 바랍니다.. 그는 당신이 말하고있는 것을 할 수있게 해주는 몇 가지 템플릿을 제공하지만 약간의 조정이 필요할 것입니다.