[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Grouping problem


Subject: RE: [xsl] Grouping problem
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sat, 4 Apr 2009 15:31:36 +0100

Try this:

<xsl:template match="document">
  <xsl:sequence select="f:group(*, 1)"/>
</xsl:template>

<xsl:function name="f:group">
  <xsl:param name="input"/>
  <xsl:param name="level"/>
  <xsl:for-each-group select="$input"
group-starting-with="*[@function='section'][@level=$level]">
    <section>
      <xsl:sequence select="current-group()[@level=$level]"/>
		<!-- except that you may want to lose the function and level
attributes -->
      <xsl:sequence
select="f:group(current-group()[not(@level=$level)],$level+1)"/>
    </section>
  </xsl:for-each-group>
</xsl:function> 
 
Michael Kay
http://www.saxonica.com/  

> -----Original Message-----
> From: Vincent De Groote [mailto:list.encelade@xxxxxxxxx] 
> Sent: 04 April 2009 14:51
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Grouping problem
> 
> Hello,
> 
> I need to structure a document, based on text fragments.
> 
> I have a flat xml file like this:
> 
> <document>
>   <text-fragment function='section' level='1'> Some text 
> </text-fragment>
>   <text-fragment> Some text </text-fragment>
>   <text-fragment> Some text </text-fragment>
>   <text-fragment> Some text </text-fragment>
> 
>   <text-fragment function='section' level='2'> Some text 
> </text-fragment>
> 
>   <text-fragment> Some text </text-fragment>
>   <text-fragment> Some text </text-fragment>
>   <text-fragment> Some text </text-fragment>
> 
>   <text-fragment function='section' level='2'> Some text 
> </text-fragment>
> 
>   <text-fragment> Some text </text-fragment>
>   <text-fragment> Some text </text-fragment>
>   <text-fragment> Some text </text-fragment>
> 
>   <text-fragment function='section' level='1'> Some text 
> </text-fragment>
>   <text-fragment> Some text </text-fragment>
>   <text-fragment> Some text </text-fragment>
>   <text-fragment> Some text </text-fragment>
> 
> <document>
> 
> and I want to structure the document like this:
> 
> <document>
>    <section>
>         Some text-fragments ...
>         <section>
>              Some text-fragments ...
>         </section>
>    </section>
>    <section>
>         ... Some fragments for the second section ...
>    </section>
> </document>
> 
> Can you give me some methods, hints, references on how to do this ?
> I have already looked on Muenchian grouping, xslt2 groups, 
> but I cannot find the way to do it.
> 
> Thanks for your replies and your time ..;
> 
> Vincent De Groote


Current Thread
Keywords
xml