2009-12-14 8 views
0

J'ai un ensemble d'éléments que je regroupe en utilisant la méthode muenchian à l'aide des touches. Cela fonctionne très bien, mais quand j'essaie de faire des choses avec le premier nombre d'éléments, il le fait sur le nombre x d'éléments de chaque groupe plutôt que sur l'ensemble des résultats. Comment pourrais-je obtenir la position individuelle de chaque article à travers la collection entière?XSLT Nombre total d'éléments groupés

<xsl:key name="pictures-by-productid" match="/dsQueryResponse/Rows/Row" use="@ProductId" /> 


<xsl:template match="/"> 
    <div style="border:1px solid red; float:left;"> 
     <xsl:apply-templates select="/" mode="sub"> 

     </xsl:apply-templates> 
    </div> 
</xsl:template> 

et le second modèle

<xsl:template match="/" mode="sub"> <xsl:for-each select="/dsQueryResponse/Rows/Row[count(. | key('pictures-by-productid', @ProductId)[1]) = 1]"> 
     <xsl:for-each select="key('pictures-by-productid', @ProductId)">    
      <xsl:sort select="@PictureType" />     
      <div style="float:left; margin:2px;"> 
      <img src="{@ThumbNailUrl}" width="58" /> <br />    
      Download    
      <xsl:number value="position()" format="1. " /> 
      <xsl:value-of select="." /> 
      </div> 

     </xsl:for-each> 
    </xsl:for-each> 
</xsl:template> 
+0

Pouvez-vous fournir le code XML source? –

Répondre

0
<xsl:key 
    name="pictures-by-productid" 
    match="/dsQueryResponse/Rows/Row" 
    use="@ProductId" 
/> 

<xsl:template match="/"> 
    <div style="border:1px solid red; float:left;"> 
    <!-- iterate the group, sorted by PictureType… --> 
    <xsl:for-each select="/dsQueryResponse/Rows/Row[ 
     count(. | key('pictures-by-productid', @ProductId)[1]) = 1 
    ]"> 
     <xsl:sort select="@PictureType"> 
     <!-- …and output only if among the fist 6 items --> 
     <xsl:if test="position() &lt;= 6"> 
     <xsl:apply-templates 
      mode="picture" 
      select="key('pictures-by-productid', @ProductId)" 
     /> 
     </xsl:if> 
    </xsl:for-each> 
    </div> 
</xsl:template> 

<xsl:template match="/dsQueryResponse/Rows/Row" mode="picture"> 
    <div style="float:left; margin:2px;"> 
    <img src="{@ThumbNailUrl}" width="58" /> <br />       
    <xsl:text>Download </xsl:text> 
    <xsl:number value="position()" format="1. " /> 
    <xsl:value-of select="." /> 
    </div> 
</xsl:template> 
Questions connexes