2012-09-07 33 views
1

我想我只是打開一個新的問題,也可以幫助誰尋找解決方案。我想從每個第三項中添加一個類。XSLT每隔三分鐘插入一個班級

這裏是我的XML代碼

<groups> 
<elements> 
<name>//1</name> 
<BOD></BOD> 
<description/> 
<URL></URL> 
<Hobbbies> 
<Sport></Sport> 
<Music></Music> 
</Hobbbies> 
<Height></Height> 
<PostDate>2012-03-04</PostDate> 
<trackno></trackno> 
</elements> 

<elements> 
<name>//2</name> 
<BOD></BOD> 
<description/> 
<URL></URL> 
<Hobbbies> 
<Sport></Sport> 
<Music></Music> 
</Hobbbies> 
<Height></Height> 
<PostDate>2011-03-04</PostDate> 
<trackno></trackno> 
</elements> 

<elements> 
<name>//3</name> 
<BOD></BOD> 
<description/> 
<URL></URL> 
<Hobbbies> 
<Sport></Sport> 
<Music></Music> 
</Hobbbies> 
<Height></Height> 
<PostDate>2012-07-04</PostDate> 
<trackno></trackno> 
</elements> 


<elements> 
<name>//4</name> 
<BOD></BOD> 
<description/> 
<URL></URL> 
<Hobbbies> 
<Sport></Sport> 
<Music></Music> 
</Hobbbies> 
<Height></Height> 
<PostDate>2009-01-04</PostDate> 
<trackno></trackno> 
</elements> 



<elements> 
<name>//5</name> 
<BOD></BOD> 
<description/> 
<URL></URL> 
<Hobbbies> 
<Sport></Sport> 
<Music></Music> 
</Hobbbies> 
<Height></Height> 
<PostDate>2009-02-04</PostDate> 
<trackno></trackno> 
</elements> 


<elements> 
<name>//6</name> 
<BOD></BOD> 
<description/> 
<URL></URL> 
<Hobbbies> 
<Sport></Sport> 
<Music></Music> 
</Hobbbies> 
<Height></Height> 
<PostDate>2008-06-04</PostDate> 
<trackno></trackno> 
</elements> 

<elements> 
<name>//7</name> 
<BOD></BOD> 
<description/> 
<URL></URL> 
<Hobbbies> 
<Sport></Sport> 
<Music></Music> 
</Hobbbies> 
<Height></Height> 
<PostDate>2012-01-04</PostDate> 
<trackno></trackno> 
</elements> 


<elements> 
<name>//8</name> 
<BOD></BOD> 
<description/> 
<URL></URL> 
<Hobbbies> 
<Sport></Sport> 
<Music></Music> 
</Hobbbies> 
<Height></Height> 
<PostDate>2012-05-14</PostDate> 
<trackno></trackno> 
</elements> 



<elements> 
<name>//9</name> 
<BOD></BOD> 
<description/> 
<URL></URL> 
<Hobbbies> 
<Sport></Sport> 
<Music></Music> 
</Hobbbies> 
<Height></Height> 
<PostDate>2012-05-28</PostDate> 
<trackno></trackno> 
</elements> 



<elements> 
<name>//10</name> 
<BOD></BOD> 
<description/> 
<URL></URL> 
<Hobbbies> 
<Sport></Sport> 
<Music></Music> 
</Hobbbies> 
<Height></Height> 
<PostDate>2011-02-25</PostDate> 
<trackno></trackno> 
</elements> 



<elements> 
<name>//11</name> 
<BOD></BOD> 
<description/> 
<URL></URL> 
<Hobbbies> 
<Sport></Sport> 
<Music></Music> 
</Hobbbies> 
<Height></Height> 
<PostDate>2011-12-20</PostDate> 
<trackno></trackno> 
</elements> 



<elements> 
<name>//12</name> 
<BOD></BOD> 
<description/> 
<URL></URL> 
<Hobbbies> 
<Sport></Sport> 
<Music></Music> 
</Hobbbies> 
<Height></Height> 
<PostDate>2011-11-07</PostDate> 
<trackno></trackno> 
</elements> 




<elements> 
<name>//13</name> 
<BOD></BOD> 
<description/> 
<URL></URL> 
<Hobbbies> 
<Sport></Sport> 
<Music></Music> 
</Hobbbies> 
<Height></Height> 
<PostDate>2011-07-09</PostDate> 
<trackno></trackno> 
</elements> 


