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>
--~--