You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by il...@apache.org on 2002/10/31 16:20:08 UTC

cvs commit: xml-xalan/test tableResults.xsl

ilene       2002/10/31 07:20:08

  Added:       test     tableResults.xsl
  Log:
  Committing Gordon Chiu's (grchiu@ca.ibm.com) stylesheet for formatting
  test results into a category and flavor conformance matrix.
  
  Revision  Changes    Path
  1.1                  xml-xalan/test/tableResults.xsl
  
  Index: tableResults.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                  xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
                  xmlns:xalan="http://xml.apache.org/xslt"
                  extension-element-prefixes="redirect" version="1.0">
  	<xsl:output method="xml" indent="yes" xalan:indent-amount="2"
  			doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  			doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" />
  
  <!-- FileName: tableResults.xsl -->
  <!-- Author:   Gordon Chiu <gr...@ca.ibm.com> -->
  <!-- Date:     10/10/2002 -->
  <!-- Purpose:  Format org.apache.qetest.XMLFileLogger logFile results 
                 into a table-based HTML page -->
  <!-- Modified: 10/17/2002 removed 'trax', is 'systemId'
                 10/22/2002 takes directory as argument -->
  
  <!-- Quick how to use:
  
  	Note: If using Xalan to run this stylesheet, it requires Xalan >= 2.4.1.
  
    This stylesheet operates on the results of a build alltest.conf.
    1. In place of viewResults.xsl to analyze results:
       In Windows, set RESULTSCANNER=tableResults.xsl
       Execute viewResults.bat results-alltest\conf\sax\results.xml.
  		 (the stylesheet will find the other xml files).
       In UNIX, modify viewResults.sh to call use tableResults.xsl.
    2. To compare a current run against a previous run:
       Run the stylesheet with the parameter 'compareAgainst' which
       points to the results-alltest/conf directory of another test run.
    3. To analyze results from build alltest.conf.xsltc, run the
       stylesheet with the parameter 'resultDir' which points to the
       results-alltest.xsltc/conf directory of the xsltc test run.
  
  -->
  
  	<!-- Directory of results to compare against
  	     Specify a directory of old results to get cross comparison. -->
  	<xsl:param name="resultDir" select="string('results-alltest/conf')"/>
  	<xsl:param name="compareAgainst" select="$resultDir"/>
  
  	<!-- Basic Structure of output document -->
  	<xsl:template match="resultsfile">
  		<HTML>
  			<HEAD>
  				<STYLE TYPE="text/css">
  					body { font-family: Verdana; font-size: 9pt; }
  					tr { font-family: Verdana; font-size: 9pt; }
  					td { font-family: Verdana; font-size: 9pt; }
  				</STYLE>
  			</HEAD>
  			<BODY>
  				<xsl:apply-templates select="testfile[last()]"/>
  			</BODY>
  		</HTML>
  	</xsl:template>
  
  	<!-- Output information about the test run from the hashtable -->
  	<xsl:template match="testfile" mode="hashElements">
  		<xsl:value-of select="hashtable/hashitem[@key='version.xalan2x']"/> (<xsl:value-of select="@time"/>) and
  		<xsl:value-of select="hashtable/hashitem[@key='version.xerces2']"/><BR/>
  		<xsl:value-of select="hashtable/hashitem[@key='java.vm.vendor']"/>
  		JDK <xsl:value-of select="hashtable/hashitem[@key='java.vm.version']"/><BR/>
  		Test run by: <xsl:value-of select="hashtable/hashitem[@key='user.name']"/>
  		on a <xsl:value-of select="hashtable/hashitem[@key='os.arch']"/>
  		running <xsl:value-of select="hashtable/hashitem[@key='os.name']"/>
  	</xsl:template>
    
  	<!-- Output the summary and category summaries for test sets. -->
  	<xsl:template match="testfile">
  		<!-- Set up two variables for test results, and old test results. -->
  		<xsl:variable name="resultsfile">
  			<xsl:value-of select="document(concat($resultDir,'/dom/results.xml'))/resultsfile 
  			  | document(concat($resultDir,'/sax/results.xml'))/resultsfile 
  			  | document(concat($resultDir,'/stream/results.xml'))/resultsfile 
  			  | document(concat($resultDir,'/file/results.xml'))/resultsfile 
  			  | document(concat($resultDir,'/systemId/results.xml'))/resultsfile 
  			  | document(concat($resultDir,'/localPath/results.xml'))/resultsfile"/>
  		</xsl:variable>
  		<xsl:variable name="oldfile">
  			<xsl:value-of select="document(concat($compareAgainst,'/dom/results.xml'))/resultsfile 
  					| document(concat($compareAgainst,'/sax/results.xml'))/resultsfile 
  					| document(concat($compareAgainst,'/stream/results.xml'))/resultsfile 
  					| document(concat($compareAgainst,'/file/results.xml'))/resultsfile 
  					| document(concat($compareAgainst,'/systemId/results.xml'))/resultsfile 
  					| document(concat($compareAgainst,'/localPath/results.xml'))/resultsfile"/>
  		</xsl:variable>
  		<!-- Number of flavours; used for column widths -->
  		<xsl:variable name="flavs" select="count($resultsfile/testfile)"/>
  		<TABLE BORDER="1" CELLPADDING="5" CELLSPACING="0">
  			<TR>
  				<xsl:element name="TD">
  					<xsl:attribute name="COLSPAN">
  						<xsl:value-of select="$flavs + 2"/>
  					</xsl:attribute>
  					<B>Conformance Test Results on <xsl:value-of select="@time"/></B>
  				</xsl:element>
  			</TR>
  			<TR>
  				<TD COLSPAN="1"><B>Environment</B></TD>
  				<xsl:element name="TD">
  					<xsl:attribute name="COLSPAN">
  						<xsl:value-of select="$flavs + 1"/>
  					</xsl:attribute>
  					<xsl:variable name="flavor">
  						<xsl:value-of select="hashtable/hashitem[@key='flavor']"/>
  					</xsl:variable>
  					<b>Currently Tested:</b><br/>
  					<xsl:apply-templates select="." mode="hashElements"/><br/>
  					<b>Compared Against:</b><br/>
  					<xsl:apply-templates select="$oldfile/testfile[hashtable/hashitem[@key='flavor'] = $flavor]" mode="hashElements"/>
  				</xsl:element>
  			</TR>
  			<xsl:call-template name="teststatus">
  				<xsl:with-param name="resultsfile" select="$resultsfile"/>
  			</xsl:call-template>
  			<TR>
  				<xsl:element name="TD">
  					<xsl:attribute name="COLSPAN">
  						<xsl:value-of select="$flavs + 2"/>
  					</xsl:attribute><B>Category Summaries</B>
  				</xsl:element>
  			</TR>
  			<xsl:for-each select="testcase">
  				<xsl:call-template name="testcase">
  					<xsl:with-param name="resultsfile" select="$resultsfile"/>
  					<xsl:with-param name="oldfile" select="$oldfile"/>
  					<xsl:with-param name="bg">
  						<xsl:choose>
  							<xsl:when test="position() mod 2 = 1">#F0F0F0</xsl:when>
  							<xsl:otherwise>#FFFFFF</xsl:otherwise>
  						</xsl:choose>
  					</xsl:with-param>
  				</xsl:call-template>
  			</xsl:for-each>
  			<TR>
  				<xsl:element name="TD">
  					<xsl:attribute name="COLSPAN">
  						<xsl:value-of select="$flavs + 2"/>
  					</xsl:attribute><B>Legend</B>
  				</xsl:element>
  			</TR>
  			<TR>
  				<TD><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text></TD>
  				<xsl:element name="TD">
  					<xsl:attribute name="COLSPAN">
  						<xsl:value-of select="$flavs + 1"/>
  					</xsl:attribute>
  					<BR/>
  					<UL>
  						<LI><B><FONT COLOR="#FF0000">New/Regression Failure</FONT></B></LI>
  						<LI><FONT COLOR="#FF0000">Existing Failure</FONT></LI>
  						<LI><FONT COLOR="#008000"><STRIKE>New Pass</STRIKE></FONT></LI>
  						<LI><FONT COLOR="#FF00FF">Excluded Test</FONT></LI>
  					</UL>
  				</xsl:element>
  			</TR>
  		</TABLE>
  	</xsl:template>
  
  	<xsl:template name="testcase">
  		<xsl:param name="resultsfile"/>
  		<xsl:param name="oldfile"/>
  		<xsl:param name="bg"/>
  		<xsl:variable name="category" select="substring-after(@desc,': ')"/>
  		<xsl:variable name="excludesListAll">
  			<xsl:call-template name="buildList">
  				<xsl:with-param name="category" select="$category"/>
  				<xsl:with-param name="list" select="$resultsfile//hashtable/hashitem[@key='excludes']"/>
  			</xsl:call-template>
  		</xsl:variable>
  		<xsl:variable name="oldFailListAll">
  			<xsl:for-each select="$oldfile/testfile/testcase[contains(@desc,$category)]/checkresult[not(@result='Pass') and contains(@desc,$category)]">#</xsl:for-each>
  		</xsl:variable>
  		<xsl:element name="TR">
  			<xsl:attribute name="BGCOLOR"><xsl:value-of select="$bg"/></xsl:attribute>
  			<xsl:element name="TD">
  				<xsl:attribute name="ROWSPAN">
  					<xsl:choose>
  						<xsl:when test="count($resultsfile/testfile/testcase[$category = substring-after(@desc,': ')]/checkresult[not(@result='Pass')]) > 0 or not($excludesListAll = '') or not($oldFailListAll = '')">
  							4
  						</xsl:when>
  						<xsl:otherwise>
  							3
  						</xsl:otherwise>
  					</xsl:choose>
  				</xsl:attribute>
  				<xsl:value-of select="$category"/>
  			</xsl:element>
  		</xsl:element>
  		<xsl:element name="TR">
  			<xsl:attribute name="BGCOLOR"><xsl:value-of select="$bg"/></xsl:attribute>
  			<TD VALIGN="TOP">#cases</TD>
  			<xsl:for-each select="$resultsfile/testfile/testcase[$category = substring-after(@desc,': ')]">
  				<TD VALIGN="TOP">
  					<xsl:value-of select="count(checkresult)"/>
  				</TD>
  			</xsl:for-each>
  		</xsl:element>
  		<xsl:element name="TR">
  			<xsl:attribute name="BGCOLOR"><xsl:value-of select="$bg"/></xsl:attribute>
  			<TD VALIGN="TOP">pass</TD>
  			<xsl:for-each select="$resultsfile/testfile/testcase[$category = substring-after(@desc,': ')]">
  				<TD VALIGN="TOP">
  					<xsl:variable name="passList">
  						<xsl:for-each select="checkresult[@result='Pass']">
  							<xsl:sort select="substring-before(substring-after(@desc,$category),'.')" data-type="number"/>
  							<xsl:variable name="cur" select="substring-before(substring-after(@desc,$category),'.')"/>
  							<xsl:value-of select="$cur"/>
  							<xsl:if test="not(position()=last())">
  								<xsl:text> </xsl:text>
  							</xsl:if>
  						</xsl:for-each>
  					</xsl:variable>
  					<xsl:call-template name="condense">
  						<xsl:with-param name="list" select="$passList"/>
  						<xsl:with-param name="prev" select="-1"/>
  					</xsl:call-template>
  				</TD>
  			</xsl:for-each>
  		</xsl:element>
  		<xsl:if test="count($resultsfile/testfile/testcase[$category = substring-after(@desc,': ')]/checkresult[not(@result='Pass')]) > 0 or not($excludesListAll = '') or count($oldfile/testfile/testcase[contains(@desc,$category)]/checkresult[not(@result='Pass')]) > 0">
  			<xsl:element name="TR">
  				<xsl:attribute name="BGCOLOR"><xsl:value-of select="$bg"/></xsl:attribute>
  				<TD VALIGN="TOP">fail/err</TD>
  				<xsl:for-each select="$resultsfile/testfile/testcase[$category = substring-after(@desc,': ')]">
  					<xsl:variable name="flavor">
  						<xsl:value-of select="../hashtable/hashitem[@key='flavor']"/>
  					</xsl:variable>
  					<xsl:variable name="excludesList">
  						<xsl:call-template name="buildList">
  							<xsl:with-param name="category" select="$category"/>
  							<xsl:with-param name="list" select="../hashtable/hashitem[@key='excludes']"/>
  						</xsl:call-template>
  					</xsl:variable>
  					<xsl:variable name="oldFailList">
  						<xsl:for-each select="$oldfile/testfile[hashtable/hashitem[@key='flavor'] = $flavor]/testcase[contains(@desc,$category)]/checkresult[not(@result='Pass') and contains(@desc,$category)]">
  							<xsl:sort select="substring-before(substring-after(@desc,$category),'.')" data-type="number"/>
  							<xsl:variable name="cur" select="substring-before(substring-after(@desc,$category),'.')"/>
  							<xsl:value-of select="$cur"/>
  							<xsl:if test="not(position()=last())">
  								<xsl:text> </xsl:text>
  							</xsl:if>
  						</xsl:for-each>
  					</xsl:variable>
  					<xsl:choose>
  						<xsl:when test="count(checkresult[not(@result='Pass')]) > 0 or not($excludesList = '') or not($oldFailList = '')">
  							<TD VALIGN="TOP">
  								<FONT COLOR="#FF0000">
  									<xsl:variable name="failList">
  										<xsl:for-each select="checkresult[not(@result='Pass')]">
  											<xsl:sort select="substring-before(substring-after(@desc,$category),'.')" data-type="number"/>
  											<xsl:variable name="cur" select="substring-before(substring-after(@desc,$category),'.')"/>
  											<xsl:value-of select="$cur"/>
  											<xsl:if test="not(position()=last())">
  												<xsl:text> </xsl:text>
  											</xsl:if>
  										</xsl:for-each>
  									</xsl:variable>
  									<xsl:call-template name="diff">
  										<xsl:with-param name="newlist" select="$failList"/>
  										<xsl:with-param name="oldlist" select="$oldFailList"/>
  									</xsl:call-template>
  								</FONT>
  								<FONT COLOR="#FF00FF">
  									<xsl:variable name="excludeCond">
  										<xsl:call-template name="condense">
  											<xsl:with-param name="list" select="substring($excludesList,1,string-length($excludesList)-1)"/>
  											<xsl:with-param name="prev" select="-1"/>
  										</xsl:call-template>
  									</xsl:variable>
  									<xsl:if test="not($excludeCond = '')">
  										<xsl:text>(</xsl:text><xsl:value-of select="$excludeCond"/><xsl:text>)</xsl:text>
  									</xsl:if>
  								</FONT>
  							</TD>
  						</xsl:when>
  						<xsl:otherwise>
  							<TD><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text></TD>
  						</xsl:otherwise>
  					</xsl:choose>
  				</xsl:for-each>
  			</xsl:element>
  		</xsl:if>
  	</xsl:template>
  
  	<!-- helper function used when extracting list of excludes. -->
  	<xsl:template name="buildList">
  		<xsl:param name="category"/>
  		<xsl:param name="list"/>
  		<xsl:if test="contains($list,$category)">
  			<xsl:value-of select="substring-before(substring-after($list,$category),'.')"/>
  			<xsl:text> </xsl:text>
  			<xsl:call-template name="buildList">
  				<xsl:with-param name="category" select="$category"/>
  				<xsl:with-param name="list" select="substring-after(substring-after($list,$category),'.')"/>
  			</xsl:call-template>
  		</xsl:if>
  	</xsl:template>
  
  	<!-- helper function used to find difference between two lists of failed tests. -->
  	<xsl:template name="diff">
  		<xsl:param name="newlist"/>
  		<xsl:param name="oldlist"/>
  		<xsl:variable name="nf">
  			<xsl:choose>
  				<xsl:when test="contains($newlist,' ')">
  					<xsl:value-of select="substring-before($newlist,' ')"/>
  				</xsl:when>
  				<xsl:otherwise>
  					<xsl:value-of select="$newlist"/>
  				</xsl:otherwise>
  			</xsl:choose>
  		</xsl:variable>
  		<xsl:variable name="of">
  			<xsl:choose>
  				<xsl:when test="contains($oldlist,' ')">
  					<xsl:value-of select="substring-before($oldlist,' ')"/>
  				</xsl:when>
  				<xsl:otherwise>
  					<xsl:value-of select="$oldlist"/>
  				</xsl:otherwise>
  			</xsl:choose>
  		</xsl:variable>
  		<xsl:if test="not($of = '' and $nf = '')">
  			<xsl:choose>
  				<xsl:when test="$of = $nf">
  					<FONT COLOR="#FF0000">
  						<xsl:value-of select="$of"/>
  						<xsl:text> </xsl:text>
  					</FONT>
  					<xsl:call-template name="diff">
  						<xsl:with-param name="newlist" select="substring-after($newlist,' ')"/>
  						<xsl:with-param name="oldlist" select="substring-after($oldlist,' ')"/>
  					</xsl:call-template>
  				</xsl:when>
  				<xsl:when test="$of &lt; $nf or $nf = ''">
  					<FONT COLOR="#008000">
  						<STRIKE>
  							<xsl:value-of select="$of"/>
  						</STRIKE>
  						<xsl:text> </xsl:text>
  					</FONT>
  					<xsl:call-template name="diff">
  						<xsl:with-param name="newlist" select="$newlist"/>
  						<xsl:with-param name="oldlist" select="substring-after($oldlist,' ')"/>
  					</xsl:call-template>
  				</xsl:when>
  				<xsl:when test="$of &gt; $nf or $of = ''">
  					<FONT COLOR="#FF0000">
  						<B>
  							<xsl:value-of select="$nf"/>
  						</B>
  						<xsl:text> </xsl:text>
  					</FONT>
  					<xsl:call-template name="diff">
  						<xsl:with-param name="newlist" select="substring-after($newlist,' ')"/>
  						<xsl:with-param name="oldlist" select="substring-after($oldlist,' ')"/>
  					</xsl:call-template>
  				</xsl:when>
  			</xsl:choose>
  		</xsl:if>
  	</xsl:template>
  					
  	<!-- helper function used to condense test numbers: 01, 02, 03 -> 01-03 -->
  	<xsl:template name="condense">
  		<xsl:param name="list"/>
  		<xsl:param name="prev"/>
  		<xsl:variable name="cur" select="substring-before($list,' ')"/>
  		<xsl:variable name="next">
  			<xsl:choose>
  				<xsl:when test="not(substring-before(substring-after($list,' '),' ') = '')">
  					<xsl:value-of select="substring-before(substring-after($list,' '),' ')"/>
  				</xsl:when>
  				<xsl:otherwise>
  					<xsl:value-of select="substring-after($list,' ')"/>
  				</xsl:otherwise>
  			</xsl:choose>
  		</xsl:variable>
  		<xsl:choose>
  			<xsl:when test="not($cur = '')">
  				<xsl:choose>
  					<xsl:when test="not($prev + 1 = $cur) and $cur + 1 = $next">
  						<xsl:value-of select="$cur"/>
  						<xsl:text>-</xsl:text>
  					</xsl:when>
  					<xsl:when test="not($cur + 1 = $next)">
  						<xsl:value-of select="$cur"/>
  						<xsl:text>, </xsl:text>
  					</xsl:when>
  				</xsl:choose>
  				<xsl:call-template name="condense">
  					<xsl:with-param name="list" select="substring-after($list,' ')"/>
  					<xsl:with-param name="prev" select="$cur"/>
  				</xsl:call-template>
  			</xsl:when>
  			<xsl:otherwise>
  				<xsl:value-of select="$list"/>
  			</xsl:otherwise>
  		</xsl:choose>
  	</xsl:template>
  
  	<!-- output Overall summaries -->
  	<xsl:template name="flavour">
  		<xsl:param name="resultsfile"/>
  		<xsl:for-each select="$resultsfile/testfile/hashtable/hashitem[@key='flavor']">
  			<TD><B><xsl:value-of select="."/></B></TD>
  		</xsl:for-each>
  	</xsl:template>
  
  	<xsl:template name="totalCases">
  		<xsl:param name="resultsfile"/>
  		<xsl:for-each select="$resultsfile/testfile/teststatus">
  			<TD><xsl:value-of select="@Pass-cases + @Fail-cases + @Errr-cases"/></TD>
  		</xsl:for-each>
  	</xsl:template>
  
  	<xsl:template name="passCases">
  		<xsl:param name="resultsfile"/>
  		<xsl:for-each select="$resultsfile/testfile/teststatus">
  			<TD><xsl:value-of select="@Pass-cases"/></TD>
  		</xsl:for-each>
  	</xsl:template>
  
  	<xsl:template name="failCases">
  		<xsl:param name="resultsfile"/>
  		<xsl:for-each select="$resultsfile/testfile/teststatus">
  			<TD><xsl:value-of select="@Fail-cases"/></TD>
  		</xsl:for-each>
  	</xsl:template>
  
  	<xsl:template name="errrCases">
  		<xsl:param name="resultsfile"/>
  		<xsl:for-each select="$resultsfile/testfile/teststatus">
  			<TD><xsl:value-of select="@Errr-cases"/></TD>
  		</xsl:for-each>
  	</xsl:template>
  
  	<xsl:template name="totalChecks">
  		<xsl:param name="resultsfile"/>
  		<xsl:for-each select="$resultsfile/testfile/teststatus">
  			<TD><xsl:value-of select="@Pass-checks + @Fail-checks + @Errr-checks"/></TD>
  		</xsl:for-each>
  	</xsl:template>
  
  	<xsl:template name="passChecks">
  		<xsl:param name="resultsfile"/>
  		<xsl:for-each select="$resultsfile/testfile/teststatus">
  			<TD><xsl:value-of select="@Pass-checks"/></TD>
  		</xsl:for-each>
  	</xsl:template>
  
  	<xsl:template name="failChecks">
  		<xsl:param name="resultsfile"/>
  		<xsl:for-each select="$resultsfile/testfile/teststatus">
  			<TD><xsl:value-of select="@Fail-checks"/></TD>
  		</xsl:for-each>
  	</xsl:template>
  
  	<xsl:template name="errrChecks">
  		<xsl:param name="resultsfile"/>
  		<xsl:for-each select="$resultsfile/testfile/teststatus">
  			<TD><xsl:value-of select="@Errr-checks"/></TD>
  		</xsl:for-each>
  	</xsl:template>
  
  	<!-- Output Overall summary formatting -->
  	<xsl:template name="teststatus">
  		<xsl:param name="resultsfile"/>
  		<xsl:variable name="flavs" select="count($resultsfile/testfile) + 1"/>
  		<TR>
  			<TD ROWSPAN="11"><B>Overall</B></TD>
  			<TD>Flavour:</TD><xsl:call-template name="flavour"><xsl:with-param name="resultsfile" select="$resultsfile"/></xsl:call-template>
  		</TR>
  		<TR>
  			<TD COLSPAN="{$flavs+1}">
  				Categories
  			</TD>
  		</TR>
  		<TR>
  			<TD>Total:</TD><xsl:call-template name="totalCases"><xsl:with-param name="resultsfile" select="$resultsfile"/></xsl:call-template>
  		</TR>
  		<TR>
  			<TD>Pass:</TD><xsl:call-template name="passCases"><xsl:with-param name="resultsfile" select="$resultsfile"/></xsl:call-template>
  		</TR>
  		<TR>
  			<TD>Fail:</TD><xsl:call-template name="failCases"><xsl:with-param name="resultsfile" select="$resultsfile"/></xsl:call-template>
  		</TR>
  		<TR>
  			<TD>Error:</TD><xsl:call-template name="errrCases"><xsl:with-param name="resultsfile" select="$resultsfile"/></xsl:call-template>
  		</TR>
  		<TR>
  			<TD COLSPAN="{$flavs + 1}">
  				Test Cases
  			</TD>
  		</TR>
  		<TR>
  			<TD>Total:</TD><xsl:call-template name="totalChecks"><xsl:with-param name="resultsfile" select="$resultsfile"/></xsl:call-template>
  		</TR>
  		<TR>
  			<TD>Pass:</TD><xsl:call-template name="passChecks"><xsl:with-param name="resultsfile" select="$resultsfile"/></xsl:call-template>
  		</TR>
  		<TR>
  			<TD>Fail:</TD><xsl:call-template name="failChecks"><xsl:with-param name="resultsfile" select="$resultsfile"/></xsl:call-template>
  		</TR>
  		<TR>
  			<TD>Error:</TD><xsl:call-template name="errrChecks"><xsl:with-param name="resultsfile" select="$resultsfile"/></xsl:call-template>
  		</TR>
  	</xsl:template>
  </xsl:stylesheet>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org