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

3 level grouping

Subject: 3 level grouping
From: Nathan Shaw <n8_shaw@xxxxxxxxx>
Date: Tue, 8 Jun 2004 14:15:40 -0700 (PDT)
dt get month name
Hi all. I am using the Meunchian method to group some
event calendar output. It is currently only grouped by
two levels, those being year and month. However, the
requirements have changed and I now need to group the
output by category, then year and then month. I cannot
figure out how to do this. Could someone lend a hand?
The relevant XML and XSLT is listed below. Thank you
very much in advance!

XML
<obprcal:top
xmlns="http://spaceresearch.nasa.gov/calendar"
xmlns:obprcal="http://spaceresearch.nasa.gov/calendar"
xmlns:xcal="http://www.ietf.org/internet-drafts/draft-ietf-calsch-many-xcal-01.txt">
<xcal:vcalendar xcal:version="2.0"
xcal:prodid="-//nasa.gov/NONSGML Code U Extranet
Calendar Service//EN" obprcal:category="Education
Events" obprcal:timeperiod="">
		<xcal:vevent>
			<obprcal:timeframe/>
			<obprcal:eventid>29</obprcal:eventid>
			<xcal:summary>A test future event.</xcal:summary>
			<xcal:location>Home</xcal:location>
			<xcal:categories>Education Events</xcal:categories>
			<xcal:dtstart>20040212</xcal:dtstart>
			<obprcal:dtstart_year>2004</obprcal:dtstart_year>
			<obprcal:dtstart_month>02</obprcal:dtstart_month>
			<obprcal:dtstart_day>12</obprcal:dtstart_day>
			<obprcal:dtstart_hour>00</obprcal:dtstart_hour>
			<obprcal:dtstart_minute>00</obprcal:dtstart_minute>
			<obprcal:dtstart_second>00</obprcal:dtstart_second>
			<xcal:dtend>20040212</xcal:dtend>
			<obprcal:dtend_year>2004</obprcal:dtend_year>
			<obprcal:dtend_month>02</obprcal:dtend_month>
			<obprcal:dtend_day>12</obprcal:dtend_day>
			<obprcal:dtend_hour>00</obprcal:dtend_hour>
			<obprcal:dtend_minute>00</obprcal:dtend_minute>
			<obprcal:dtend_second>00</obprcal:dtend_second>
			<xcal:url>url</xcal:url>
		</xcal:vevent>
		<xcal:vevent>
			<obprcal:timeframe/>
			<obprcal:eventid>27</obprcal:eventid>
			<xcal:summary>Education future</xcal:summary>
			<xcal:location>Your place</xcal:location>
			<xcal:categories>Education Events</xcal:categories>
			<xcal:dtstart>20040210T080000</xcal:dtstart>
			<obprcal:dtstart_year>2004</obprcal:dtstart_year>
			<obprcal:dtstart_month>02</obprcal:dtstart_month>
			<obprcal:dtstart_day>10</obprcal:dtstart_day>
			<obprcal:dtstart_hour>08</obprcal:dtstart_hour>
			<obprcal:dtstart_minute>00</obprcal:dtstart_minute>
			<obprcal:dtstart_second>00</obprcal:dtstart_second>
			<xcal:dtend>20040210T170000</xcal:dtend>
			<obprcal:dtend_year>2004</obprcal:dtend_year>
			<obprcal:dtend_month>02</obprcal:dtend_month>
			<obprcal:dtend_day>10</obprcal:dtend_day>
			<obprcal:dtend_hour>17</obprcal:dtend_hour>
			<obprcal:dtend_minute>00</obprcal:dtend_minute>
			<obprcal:dtend_second>00</obprcal:dtend_second>
			<xcal:url>url</xcal:url>
		</xcal:vevent>
</xcal:vcalendar>
<xcal:vcalendar xcal:version="2.0"
xcal:prodid="-//nasa.gov/NONSGML Code U Extranet
Calendar Service//EN" obprcal:category="General
Interest" obprcal:timeperiod="">
		<xcal:vevent>
			<obprcal:timeframe/>
			<obprcal:eventid>29</obprcal:eventid>
			<xcal:summary>A test future event.</xcal:summary>
			<xcal:location>Home</xcal:location>
			<xcal:categories>Education Events</xcal:categories>
			<xcal:dtstart>20040212</xcal:dtstart>
			<obprcal:dtstart_year>2004</obprcal:dtstart_year>
			<obprcal:dtstart_month>02</obprcal:dtstart_month>
			<obprcal:dtstart_day>12</obprcal:dtstart_day>
			<obprcal:dtstart_hour>00</obprcal:dtstart_hour>
			<obprcal:dtstart_minute>00</obprcal:dtstart_minute>
			<obprcal:dtstart_second>00</obprcal:dtstart_second>
			<xcal:dtend>20040212</xcal:dtend>
			<obprcal:dtend_year>2004</obprcal:dtend_year>
			<obprcal:dtend_month>02</obprcal:dtend_month>
			<obprcal:dtend_day>12</obprcal:dtend_day>
			<obprcal:dtend_hour>00</obprcal:dtend_hour>
			<obprcal:dtend_minute>00</obprcal:dtend_minute>
			<obprcal:dtend_second>00</obprcal:dtend_second>
			<xcal:url>url</xcal:url>
		</xcal:vevent>
		<xcal:vevent>
			<obprcal:timeframe/>
			<obprcal:eventid>27</obprcal:eventid>
			<xcal:summary>Education future</xcal:summary>
			<xcal:location>Your place</xcal:location>
			<xcal:categories>Education Events</xcal:categories>
			<xcal:dtstart>20040210T080000</xcal:dtstart>
			<obprcal:dtstart_year>2004</obprcal:dtstart_year>
			<obprcal:dtstart_month>02</obprcal:dtstart_month>
			<obprcal:dtstart_day>10</obprcal:dtstart_day>
			<obprcal:dtstart_hour>08</obprcal:dtstart_hour>
			<obprcal:dtstart_minute>00</obprcal:dtstart_minute>
			<obprcal:dtstart_second>00</obprcal:dtstart_second>
			<xcal:dtend>20040210T170000</xcal:dtend>
			<obprcal:dtend_year>2004</obprcal:dtend_year>
			<obprcal:dtend_month>02</obprcal:dtend_month>
			<obprcal:dtend_day>10</obprcal:dtend_day>
			<obprcal:dtend_hour>17</obprcal:dtend_hour>
			<obprcal:dtend_minute>00</obprcal:dtend_minute>
			<obprcal:dtend_second>00</obprcal:dtend_second>
			<xcal:url>url</xcal:url>
		</xcal:vevent>
</xcal:vcalendar>
</obprcal:top>


XSLT:
<xsl:key name="kStartDateYear" match="xcal:vevent"
use="obprcal:dtstart_year"/>
	<xsl:key name="kStartDateMonth" match="xcal:vevent"
use="concat(obprcal:dtstart_year,obprcal:dtstart_month)"/>
	<xsl:key name="kCategory" match="xcal:vevent"
use="xcal:categories"/>

<!-- VCALENDAR -->
	<xsl:template match="xcal:vcalendar">
		<xsl:variable name="currCategory"
select="@obprcal:category"/>
		<Section Title="{@obprcal:category} Calendar">
			<xsl:if test="$l_timeperiodUrlSafe = ''">
				<br/>
				<a
href="webcal://spaceresearch.nasa.gov/calendar/OBPR_{@obprcal:category}.vcs"
printURL="yes">Subscribe to this category's iCal</a>
&#160;|&#160;<a
href="http://spaceresearch.nasa.gov/calendar/OBPR_{@obprcal:category}.vcs"
printURL="yes">Download this category's iCal</a>
				<!-- the use of the $webhost variable is commented
out for now until we figure out a better way to handle
generating the proper URL
						<a
href="webcal://{$webhost}/calendar/OBPR_{$l_categoryUrlSafe}.vcs"
printURL="yes">Subscribe to this category's iCal</a>
&#160;|&#160;<a
href="http://{$webhost}/calendar/OBPR_{$l_categoryUrlSafe}.vcs"
printURL="yes">Download this category's iCal</a>
				-->
			</xsl:if>
		</Section>
		<xsl:for-each select="xcal:vevent[count(. |
key('kCategory', xcal:categories)[1]) = 1]">
			<xsl:for-each select="key('kStartDateYear',
obprcal:dtstart_year)[count(.|key('kStartDateYear',obprcal:dtstart_year)[1])
= 1]">
				<xsl:sort select="obprcal:dtstart_year"
data-type="number" order="descending"/>
				<Section Title="{obprcal:dtstart_year}">
					<xsl:for-each select="key('kStartDateYear', 
obprcal:dtstart_year)[count(.|key('kStartDateMonth',
concat(obprcal:dtstart_year,obprcal:dtstart_month))[1])
= 1]">
						<xsl:sort select="obprcal:dtstart_month"
data-type="number" order="descending"/>
						<xsl:variable name="monthName">
							<xsl:call-template name="dt:get-month-name">
								<xsl:with-param name="month"
select="obprcal:dtstart_month"/>
							</xsl:call-template>
						</xsl:variable>
						<SubSection Title="{$monthName}">
							<br/>
							<xsl:for-each select="key('kStartDateMonth',
concat(obprcal:dtstart_year,obprcal:dtstart_month))">
								<DataTable CellSpacing="0" CellPadding="2"
Border="0">
									<xsl:apply-templates select="xcal:summary"/>
									<xsl:call-template name="StartEndDateTime"/>
									<xsl:apply-templates
select="xcal:categories"/>
									<xsl:apply-templates select="xcal:location"/>
									<xsl:apply-templates
select="xcal:description"/>
									<xsl:apply-templates select="xcal:url"/>
								</DataTable>
								<br/>
							</xsl:for-each>
							<br/>
						</SubSection>
					</xsl:for-each>
				</Section>
			</xsl:for-each>
		</xsl:for-each>
	</xsl:template>



	
		
__________________________________
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 

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.