Hi Michael
Does $firstN have a value in the PartyList/When [1] template?
yes.
Is the PartyList/When [last()] template actually being called?
yes.
If so, something very odd is going on. Tell us which processor you are
using, and post a complete stylesheet + source document so we can debug
it for you.
I am using MSXML not sure about the processor. If i have an xml
parser do i automatically have a processor aswell?
I am using xmlSpy to step through the transformation process. At
the bottom of this mail is the html output i am getting.
xml file:
<?xml:stylesheet TYPE="text/xsl" href="Trending3B.xsl"?>
<Events>
<Theatre>
<When DateTime="Thursday 14 November 2002 11:50"
Attendance="54"/>
<When DateTime="Thursday 14 November 2002 11:51"
Attendance="54"/>
<When DateTime="Thursday 14 November 2002 11:53"
Attendance="52"/>
<When DateTime="Thursday 14 November 2002 11:54"
Attendance="52"/>
<When DateTime="Thursday 14 November 2002 11:55"
Attendance="50"/>
<When DateTime="Thursday 14 November 2002 11:56"
Attendance="54"/>
<When DateTime="Thursday 14 November 2002 11:57"
Attendance="50"/>
<When DateTime="Thursday 14 November 2002 11:58"
Attendance="100"/>
<When DateTime="Thursday 14 November 2002 11:59"
Attendance="50"/>
<When DateTime="Thursday 14 November 2002 12:00"
Attendance="52"/>
<When DateTime="Thursday 14 November 2002 12:01"
Attendance="50"/>
<When DateTime="Thursday 14 November 2002 12:02"
Attendance="56"/>
</Theatre>
<Beach>
<When DateTime="Thursday 14 November 2002 17:04"
Attendance="90"/>
<When DateTime="Thursday 14 November 2002 17:07"
Attendance="65"/>
<When DateTime="Thursday 14 November 2002 17:08"
Attendance="100"/>
<When DateTime="Thursday 14 November 2002 17:09"
Attendance="52"/>
<When DateTime="Thursday 14 November 2002 17:10"
Attendance="66"/>
<When DateTime="Thursday 14 November 2002 17:10"
Attendance="54"/>
<When DateTime="Thursday 14 November 2002 17:11"
Attendance="52"/>
<When DateTime="Thursday 14 November 2002 17:12"
Attendance="73"/>
<When DateTime="Thursday 14 November 2002 17:13"
Attendance="56"/>
<When DateTime="Thursday 14 November 2002 17:14"
Attendance="53"/>
<When DateTime="Thursday 14 November 2002 17:15"
Attendance="54"/>
<When DateTime="Thursday 14 November 2002 17:16"
Attendance="50"/>
<When DateTime="Thursday 14 November 2002 17:19"
Attendance="56"/>
</Beach>
<PartyList>
<When DateTime="Thursday 14 November 2002 11:51"
Attendance="50"/>
<When DateTime="Thursday 14 November 2002 11:53"
Attendance="72"/>
<When DateTime="Thursday 14 November 2002 11:54"
Attendance="52"/>
<When DateTime="Thursday 14 November 2002 11:55"
Attendance="53"/>
<When DateTime="Thursday 14 November 2002 11:56"
Attendance="66"/>
<When DateTime="Thursday 14 November 2002 11:57"
Attendance="55"/>
<When DateTime="Thursday 14 November 2002 11:58"
Attendance="88"/>
<When DateTime="Thursday 14 November 2002 16:55"
Attendance="57"/>
<When DateTime="Thursday 14 November 2002 16:56"
Attendance="100"/>
<When DateTime="Thursday 14 November 2002 16:57"
Attendance="59"/>
</PartyList>
<DateFrom>Saturday, 09 November 2002</DateFrom>
<DateTo>Saturday, 16 November 2002</DateTo>
</Events>
------------------------------------------------------------------------
------------------------------------------------------------------
xsl file:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- EVENTS.XSL -->
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>Event List</TITLE>
<LINK REL="stylesheet" TYPE="text/css" HREF="events.css"
/>
</HEAD>
<BODY>
<H1>Event Report</H1>
<H3>From <xsl:value-of select="//DateFrom"/> To
<xsl:value-of select="//DateTo"/></H3>
<H3></H3>
<xsl:apply-templates />
</BODY>
</HTML>
</xsl:template>
<xsl:template match="Theatre">
<H3>Theatre</H3>
<TABLE ID="tblTheatre" BORDER="0">
<TR class="clsHeader"><TD width="170">Minimum
Value</TD><TD width="170">Peak Value</TD><TD
width="250">Average</TD></TR>
<xsl:choose>
<xsl:when test="/Theatre/*[count(When)=0]">
<TD><br>
</br>No 'Theatre' logs
available.</TD>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates
select="When[(_at_)Attendance]">
<xsl:sort
select="@Attendance" order="ascending" data-type="number"/>
</xsl:apply-templates>
<TD><xsl:value-of
select="sum(//@Attendance) div count(//@Attendance)"/></TD>
</xsl:otherwise>
</xsl:choose>
</TABLE>
</xsl:template>
<xsl:template match="Beach">
<H3>Beach</H3>
<TABLE ID="tblBeach" BORDER="0">
<TR class="clsHeader"><TD width="170">Minimum
Value</TD><TD width="170">Peak Value</TD><TD
width="250">Average</TD></TR>
<xsl:choose>
<xsl:when test="/Beach/*[count(*) = 0]">
<TD><br>
</br>No 'Beach' logs
available.</TD>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates
select="When[(_at_)Attendance]">
<xsl:sort select="@Attendance"
order="ascending" data-type="number"/>
</xsl:apply-templates>
<TD><xsl:value-of
select="sum(//@Attendance) div count(//@Attendance)"/></TD>
</xsl:otherwise>
</xsl:choose>
</TABLE>
</xsl:template>
<xsl:template match="PartyList">
<H3>PartyList</H3>
<xsl:apply-templates select="When[(_at_)Attendance]">
<xsl:sort select="@Attendance" order="ascending"
data-type="number"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="Theatre/When[(_at_)Attendance]">
<xsl:if test="position() = 1">
<TD>CURRENT min<xsl:value-of select="@Attendance"
/></TD>
</xsl:if>
<xsl:if test="position() = last()">
<TD>CURRENT max<xsl:value-of select="@Attendance"/></TD>
</xsl:if>
</xsl:template>
<xsl:template match="Beach/When[(_at_)Attendance]">
<xsl:if test="position() = 1">
<TD><xsl:value-of select="@Attendance" /></TD>
</xsl:if>
<xsl:if test="position() = last()">
<TD><xsl:value-of select="@Attendance"/></TD>
</xsl:if>
</xsl:template>
<xsl:template match="PartyList/When[last()]">
<xsl:param name = "first"/>
<xsl:param name = "last" select="@Attendance"/>
<xsl:variable name="difference" select = "$last -
$first"/>
<TD><xsl:value-of select="$first"/></TD>
<TD><xsl:value-of select="$last"/></TD>
<TD><xsl:value-of select="$difference"/></TD>
</xsl:template>
<xsl:template match="PartyList/When[1]">
<xsl:variable name="firstN"><xsl:value-of
select="@Attendance"/></xsl:variable>
<TD><xsl:value-of select="$firstN"/></TD>
<xsl:apply-templates select="following-sibling::When [last()]">
<xsl:with-param name="first" select="number($firstN)"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="DateFrom | DateTo">
</xsl:template>
</xsl:stylesheet>
------------------------------------------------------------------------
------------------------------------------------------------------
html output;
<HTML><HEAD> <META http-equiv="Content-Type"
content="text/html; charset=UTF-8"><TITLE>Event List</TITLE><LINK
REL="stylesheet" TYPE="text/css" HREF="event.css"></HEAD><BODY><H1>Event
Report</H1><H3>From Saturday, 09 November 2002 To Saturday, 16 November
2002</H3>
<H3>
</H3><H3>Theatre</H3>
<TABLE ID="tblAlarms" BORDER="0">
<TR class="clsHeader"><TD width="170">Minimum
Value</TD><TD width="170">Peak Value</TD><TD width="250">Average</TD>
</TR><TD>T min50</TD><TD>CURRENT
max54</TD><TD>52.6</TD>
</TABLE><H3>Beach</H3>
<TABLE ID="tblAlarms2" BORDER="0">
<TR class="clsHeader"><TD width="170">Minimum
Value</TD><TD width="170">Peak Value</TD><TD width="250">Average</TD>
</TR><TD>50</TD><TD>56</TD><TD>52.6</TD>
</TABLE><H3>PartyList</H3><TD>50</TD><TD></TD><TD>59</TD><TD>NaN</TD>
</BODY></HTML>
Thanks in advance
marsha
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list