RE: [xsl] Parameter problem

Subject: RE: [xsl] Parameter problem
From: "Marsha Salo" <Marsha@xxxxxxxxxxxxx>
Date: Thu, 2 Oct 2003 17:11:46 +0200
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[@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[@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[@Attendance]">
			<xsl:sort select="@Attendance" order="ascending"
data-type="number"/>	
	</xsl:apply-templates>
</xsl:template>

<xsl:template match="Theatre/When[@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[@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


Current Thread