2014-04-24 3 views
0
당 세포의 수 제한

내 XML은 여기, 실제로는 약 300 영화 요소 긴하지만이 당신에게 의미주고 그냥 -XSLT Muenchian 그룹화 표 - 행

<mediaList>   
<movie id="1325947" dateCreated="2014-04-23"> 
     <title>Gator</title> 
     <director>Burt Reynolds</director> 
     <genre>Action</genre> 
     <writer>William W. Norton</writer> 
     <language>English</language> 
     <year>1976</year> 
     <callNumber href="http://endeavor.flo.org/vwebv/holdingsInfo?bibId=1325947">[DVD] PN1995.9 .A3 R49 2003</callNumber> 
     <coverArt href="Pics/Gator.jpg"/> 
    </movie> 

    <movie id="1094761" dateCreated="2014-04-23"> 
     <title>Assault on Precinct 13</title> 
     <director>Jean-François Richet</director> 
     <genre>Action</genre> 
     <genre>Police</genre> 
     <writer>James DeMonaco</writer> 
     <language>English</language> 
     <year>2005</year> 
     <callNumber href="http://endeavor.flo.org/vwebv/holdingsInfo?bibId=1094761">[DVD] PN1995.9 .A3 R53 2005</callNumber> 
     <coverArt href="Pics/AssaultonPrecinct13.jpg"/> 
    </movie> 

    <movie id="716486" dateCreated="2014-04-23"> 
     <title>Thunder Road</title> 
     <director>Arthur Ripley</director> 
     <genre>Action</genre> 
     <genre>Crime</genre> 
     <writer>James Atlee Phillips</writer> 
     <writer>Walter Wise</writer> 
     <language>English</language> 
     <year>1958</year> 
     <callNumber href="http://endeavor.flo.org/vwebv/holdingsInfo?bibId=716486">[DVD] PN1995.9 .A3 R57 2000</callNumber> 
     <coverArt href="Pics/ThunderRoad.jpg"/> 
    </movie> 

    <movie id="1335109" dateCreated="2014-04-23"> 
     <title>From Dusk Till Dawn</title> 
     <director>Robert Rodriguez</director> 
     <genre>Action</genre> 
     <genre>Vampire</genre> 
     <writer>Quentin Tarantino</writer> 
     <screenplay href="http://endeavor.flo.org/vwebv/holdingsInfo?bibId=527135">PN1997 .F7466 T37 1995</screenplay> 
     <language>English</language> 
     <year>1998</year> 
     <callNumber href="http://endeavor.flo.org/vwebv/holdingsInfo?bibId=1335109">[DVD] PN1995.9 .A3 R63 1998</callNumber> 
     <coverArt href="Pics/FromDuskTillDawn.jpg"/> 
    </movie> 
</mediaList> 

