[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] Re: Adjusting sorted list
Subject: Re: [xsl] Re: Adjusting sorted list From: Andrew Timberlake <andrew.lists@xxxxxxxxx> Date: 16 May 2002 18:42:37 +0200 |
I've been playing with this idea and have created an interesting side effect. Using source: <root> <a> <b val="4">four</b> <b val="9">nine</b> <b val="6">six</b> <b val="1">one</b> <b val="8">eight</b> <b val="6">six</b> <b val="4">four</b> <b val="7">seven</b> </a> <a> <b val="9">nine</b> <b val="5">five</b> <b val="5">five</b> </a> </root> And style sheet: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:key name="kRanking" match="b" use="@val"/> <xsl:template match="/root/a"> <a> <xsl:for-each select="b[generate-id() = generate-id(key('kRanking',@val)[1]) ]"> <xsl:sort select="@val" data-type="number"/> <xsl:variable name="vPos" select="position()"/> <xsl:for-each select="key('kRanking',@val)"> <b rank="{$vPos}"> <xsl:value-of select="."/> </b> </xsl:for-each> </xsl:for-each> </a> </xsl:template> </xsl:stylesheet> I now get: <a> <b rank="1">one</b> <b rank="2">four</b> <b rank="2">four</b> <b rank="3">six</b> <b rank="3">six</b> <b rank="4">seven</b> <b rank="5">eight</b> <b rank="6">nine</b> <b rank="6">nine</b> </a> <a> <b rank="1">five</b> <b rank="1">five</b> </a> What have I done??? Andrew On Thu, 2002-05-16 at 16:58, Dimitre Novatchev wrote: > Bellow is the stylesheet that does this: > > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:output omit-xml-declaration="yes" indent="yes"/> > > <xsl:key name="kRanking" match="b" use="."/> > > <xsl:template match="/"> > <a> > <xsl:for-each select="/a/b[generate-id() > = > generate-id(key('kRanking',.)[1]) > ]"> > <xsl:sort select="." data-type="number"/> > > <xsl:variable name="vPos" select="position()"/> > > <xsl:for-each select="key('kRanking',.)"> > <b rank="{$vPos}"> > <xsl:value-of select="."/> > </b> > > </xsl:for-each> > </xsl:for-each> > </a> > </xsl:template> > </xsl:stylesheet> > > With your source xml it produces exactly the desires result: > > <a> > <b rank="1">1</b> > <b rank="2">4</b> > <b rank="2">4</b> > <b rank="3">6</b> > <b rank="3">6</b> > <b rank="4">7</b> > <b rank="5">8</b> > <b rank="6">9</b> > </a> > > Hope this helped. > > Cheers, > Dimitre Novatchev. > > > > > __________________________________________________ > Do You Yahoo!? > LAUNCH - Your Yahoo! Music Experience > http://launch.yahoo.com > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > -- Andrew Timberlake Digital Design Development http://www.ddd.co.za mailto:andrew@xxxxxxxxx 011 705 1737 082 415 8283 "If debugging is the process of removing bugs, then programming must be the process of putting them in." XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Re: Adjusting sorted list, Dimitre Novatchev | Thread | RE: [xsl] Re: Adjusting sorted list, TSchutzerWeissmann |
RE: [xsl] Variable confusion, Stuart Celarier | Date | [xsl] Empty textarea tag in stylesh, Charles Knell |
Month |
Keywords