Subject: [xsl] grouping for-each From: "james walker" <jameswalkerandy@xxxxxxxxxxx> Date: Wed, 05 Nov 2003 11:41:43 +0000 |
I thought i might add an test example because i think it may help me to understand it a bit better:
<viewentries>
<viewentry><entrydata><text>ghe</text></entrydata></viewentry>
<viewentry><entrydata><text>aggj</text></entrydata></viewentry>
<viewentry><entrydata><text>bab</text></entrydata></viewentry>
<viewentry><entrydata><text>corry</text></entrydata></viewentry>
<viewentry><entrydata><text>curry</text></entrydata></viewentry>
<viewentry><entrydata><text>don</text></entrydata></viewentry>
<viewentry><entrydata><text>din</text></entrydata></viewentry>
<viewentry><entrydata><text>eat</text></entrydata></viewentry>
<viewentry><entrydata><text>carry</text></entrydata></viewentry>
<viewentry><entrydata><text>edd</text></entrydata></viewentry>
<viewentry><entrydata><text>abbl</text></entrydata></viewentry>
<viewentry><entrydata><text>ebdads</text></entrydata></viewentry>
<viewentry><entrydata><text>ettf</text></entrydata></viewentry>
<viewentry><entrydata><text>full</text></entrydata></viewentry>
<viewentry><entrydata><text>geik</text></entrydata></viewentry>
</viewentries>
<xsl:key name="ve-by-firstocc" match="viewentry" use="substring(entrydata/text,1,1)" />
<xsl:template match="viewentries">
<xsl:for-each select="viewentry[count(. | key('ve-by-firstocc', substring(entrydata/text,1,1))[1]) = 1]">
<xsl:sort select="substring(entrydata/text,1,1)" data-type="text" order="ascending"/>
<xsl:variable name="firstletter" select="substring(entrydata/text,1,1)" />
<xsl:value-of select="substring(entrydata/text,1,1)"/>
<xsl:for-each select="key('ve-by-firstocc', substring(entrydata/text,1,1))">
<xsl:sort select="entrydata/text" data-type="text" order="ascending"/>
<xsl:value-of select="entrydata/text" />
</xsl:for-each>
</xsl:for-each>
</xsl:template>
how would it loop through the viewentries for bothe for each staements?
From: "james walker" <jameswalkerandy@xxxxxxxxxxx> Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] Interpretaion of grouping for-each Date: Tue, 04 Nov 2003 10:24:03 +0000
What does count() =1 represent (got a bit confused about jeni's explanation)
"and"count(. | .....) =1 id the currently selected viewdata is that first element. so
Just to be clear, am i right in saying that "viewentry{key('ve-by-firstocc', substring(entrydata[3]/text,1,1))[1]]" selects the first of each group of viewentries with the same key (including groups which only have one viewentry in it)?
From: David Carlisle <davidc@xxxxxxxxx> Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] Interpretaion of grouping for-each Date: Mon, 3 Nov 2003 17:02:29 GMT
> Does it go through viewentries which have dont have repeat key values?
No it selects the first (in document order) viewentry with each key value (even if that key value is not repeated).
See any description of muenchian grouping, eg Jeni's site.
<xsl:for-each select="viewentry that selects all viewentries then key('ve-by-firstocc', substring(entrydata[3]/text,1,1)) selects al the entries with the same key, so key('ve-by-firstocc', substring(entrydata[3]/text,1,1))[1] selects the first of that group and count(. | .....) =1 id the currently selected viewdata is that first element. so viewentry[....] just selects the first entry in each group as teh predicate is false in other case.
David
-- http://www.dcarlisle.demon.co.uk/matthew
________________________________________________________________________ This e-mail has been scanned for all viruses by Star Internet. The service is powered by MessageLabs. For more information on a proactive anti-virus service working around the clock, around the globe, visit: http://www.star.net.uk ________________________________________________________________________
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
_________________________________________________________________
Use MSN Messenger to send music and pics to your friends http://www.msn.co.uk/messenger
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
_________________________________________________________________
It's fast, it's easy and it's free. Get MSN Messenger today! http://www.msn.co.uk/messenger
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] precompiled XSL Styleshee, Michael Kay | Thread | [xsl] variable binding, Shipra Dingare |
RE: [xsl] precompiled XSL Styleshee, Michael Kay | Date | Re: [xsl] recursive call of templat, Michael Olszynski |
Month |