나는 몇이를 다른 스타일 시트를 사용하고 있습니다. 그 중 하나는 그림과 제목을 멋진 예쁜 레이아웃으로 변형하기위한 것입니다. 그 스타일 시트는 여기에 있습니다 :

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

    <xsl:key name="genre" match="genre" use="."/> 

    <xsl:param name="groupBy" select="'genre'"/> 

    <xsl:template match="/*"> 

     <html> 
      <head> 
       <link rel="stylesheet" type="text/css" href="mediaList.css"/> 
      </head> 
      <body> 
       <xsl:apply-templates 
        select="movie//*[local-name() = $groupBy][generate-id() = generate-id(key($groupBy, .)[1])]" mode="toc"> 
       <xsl:sort order="ascending"/> 
       </xsl:apply-templates> 
       <xsl:apply-templates 
        select="movie//*[local-name() = $groupBy][generate-id() = generate-id(key($groupBy, .)[1])]" mode="contents"> 
        <xsl:sort order="ascending"/> 
        <xsl:sort select="title"/> 
       </xsl:apply-templates> 

      </body> 
     </html> 
    </xsl:template> 

    <xsl:template match="movie//*" mode="contents"> 
     <h1> 
      <a> 
       <xsl:attribute name="id"> 
        <xsl:value-of select="."/> 
       </xsl:attribute> 
      </a> 
      <xsl:value-of select="."/> 
     </h1> 
     <table class="genre"> 
      <tr> 
       <xsl:apply-templates select="key($groupBy, .)/ancestor::movie"> 
        <xsl:sort select="title"/> 
       </xsl:apply-templates> 
      </tr> 
     </table> 
    </xsl:template> 

    <xsl:template match="movie"> 

     <td class="genre"> 
      <div class="image"> 
       <div class="trick"/> 
       <img> 
        <xsl:attribute name="src"> 
         <xsl:value-of select="coverArt/@href"/> 
        </xsl:attribute> 
        <xsl:attribute name="alt">Movie poster for '<xsl:value-of select="title"/>' 
        </xsl:attribute> 
       </img> 
      </div> 
      <br/> 
      <a> 
       <xsl:attribute name="href"> 
        <xsl:value-of select="callNumber/@href"/> 
       </xsl:attribute> 
       <xsl:value-of select="title"/> 
      </a> 
     </td> 
    </xsl:template> 

    <xsl:template match="movie//*" mode="toc"> 
     <a> 
      <xsl:attribute name="href">#<xsl:value-of select="."/> 
      </xsl:attribute> 
      <xsl:value-of select="."/> 
     </a> 
     <br/> 
    </xsl:template> 
</stylesheet> 

제가하는 데 문제는 현재 각 장르가 테이블에 한 행을 부여하고 모든 영화를보기 위해 스크롤의 톤을 필요로한다는 것이다 - 나는 방식을 원한다 제한을 말하십시오. 당 7 또는 10입니다. 각 장르는 모두 하나의 테이블에 모두 포함되어 있지만 행당 고정 된 셀 수입니다.

어떤 생각이 들었습니까? XSLT 1.0 또는 2.0 솔루션을 많이 사용해야합니다.

답변

0

subsequence()을 사용하여 원하는 영화 수 (td 요소)를 반환 할 수 있습니다.

이 템플릿을 변경해보십시오 :이 템플릿에

<xsl:template match="movie//*" mode="contents"> 
    <h1> 
     <a> 
      <xsl:attribute name="id"> 
       <xsl:value-of select="."/> 
      </xsl:attribute> 
     </a> 
     <xsl:value-of select="."/> 
    </h1> 
    <table class="genre"> 
     <tr> 
      <xsl:apply-templates select="key($groupBy, .)/ancestor::movie"> 
       <xsl:sort select="title"/> 
      </xsl:apply-templates> 
     </tr> 
    </table> 
</xsl:template> 

가 : 속성 값 템플릿에 대한 팁을위한

<xsl:template match="movie//*" mode="contents"> 
    <h1> 
     <!--Used attribute value template to cleanup code.--> 
     <a id="{.}"/>    
     <xsl:value-of select="."/> 
    </h1> 
    <table class="genre"> 
     <tr> 
      <!--Wrapped xsl:apply-templates in xsl:variable.--> 
      <xsl:variable name="movies"> 
       <xsl:apply-templates select="key($groupBy, .)/ancestor::movie"> 
        <xsl:sort select="title"/> 
       </xsl:apply-templates>      
      </xsl:variable> 
      <!--Output the 1st through 10th td's stored in $movies.--> 
      <xsl:copy-of select="subsequence($movies/td,1,10)"/> 
     </tr> 
    </table> 
</xsl:template> 
+0

감사합니다! 나는 결코 전에 그 (것)들을 우연히 만나지 않을 것입니다. 당신의 추가가 도움이되는 동안, 을 1으로 제한하고, 내가 가지고있는 모든 영화를 포함하고 싶습니다. 그래서 다른 10 개의 액션 영화와 함께 새로운 을 시작해야합니다. – user3530461