<elements> 
<name>//14</name> 
<BOD></BOD> 
<description/> 
<URL></URL> 
<Hobbbies> 
<Sport></Sport> 
<Music></Music> 
</Hobbbies> 
<Height></Height> 
<PostDate>2005-10-19</PostDate> 
<trackno></trackno> 
</elements> 
</groups> 

,這是我的XSLT

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



    <xsl:template match="/"> 

     <html> 
     <body> 
     <h2>Try to display only 9 or 12</h2> 
      <xsl:for-each select="/groups/elements"> 
      <xsl:sort select="PostDate" order="descending"/> 
      <xsl:if test="not(position() > 10)"> 
      <b><xsl:value-of select="PostDate" /></b> - 
      <font color='red'><xsl:value-of select="name" /></font> 
      <p></p> 
      </xsl:if> 
      </xsl:for-each> 

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

    </xsl:stylesheet> 

只是想要一個簡單的方法來插入類的,非常感謝

我想

 <div clas="item"> 

     2012-07-04 - //3 

     2012-05-28 - //9 

     <div class="third"> 2012-05-14 - //8 </div> 

     2012-03-04 - //1 

     2012-01-04 - //7 

     <div class="third"> 2011-12-20 - //11 </div> 

     2011-11-07 - //12 

     2011-07-09 - //13 

     <div class="third">2011-03-04 - //2 </div> 

     2011-02-25 - //10 
     </div> 

回答

2

這種轉變數量:

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

    <xsl:template match="/"> 
     <div class="item"> 
      <xsl:for-each select="/groups/elements"> 
      <xsl:sort select="PostDate" order="descending"/> 
      <xsl:if test="not(position() > 10)"> 
       <xsl:choose> 
        <xsl:when test="position() mod 3 = 0"> 
        <xsl:text>&#xA;</xsl:text> 
        <div class="third"> 
         <xsl:apply-templates select="."/> 
        </div> 
        </xsl:when> 
        <xsl:otherwise> 
        <xsl:text>&#xA;</xsl:text> 
        <xsl:apply-templates select="."/> 
        </xsl:otherwise> 
       </xsl:choose> 
      </xsl:if> 
     </xsl:for-each> 
     </div> 
    </xsl:template> 

    <xsl:template match="elements"> 
     <xsl:value-of select="PostDate" /> 
     <xsl:text> - </xsl:text> 
     <xsl:value-of select="name" /> 
    </xsl:template> 
</xsl:stylesheet> 

當應用於提供的XML文檔時:

<groups> 
    <elements> 
     <name>//1</name> 
     <BOD></BOD> 
     <description/> 
     <URL></URL> 
     <Hobbbies> 
      <Sport></Sport> 
      <Music></Music> 
     </Hobbbies> 
     <Height></Height> 
     <PostDate>2012-03-04</PostDate> 
     <trackno></trackno> 
    </elements> 
    <elements> 
     <name>//2</name> 
     <BOD></BOD> 
     <description/> 
     <URL></URL> 
     <Hobbbies> 
      <Sport></Sport> 
      <Music></Music> 
     </Hobbbies> 
     <Height></Height> 
     <PostDate>2011-03-04</PostDate> 
     <trackno></trackno> 
    </elements> 
    <elements> 
     <name>//3</name> 
     <BOD></BOD> 
     <description/> 
     <URL></URL> 
     <Hobbbies> 
      <Sport></Sport> 
      <Music></Music> 
     </Hobbbies> 
     <Height></Height> 
     <PostDate>2012-07-04</PostDate> 
     <trackno></trackno> 
    </elements> 
    <elements> 
     <name>//4</name> 
     <BOD></BOD> 
     <description/> 
     <URL></URL> 
     <Hobbbies> 
      <Sport></Sport> 
      <Music></Music> 
     </Hobbbies> 
     <Height></Height> 
     <PostDate>2009-01-04</PostDate> 
     <trackno></trackno> 
    </elements> 
    <elements> 
     <name>//5</name> 
     <BOD></BOD> 
     <description/> 
     <URL></URL> 
     <Hobbbies> 
      <Sport></Sport> 
      <Music></Music> 
     </Hobbbies> 
     <Height></Height> 
     <PostDate>2009-02-04</PostDate> 
     <trackno></trackno> 
    </elements> 
    <elements> 
     <name>//6</name> 
     <BOD></BOD> 
     <description/> 
     <URL></URL> 
     <Hobbbies> 
      <Sport></Sport> 
      <Music></Music> 
     </Hobbbies> 
     <Height></Height> 
     <PostDate>2008-06-04</PostDate> 
     <trackno></trackno> 
    </elements> 
    <elements> 
     <name>//7</name> 
     <BOD></BOD> 
     <description/> 
     <URL></URL> 
     <Hobbbies> 
      <Sport></Sport> 
      <Music></Music> 
     </Hobbbies> 
     <Height></Height> 
     <PostDate>2012-01-04</PostDate> 
     <trackno></trackno> 
    </elements> 
    <elements> 
     <name>//8</name> 
     <BOD></BOD> 
     <description/> 
     <URL></URL> 
     <Hobbbies> 
      <Sport></Sport> 
      <Music></Music> 
     </Hobbbies> 
     <Height></Height> 
     <PostDate>2012-05-14</PostDate> 
     <trackno></trackno> 
    </elements> 
    <elements> 
     <name>//9</name> 
     <BOD></BOD> 
     <description/> 
     <URL></URL> 
     <Hobbbies> 
      <Sport></Sport> 
      <Music></Music> 
     </Hobbbies> 
     <Height></Height> 
     <PostDate>2012-05-28</PostDate> 
     <trackno></trackno> 
    </elements> 
    <elements> 
     <name>//10</name> 
     <BOD></BOD> 
     <description/> 
     <URL></URL> 
     <Hobbbies> 
      <Sport></Sport> 
      <Music></Music> 
     </Hobbbies> 
     <Height></Height> 
     <PostDate>2011-02-25</PostDate> 
     <trackno></trackno> 
    </elements> 
    <elements> 
     <name>//11</name> 
     <BOD></BOD> 
     <description/> 
     <URL></URL> 
     <Hobbbies> 
      <Sport></Sport> 
      <Music></Music> 
     </Hobbbies> 
     <Height></Height> 
     <PostDate>2011-12-20</PostDate> 
     <trackno></trackno> 
    </elements> 
    <elements> 
     <name>//12</name> 
     <BOD></BOD> 
     <description/> 
     <URL></URL> 
     <Hobbbies> 
      <Sport></Sport> 
      <Music></Music> 
     </Hobbbies> 
     <Height></Height> 
     <PostDate>2011-11-07</PostDate> 
     <trackno></trackno> 
    </elements> 
    <elements> 
     <name>//13</name> 
     <BOD></BOD> 
     <description/> 
     <URL></URL> 
     <Hobbbies> 
      <Sport></Sport> 
      <Music></Music> 
     </Hobbbies> 
     <Height></Height> 
     <PostDate>2011-07-09</PostDate> 
     <trackno></trackno> 
    </elements> 
    <elements> 
     <name>//14</name> 
     <BOD></BOD> 
     <description/> 
     <URL></URL> 
     <Hobbbies> 
      <Sport></Sport> 
      <Music></Music> 
     </Hobbbies> 
     <Height></Height> 
     <PostDate>2005-10-19</PostDate> 
     <trackno></trackno> 
    </elements> 
</groups> 

產生想要的,正確的結果:

<div class="item"> 
2012-07-04 - //3 
2012-05-28 - //9 
<div class="third">2012-05-14 - //8</div> 
2012-03-04 - //1 
2012-01-04 - //7 
<div class="third">2011-12-20 - //11</div> 
2011-11-07 - //12 
2011-07-09 - //13 
<div class="third">2011-03-04 - //2</div> 
2011-02-25 - //10</div> 
+0

對不起,在這裏重新編輯http://stackoverflow.com/questions/12368915/xml-xslt-sorting-and-multi-selection非常感謝 – olo

0

我沒有'在一段時間內完成xsl,所以我的XSL有點生疏。

但是這應該工作,其中三個對應於每一個X反覆

<xsl:when test="position() mod 3 = 0"> 
    <!-- your xml render here--> 
</xsl:when> 
<xsl:otherwise><!-- your other xml here --> </xsl:otherwise> 

Mod運算符也能在其他情況下

+0

謝謝你,但不能正常工作。你能舉一個完整的例子嗎?再次感謝 – olo

+0

Dimitre上面的答案包含了xml文件中的一段代碼。您可以在選擇標籤內看到xsl:when語句。 –

相關問題