xsl-list
[Top] [All Lists]

RE: [xsl] Grouping into duplicates and non duplicate lists

2009-11-13 21:44:35
Hi David,

Thanks for that. I have put it together and it works!! It does not look too 
elegant and I need to use 2 keys to do what I want. Here is the template if 
anyone has any suggestions for improving - happy to take on board... Thanks 
again:

<xsl:template match="CourseNote">
                <xsl:variable name="sgcount" 
select="count(CourseNoteItem[count(. | key('CN-SG', concat(Year, 
StudyGroupCode))[1]) = 1])" />
                <xsl:if test="CourseNoteItem[count(. | key('CN-T', concat(Year, 
CourseNoteText))[1]) = 1][count(key('CN-T', concat(Year, 
CourseNoteText)))=$sgcount]">
                        <strong>Applies to all Study Groups</strong>
                        <br />
                        <ul>
                                <xsl:for-each select="CourseNoteItem[count(. | 
key('CN-T', concat(Year, CourseNoteText))[1]) = 1][count(key('CN-T', 
concat(Year, CourseNoteText)))=$sgcount]">
                                        <xsl:sort select="DisplaySequence" />
                                        <li>
                                                <xsl:copy-of 
select="CourseNoteText/node()" />
                                        </li>
                                </xsl:for-each>
                        </ul>
                </xsl:if>
                <xsl:for-each select="CourseNoteItem[count(. | key('CN-SG', 
concat(Year, StudyGroupCode))[1]) = 1]">
                        <xsl:sort select="StudyGroupOrder" />
                        <xsl:if test="key('CN-SG', concat(Year, 
StudyGroupCode))[count(key('CN-T', concat(Year, CourseNoteText)))!=$sgcount]">
                                <strong>
                                        <xsl:value-of select="StudyGroupName" 
/> - Only</strong>
                                <br />
                                <ul>
                                        <xsl:for-each select="key('CN-SG', 
concat(Year, StudyGroupCode))[count(key('CN-T', concat(Year, 
CourseNoteText)))!=$sgcount]">
                                                <li>
                                                        <xsl:copy-of 
select="CourseNoteText/node()" />
                                                </li>
                                        </xsl:for-each>
                                </ul>
                        </xsl:if>
                </xsl:for-each>
        </xsl:template>

 
Tim Cavanagh
Senior Technical Architect
PH: 0434 079402   FAX:  8207 8554

-----Original Message-----
From: David Carlisle [mailto:davidc(_at_)nag(_dot_)co(_dot_)uk] 
Sent: Saturday, 14 November 2009 10:09 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Grouping into duplicates and non duplicate lists


not looked in detail at your example, just perhaps just answering this
bit iis enough

 I am familiar with keys and get get lists of unigue items and group
 them but I cannot exclude the items that do not appear in all
 StudyGroups...  

one way

<xsl:key name="sg" match="studyroup" use="item"/>

then <xsl:variable name="n" select="count(studygroup)"/>

so to know if . the current item is in all groups you can test 
count(key('sg',.))=$n
as if it is in all groups then the key will return them all

David


________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 
________________________________________________________________________

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

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