[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

grouping for-each

Subject: grouping for-each
From: "james walker" <jameswalkerandy@xxxxxxxxxxx>
Date: Wed, 05 Nov 2003 11:41:43 +0000
xsl for each
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:  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:  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



_________________________________________________________________
Express yourself with cool emoticons - download MSN Messenger today! http://www.msn.co.uk/messenger



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



Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.