RE: [xsl] reordering elements based on...

Subject: RE: [xsl] reordering elements based on...
From: Jarno.Elovirta@xxxxxxxxx
Date: Thu, 24 Jul 2003 11:14:10 +0300
Hi,
 
> The number suffix of the name attribute value in the 
> parameter node should
> be used as grouping.
> I would like to get following structure. 
>  
> <!- parameters with ending 1 grouped into one node-->
> <element>
>             <end>2000</end>
>             <start>1000</start>
> </element>
>  
> <!- parameters with ending 2 grouped into one node-->
> <element>
>             <end>4000</end>
>             <text>texthere</text>
>             <start>3000</start>
> </element>
>  
> Is this doable at all? Or am I abusing XSL for what it can/should do? 

  <xsl:key name="x" match="parameter" use="translate(@name,translate(@name,'0123456789',''),'')"/>
  <xsl:template match="*[parameter]">
    <xsl:for-each select="parameter[generate-id() = generate-id(key('x', translate(@name,translate(@name,'0123456789',''),''))[1])]">
      <xsl:comment> parameters with ending <xsl:value-of select="translate(@name,translate(@name,'0123456789',''),'')"/> grouped into one node </xsl:comment>
      <element>
        <xsl:for-each select="key('x', translate(@name,translate(@name,'0123456789',''),''))">
          <xsl:element name="{translate(@name, '0123456789', '')}">
            <xsl:value-of select="value"/>
          </xsl:element>
        </xsl:for-each>
      </element>
    </xsl:for-each>
  </xsl:template>

See <http://www.jenitennison.com/xslt/grouping/> to understand how the Muenchian Method grouping works. Add XSLT instructions to control the sorting, the code above uses document order.

Cheers,

Jarno - The Retrosic: Antichrist (Album Version)

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread