I have an XSL file which generates a calendar and an XML file which
represents the month and events which occur during the month.
The XML file representing the events is:
<?xml version="1.0" encoding="utf-8"?>
<month start="1" days="31" num="10" year="2006" today="12">
<name>October 2006</name>
<Events>
<Event>
<GroupGUID>7F4616F5-BEB6-4A68-87E9-3FAD45BD25CB</GroupGUID>
<EventID>1</EventID>
<EventTitle>Fundraiser</EventTitle>
<StartDate>2006-10-09T00:00:00</StartDate>
<EndDate>2006-10-11T00:00:00</EndDate>
<Depth>1</Depth>
<Date>
<EventDateID>1</EventDateID>
<EventDate>2006-10-09T00:00:00</EventDate>
<EventStartTime>2006-10-09T09:00:00</EventStartTime>
<EventEndTime>2006-10-09T21:00:00</EventEndTime>
</Date>
<Date>
<EventDateID>2</EventDateID>
<EventDate>2006-10-11T00:00:00</EventDate>
<EventStartTime>2006-10-11T09:00:00</EventStartTime>
<EventEndTime>2006-10-11T21:00:00</EventEndTime>
</Date>
</Event>
<Event>
<GroupGUID>7F4616F5-BEB6-4A68-87E9-3FAD45BD25CB</GroupGUID>
<EventID>2</EventID>
<EventTitle>Fundraiser</EventTitle>
<StartDate>2006-10-12T00:00:00</StartDate>
<EndDate>2006-10-12T00:00:00</EndDate>
<Depth>1</Depth>
<Date>
<EventDateID>1</EventDateID>
<EventDate>2006-10-12T00:00:00</EventDate>
<EventStartTime>2006-10-12T09:00:00</EventStartTime>
<EventEndTime>2006-10-12T21:00:00</EventEndTime>
</Date>
</Event>
</Events>
</month>
In the XSL I attempt to determine if the current date in the loop exists in
the event list. ($index-$start+1 represents the current date)
<xsl:choose>
<xsl:when test="(substring(//EventDate/., 9, 2) = $index - $start
+1)">
<xsl:element name="a">
<xsl:attribute
name="href">javascript:viewDate(<xsl:value-of select="$index - $start
+1"/>);</xsl:attribute>
<xsl:value-of select="$index - $start + 1"/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="a">
<xsl:attribute
name="href">javascript:void(0);</xsl:attribute>
<xsl:value-of select="$index - $start + 1"/>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
The problem I've encountered is the test only seems to match the first
instance of the /Events/Event/Date/EventDate as opposed to any of the
instances of EventDate. So my resulting HTML has the 9th highlighted, but
not the 11th or 12th.
I could loop through all of the EventDates using for each, but that would
seem wasteful to loop through a potentially large XML for every day of the
month.
Does anyone have any thoughts on why it's only matching the first instance
of EventDate?
David Steketee
____________________
technology consultant
http://www.visualstructures.com/
(P) 917-432-4459
--~------------------------------------------------------------------
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>
--~--