xsl-list
[Top] [All Lists]

RE: reordering elements based on...

2003-07-24 01:14:10
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



<Prev in Thread] Current Thread [Next in Thread>