curcuru 2002/07/23 13:13:44
Modified: test FailScanner.xsl ResultScanner.xsl
resultsConstants.xsl
Added: test BaseScanner.xsl
Log:
Simplified and updated results.xml scanning stylesheets: much more
modular design and better output format
Revision Changes Path
1.5 +74 -106 xml-xalan/test/FailScanner.xsl
Index: FailScanner.xsl
===================================================================
RCS file: /home/cvs/xml-xalan/test/FailScanner.xsl,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FailScanner.xsl 22 Jul 2002 19:40:10 -0000 1.4
+++ FailScanner.xsl 23 Jul 2002 20:13:43 -0000 1.5
@@ -4,6 +4,16 @@
xmlns:redirect="org.apache.xalan.lib.Redirect"
extension-element-prefixes="redirect"
version="1.0">
+
+<!-- FileName: FailScanner.xsl -->
+<!-- Author: [EMAIL PROTECTED] -->
+<!-- Purpose: Stylesheet for org.apache.qetest.XMLFileLogger
+ logFiles that only prints out failing (and error) results.
+-->
+
+<!-- Import the BaseScanner for most duties; note this must be first in file
-->
+<xsl:import href="BaseScanner.xsl"/>
+
<xsl:output method="html"
doctype-public="-//W3C//DTD HTML 4.0 Transitional"/>
@@ -11,100 +21,74 @@
<lxslt:script lang="javaclass" src="org.apache.xalan.lib.Redirect"/>
</lxslt:component>
-<!-- FileName: FailScanner.xsl -->
-<!-- Author: [EMAIL PROTECTED] -->
-<!-- Purpose: Simple viewer for org.apache.qetest.XMLFileLogger
- logFile failing-only results put into simple HTML pages updates coming
-->
-
-<!-- Include constant definitions for results file elements,
- attributes, and values, copied from relevant Java code -->
-<xsl:include href="resultsConstants.xsl"/>
-
<!-- Name of file for mini-fails redirected output -->
<xsl:param name="redirectFilename">FailScannerMini.html</xsl:param>
+<xsl:template name="printScannerName">
+ <xsl:element name="a">
+ <xsl:attribute
name="href"><xsl:text>src/xsl/FailScanner.xsl</xsl:text></xsl:attribute>
+ <xsl:text>FailScanner</xsl:text>
+ </xsl:element>
+</xsl:template>
<!-- ================================== -->
-<!-- Main template-standalone: output an HTML page -->
-<xsl:template match="resultsfile">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title><xsl:text>Test Results file: </xsl:text><xsl:value-of
select="@logFile"/></title>
- </head>
- <body>
- <xsl:apply-templates/>
- </body>
- </html>
+<!-- Element templates: output basic data for each of the common
+ test elements, like messages, checks, etc.
+-->
+<!-- All non-fail testcases just get a status line, nothing else -->
+<xsl:template match="testcase[caseresult/@result = $PASS] |
testcase[caseresult/@result = $INCP]">
+ <h3>
+ <xsl:value-of select="caseresult/@result"/>
+ <xsl:text> Testcase: # </xsl:text>
+ <!-- This creates the anchor as well as printing the @desc -->
+ <xsl:call-template name="create-testcase-anchor">
+ <xsl:with-param name="testcase" select="."/>
+ </xsl:call-template>
+ <br/>
+ </h3>
</xsl:template>
-<!-- Output each whole testfile as a table; a small summary then individual
results -->
-<!-- This is selected in ResultScanner.xsl directly -->
-<xsl:template match="testfile">
+<!-- Process all remaining testcases with special fails mode -->
+<xsl:template match="testcase">
<table frame="box" border="1" rules="groups"
cellspacing="2" cellpadding="2"
bgcolor="#FFFFEE">
<caption>
- <b><xsl:value-of select="@filename"/><xsl:text>:
</xsl:text></b><xsl:value-of select="@desc"/>
+ <b><xsl:text>Testcase # </xsl:text></b>
+ <!-- This creates the anchor as well as printing the @desc -->
+ <xsl:call-template name="create-testcase-anchor">
+ <xsl:with-param name="testcase" select="."/>
+ </xsl:call-template>
</caption>
- <redirect:write select="$redirectFilename" append="true">
- <hr/>
- <h3><xsl:value-of select="@filename"/>
- <xsl:text>: </xsl:text><xsl:value-of select="@desc"/>
- <xsl:text> in </xsl:text><xsl:value-of select="../@logFile"/>
- </h3>
- </redirect:write>
- <!-- establish row widths here in our mini-summary -->
+ <!-- establish row widths here -->
<tr>
- <td width="7%"><xsl:text>Overall</xsl:text></td>
- <td>
- <xsl:text>Pass: </xsl:text>
- <xsl:value-of select="[EMAIL
PROTECTED]'passCount[CASES]']/longval"/><xsl:text>/</xsl:text>
- <xsl:value-of select="[EMAIL
PROTECTED]'passCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
- <xsl:text>Fail: </xsl:text>
- <xsl:value-of select="[EMAIL
PROTECTED]'failCount[CASES]']/longval"/><xsl:text>/</xsl:text>
- <xsl:value-of select="[EMAIL
PROTECTED]'failCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
- <xsl:text>Errr: </xsl:text>
- <xsl:value-of select="[EMAIL
PROTECTED]'errrCount[CASES]']/longval"/><xsl:text>/</xsl:text>
- <xsl:value-of select="[EMAIL
PROTECTED]'errrCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
- <xsl:text>Ambg: </xsl:text>
- <xsl:value-of select="[EMAIL
PROTECTED]'ambgCount[CASES]']/longval"/><xsl:text>/</xsl:text>
- <xsl:value-of select="[EMAIL
PROTECTED]'ambgCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
- <xsl:text>Incp: </xsl:text>
- <xsl:value-of select="[EMAIL PROTECTED]'incpCount[CASES]']/longval"/>
- </td>
+ <td width="20"></td>
+ <td></td>
</tr>
-
- <!-- Search on all subelements; don't bother restricting -->
- <xsl:apply-templates />
- </table>
-</xsl:template>
-
-<!-- Output only testcases that have clear fails with the specific fails -->
-<xsl:template match="testcase[caseresult/@result = $FAIL] |
testcase[caseresult/@result = $ERRR]">
- <tr>
- <td><br/><hr/></td>
- <td><xsl:text>Testcase #</xsl:text><xsl:value-of
select="@desc"/><xsl:text> is </xsl:text><xsl:value-of
select="caseresult/@result"/></td>
- </tr>
- <!-- Only select results; we only have matches later for failed results
-->
+ <!-- Only select results; the checkresult templates have special
+ processing to output additional messages when needed.
+ -->
<xsl:apply-templates select="checkresult" />
-</xsl:template>
-
-<!-- Testcases that are incomplete just get a note, no details -->
-<xsl:template match="testcase[caseresult/@result = $INCP]">
<tr>
- <td><hr/></td>
- <td><xsl:text>Testcase #</xsl:text><xsl:value-of
select="@desc"/><xsl:text> was </xsl:text><xsl:value-of
select="caseresult/@result"/></td>
+ <td><br/><hr/></td>
+ <td><xsl:value-of select="caseresult/@result"/>:<xsl:text>Testcase
#</xsl:text><xsl:value-of select="@desc"/></td>
</tr>
+ </table>
</xsl:template>
-<!-- Results that are clearly fails have preceding messages printed out -->
+<!-- Results that are clearly fails have preceding messages printed out;
+ since those help in debugging and may indicate cause of failure.
+-->
<xsl:template match="[EMAIL PROTECTED] | [EMAIL PROTECTED]">
- <!-- First, find the several previous messages to this result -->
- <xsl:apply-templates select="preceding-sibling::*[2]" mode="before-result"
/>
- <xsl:apply-templates select="preceding-sibling::*[1]" mode="before-result"
/>
+ <xsl:apply-templates select="preceding-sibling::*[2]" mode="table"/>
+ <xsl:apply-templates select="preceding-sibling::*[1]" mode="table"/>
<!-- Then print out this result itself -->
<tr>
- <td bgcolor="#FF8080"><b><xsl:value-of select="@result"/></b></td>
+ <td bgcolor="#FF8080">
+ <xsl:call-template name="create-checkresult-anchor">
+ <xsl:with-param name="checkresult" select="."/>
+ </xsl:call-template>
+ </td>
<td>
<xsl:if test="@id">
<xsl:text>[</xsl:text><xsl:value-of select="@id"/><xsl:text>]
</xsl:text>
@@ -112,6 +96,10 @@
<xsl:value-of select="@desc"/>
</td>
</tr>
+
+ <!-- Then print out blank row to separate results -->
+ <tr><td colspan="2" bgcolor="silver"><xsl:text> </xsl:text></td></tr>
+
<redirect:write select="$redirectFilename" append="true">
<b><xsl:value-of select="@result"/><xsl:text> </xsl:text></b>
<xsl:if test="@id">
@@ -123,9 +111,15 @@
<!-- Other Results that are not passes just get printed out as-is -->
<xsl:template match="[EMAIL PROTECTED] | [EMAIL PROTECTED]">
- <xsl:apply-templates select="preceding-sibling::fileCheck[1]"
mode="before-result" />
+ <xsl:apply-templates select="preceding-sibling::fileCheck[1]"
mode="table"/>
<tr>
- <td bgcolor="#FFFF00"><i><xsl:value-of select="@result"/></i></td>
+ <td bgcolor="#FFFF00">
+ <i>
+ <xsl:call-template name="create-checkresult-anchor">
+ <xsl:with-param name="checkresult" select="."/>
+ </xsl:call-template>
+ </i>
+ </td>
<td>
<xsl:if test="@id">
<xsl:text>[</xsl:text><xsl:value-of select="@id"/><xsl:text>]
</xsl:text>
@@ -133,40 +127,14 @@
<xsl:value-of select="@desc"/>
</td>
</tr>
+ <!-- Then print out blank row to separate results -->
+ <tr><td colspan="2" bgcolor="silver"><xsl:text> </xsl:text></td></tr>
</xsl:template>
-<!-- Only selected from previous checkresult apply-templates -->
-<xsl:template match="message | arbitrary" mode="before-result">
- <tr>
- <td><xsl:value-of select="@level"/>A</td>
- <td>
- <xsl:choose>
- <xsl:when test="'arbitrary' = name()">
- <pre><font size="-1"><xsl:value-of select="."/></font></pre>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="."/>
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
-</xsl:template>
-
-<!-- Only selected from previous checkresult apply-templates -->
-<xsl:template match="fileCheck" mode="before-result">
- <tr>
- <td><font size="-1">fileCheck</font></td>
- <td>
- <xsl:text>Actual file: </xsl:text><xsl:value-of select="@actual"/><br/>
- <pre><font size="-1"><xsl:value-of select="."/></font></pre>
- </td>
- </tr>
-</xsl:template>
-
-<!-- We implicitly skip all passes and non-related messages, etc. -->
+<!-- Override BaseScanner handling of non-fail checkresults as no-op -->
+<xsl:template match="checkresult" />
-<!-- Override default text node processing, so statistics, arbitrary
messages, and other stuff is skipped -->
-<xsl:template match="text()"/>
-<xsl:template match="text()" mode="before-result"/>
+<!-- Override most messages when not in a testcase -->
+<xsl:template match="[EMAIL PROTECTED] > $WARNINGMSG]" />
</xsl:stylesheet>
1.5 +3 -2 xml-xalan/test/ResultScanner.xsl
Index: ResultScanner.xsl
===================================================================
RCS file: /home/cvs/xml-xalan/test/ResultScanner.xsl,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ResultScanner.xsl 1 Feb 2002 17:28:24 -0000 1.4
+++ ResultScanner.xsl 23 Jul 2002 20:13:44 -0000 1.5
@@ -119,13 +119,14 @@
<!-- Anchor element for each test -->
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of
select="$statusfilename"/></xsl:attribute>
+ <hr/>
</xsl:element>
<!-- Link to the full xml source of each test -->
- <font size="-1"><xsl:value-of select="$testresults/testfile/@filename"/>
+ <font size="-1"><xsl:text> Original results.xml:</xsl:text>
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of
select="$testresultsfilename"/></xsl:attribute>
- <xsl:text> source results xml</xsl:text>
+ <xsl:value-of select="$testresults/testfile/@filename"/>
</xsl:element>
</font>
1.2 +2 -0 xml-xalan/test/resultsConstants.xsl
Index: resultsConstants.xsl
===================================================================
RCS file: /home/cvs/xml-xalan/test/resultsConstants.xsl,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- resultsConstants.xsl 3 Nov 2000 22:08:59 -0000 1.1
+++ resultsConstants.xsl 23 Jul 2002 20:13:44 -0000 1.2
@@ -3,6 +3,8 @@
<!-- Misc Constants used within results viewing stylesheets -->
<xsl:variable name="hash-marker">#hash</xsl:variable>
<xsl:variable name="file-results-marker">#fr</xsl:variable>
+ <xsl:variable name="testcase-marker">#tc</xsl:variable>
+ <xsl:variable name="checkresult-marker">#cr</xsl:variable>
<!-- Constants file for XML results files - copied from Java sources -->
1.1 xml-xalan/test/BaseScanner.xsl
Index: BaseScanner.xsl
===================================================================
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:lxslt="http://xml.apache.org/xslt"
xmlns:redirect="org.apache.xalan.lib.Redirect"
extension-element-prefixes="redirect"
version="1.0">
<!-- FileName: BaseScanner.xsl -->
<!-- Author: [EMAIL PROTECTED] -->
<!-- Purpose: Base stylesheet for org.apache.qetest.XMLFileLogger
logFiles that defines the structure of test output reports.
Designed to be 'subclassed' by import/include and defining
custom output for your desired elements.
-->
<xsl:output method="html"
doctype-public="-//W3C//DTD HTML 4.0 Transitional"/>
<lxslt:component prefix="redirect" elements="write open close" functions="">
<lxslt:script lang="javaclass" src="org.apache.xalan.lib.Redirect"/>
</lxslt:component>
<!-- Include constant definitions for results file elements,
attributes, and values, copied from relevant Java code -->
<xsl:include href="resultsConstants.xsl"/>
<!-- Name of file for mini-fails redirected output -->
<xsl:param name="redirectFilename">BaseScannerMini.html</xsl:param>
<!-- ================================== -->
<!-- Root template: just define the structure of the output.
Allow subclasses to provide templates for each part.
-->
<xsl:template match="resultsfile">
<html>
<head>
<title><xsl:text>Test Results file: </xsl:text><xsl:value-of
select="@logFile"/></title>
</head>
<body>
<p align="center" font="-2">
<xsl:text>Original results.xml: </xsl:text>
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of
select="@logFile"/></xsl:attribute>
<xsl:value-of select="@logFile"/>
</xsl:element>
<xsl:text> Processing stylesheet: </xsl:text>
<xsl:call-template name="printScannerName"/>
</p>
<!-- Handle each individual testfile (i.e. TestName.java) that ran. -->
<xsl:apply-templates select="testfile"/>
</body>
</html>
</xsl:template>
<xsl:template name="printScannerName">
<xsl:element name="a">
<xsl:attribute
name="href"><xsl:text>src/xsl/BaseScanner.xsl</xsl:text></xsl:attribute>
<xsl:text>BaseScanner</xsl:text>
</xsl:element>
</xsl:template>
<xsl:template match="testfile">
<!-- Output any header info, like overall results summary -->
<xsl:call-template name="test-header"/>
<!-- Output detail results from testcases, etc. -->
<xsl:call-template name="test-body"/>
<!-- Output any footer info, like environment hashes, etc. -->
<xsl:call-template name="test-footer"/>
</xsl:template>
<!-- ================================== -->
<!-- Structural templates: each named template is normally called
from the root template of / to perform it's part.
-->
<!-- Output any header info, like overall results summary -->
<xsl:template name="test-header">
<table frame="box" border="1" rules="groups"
cellspacing="2" cellpadding="2"
bgcolor="#FFFFEE">
<caption>
<b><xsl:value-of select="@filename"/><xsl:text>:
</xsl:text></b><xsl:value-of select="@desc"/>
</caption>
<redirect:write select="$redirectFilename" append="true">
<hr/>
<h3><xsl:value-of select="@filename"/>
<xsl:text>: </xsl:text><xsl:value-of select="@desc"/>
<xsl:text> in </xsl:text><xsl:value-of select="../@logFile"/>
</h3>
</redirect:write>
<!-- Print out mini-summary of overall results -->
<tr>
<td width="20%"><xsl:text>Overall (TestCases/TestPoints)</xsl:text></td>
<td>
<xsl:text>Pass: </xsl:text>
<xsl:value-of select="[EMAIL
PROTECTED]'passCount[CASES]']/longval"/><xsl:text>/</xsl:text>
<xsl:value-of select="[EMAIL
PROTECTED]'passCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
<xsl:text>Fail: </xsl:text>
<xsl:value-of select="[EMAIL
PROTECTED]'failCount[CASES]']/longval"/><xsl:text>/</xsl:text>
<xsl:value-of select="[EMAIL
PROTECTED]'failCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
<xsl:text>Errr: </xsl:text>
<xsl:value-of select="[EMAIL
PROTECTED]'errrCount[CASES]']/longval"/><xsl:text>/</xsl:text>
<xsl:value-of select="[EMAIL
PROTECTED]'errrCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
<xsl:text>Ambg: </xsl:text>
<xsl:value-of select="[EMAIL
PROTECTED]'ambgCount[CASES]']/longval"/><xsl:text>/</xsl:text>
<xsl:value-of select="[EMAIL
PROTECTED]'ambgCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
<xsl:text>Incp: </xsl:text>
<xsl:value-of select="[EMAIL PROTECTED]'incpCount[CASES]']/longval"/>
</td>
</tr>
<tr>
<td>
<xsl:text>Testcases</xsl:text>
</td>
<td>
<!-- Create links to non-passing testcases for easy navigation -->
<xsl:text>Fails: </xsl:text>
<xsl:for-each select="testcase[caseresult/@result=$FAIL]">
<xsl:call-template name="create-testcase-link">
<xsl:with-param name="testcase" select="."/>
</xsl:call-template>
</xsl:for-each>
<xsl:text> Errors: </xsl:text>
<xsl:for-each select="testcase[caseresult/@result=$ERRR]">
<xsl:call-template name="create-testcase-link">
<xsl:with-param name="testcase" select="."/>
</xsl:call-template>
</xsl:for-each>
<xsl:text> Ambiguous: </xsl:text>
<xsl:for-each select="testcase[caseresult/@result=$AMBG]">
<xsl:call-template name="create-testcase-link">
<xsl:with-param name="testcase" select="."/>
</xsl:call-template>
</xsl:for-each>
<xsl:text> Incomplete: </xsl:text>
<xsl:for-each select="testcase[caseresult/@result=$INCP]">
<xsl:call-template name="create-testcase-link">
<xsl:with-param name="testcase" select="."/>
</xsl:call-template>
</xsl:for-each>
</td>
</tr>
<tr>
<td>
<!-- Create a link to the hashtables for this file -->
<font size="-1">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of
select="$hash-marker"/><xsl:value-of select="@filename"/></xsl:attribute>
<xsl:text>System.properties, etc. during the test</xsl:text>
</xsl:element>
</font>
</td>
</tr>
</table>
</xsl:template>
<!-- Output detail results from testcases, etc. -->
<xsl:template name="test-body">
<!-- Process all testcases and interim messages -->
<xsl:apply-templates select="*[not(name(.)='hashtable')]" />
</xsl:template>
<!-- Output any footer info, like environment hashes, etc. -->
<xsl:template name="test-footer">
<!-- @todo optimize so anchor only appears if there are hashtables -->
<br/>
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of
select="$hash-marker"/><xsl:value-of select="@filename"/></xsl:attribute>
<xsl:text>System properties follow for: </xsl:text><xsl:value-of
select="@filename"/>
</xsl:element>
<!-- Dump hashtables at the file level, which are system properties & etc.
-->
<xsl:apply-templates select="hashtable"/>
</xsl:template>
<!-- 'Worker' template to convert loggingLevels -->
<!-- This is not terribly efficient, but it is prettier! -->
<xsl:template name="printLevel">
<xsl:param name="level"></xsl:param>
<xsl:choose>
<xsl:when test="$ERRORMSG=$level"><xsl:text>error</xsl:text></xsl:when>
<xsl:when test="$ERRORMSG=$level"><xsl:text>error</xsl:text></xsl:when>
<xsl:when test="$FAILSONLY=$level"><xsl:text>failmsg</xsl:text></xsl:when>
<xsl:when
test="$WARNINGMSG=$level"><xsl:text>warning</xsl:text></xsl:when>
<xsl:when test="$STATUSMSG=$level"><xsl:text>status</xsl:text></xsl:when>
<xsl:when test="$INFOMSG=$level"><xsl:text>info</xsl:text></xsl:when>
<xsl:when test="$TRACEMSG=$level"><xsl:text>trace</xsl:text></xsl:when>
<xsl:otherwise><xsl:value-of select="$level"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ================================== -->
<!-- Element templates: output basic data for each of the common
test elements, like messages, checks, etc.
-->
<!-- Testfile is basically just a redirect to apply lower level templates -->
<xsl:template match="testcase">
<table frame="box" border="1" rules="groups"
cellspacing="2" cellpadding="2"
bgcolor="#FFFFEE">
<caption>
<b><xsl:text>Testcase # </xsl:text></b>
<!-- This creates the anchor as well as printing the @desc -->
<xsl:call-template name="create-testcase-anchor">
<xsl:with-param name="testcase" select="."/>
</xsl:call-template>
</caption>
<!-- establish row widths here -->
<tr>
<td width="20"></td>
<td></td>
</tr>
<!-- Normally, process all sub-elements using the table mode -->
<xsl:apply-templates mode="table"/>
<tr>
<td><br/><hr/></td>
<td><xsl:value-of select="caseresult/@result"/>:<xsl:text>Testcase
#</xsl:text><xsl:value-of select="@desc"/></td>
</tr>
</table>
</xsl:template>
<!-- Handle checkresult statements: each test point's result -->
<xsl:template match="checkresult" mode="table">
<tr>
<td>
<xsl:call-template name="create-checkresult-anchor">
<xsl:with-param name="checkresult" select="."/>
</xsl:call-template>
</td>
<td>
<xsl:if test="@id">
<xsl:text>[</xsl:text><xsl:value-of select="@id"/><xsl:text>]
</xsl:text>
</xsl:if>
<xsl:value-of select="@desc"/>
</td>
</tr>
</xsl:template>
<!-- Handle basic test messages: status, info, trace, etc. -->
<xsl:template match="message" mode="table">
<tr>
<td>
<xsl:call-template name="printLevel">
<xsl:with-param name="level" select="@level"/>
</xsl:call-template>
</td>
<td><xsl:value-of select="."/></td>
</tr>
</xsl:template>
<!-- Handle basic test messages when not in a testcase -->
<xsl:template match="message">
<p>
<xsl:call-template name="printLevel">
<xsl:with-param name="level" select="@level"/>
</xsl:call-template>
<xsl:text> : </xsl:text><xsl:value-of select="."/>
</p>
</xsl:template>
<!-- Handle arbitrary test messages: smaller font and preformatted -->
<xsl:template match="arbitrary" mode="table">
<tr>
<td>
<xsl:call-template name="printLevel">
<xsl:with-param name="level" select="@level"/>
</xsl:call-template>
</td>
<td><font size="-1"><pre><xsl:value-of select="."/></pre></font></td>
</tr>
</xsl:template>
<!-- Handle arbitrary test messages when not in a testcase -->
<xsl:template match="arbitrary">
<p>
<xsl:call-template name="printLevel">
<xsl:with-param name="level" select="@level"/>
</xsl:call-template>
<xsl:text> : </xsl:text>
<font size="-1"><pre><xsl:value-of select="."/></pre></font>
</p>
</xsl:template>
<!-- Handle fileCheck elements outputting info about files, etc.
Note that we copy the contents of the element, since some
tests might have element output here.
-->
<xsl:template match="fileCheck" mode="table">
<tr>
<td><font size="-1">fileCheck</font></td>
<td>
<xsl:text>Actual: </xsl:text>
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of
select="@actual"/></xsl:attribute>
<xsl:value-of select="@actual"/>
</xsl:element><br/>
<xsl:text>Reference: </xsl:text>
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of
select="@reference"/></xsl:attribute>
<xsl:value-of select="@reference"/>
</xsl:element><br/>
<br/>
<pre><font size="-1"><xsl:copy-of select="."/></font></pre>
</td>
</tr>
</xsl:template>
<!-- Handle perf info simplistically; print out all attrs as timing data -->
<xsl:template match="perf" mode="table">
<tr>
<td><font size="-1">perf</font></td>
<td>
<xsl:text>[</xsl:text><xsl:value-of
select="@idref"/><xsl:text>]</xsl:text><br/>
<xsl:for-each select="attribute::*">
<xsl:choose>
<!-- Skip unneeded attrs -->
<xsl:when test="'level' = name()"/>
<xsl:when test="'testlet' = name()"/>
<xsl:when test="'idref' = name()"/>
<xsl:when test="'actual' = name()"/>
<xsl:when test="'reference' = name()"/>
<!-- Output any other perf-related attrs, whatever they are -->
<xsl:otherwise>
<xsl:value-of select="name()"/><xsl:text> =
</xsl:text><xsl:value-of select="."/><br/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</td>
</tr>
</xsl:template>
<!-- Handle basic hashtables and items within them -->
<xsl:template match="hashtable">
<table border="1" width="80%" cellspacing="1" cellpadding="2">
<caption><xsl:value-of select="@desc"/></caption>
<xsl:apply-templates select="hashitem"/>
</table>
</xsl:template>
<xsl:template match="hashitem">
<tr>
<td><xsl:value-of select="@key"/></td>
<td>
<!-- Integrate with S4JLoadUtil: create links to loaded schemas -->
<xsl:choose>
<xsl:when test="@key='current-file'">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of
select="."/></xsl:attribute>
<xsl:value-of select="."/>
</xsl:element>
</xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:template>
<!-- Handle basic hashtables and items when in a table, which is a bit tricky
-->
<xsl:template match="hashtable" mode="table">
<tr>
<td><xsl:text>hash</xsl:text></td>
<td>
<table border="1" width="80%" cellspacing="1" cellpadding="2">
<caption><xsl:value-of select="@desc"/></caption>
<xsl:apply-templates select="hashitem"/><!-- note no mode needed -->
</table>
</td>
</tr>
</xsl:template>
<!-- Worker template to make testcase links: @desc is in anchor -->
<xsl:template name="create-testcase-link">
<xsl:param name="testcase"></xsl:param>
<font size="-1">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of
select="$testcase-marker"/><xsl:value-of select="translate($testcase/@desc,'\
','-')"/></xsl:attribute>
<xsl:text>Testcase#</xsl:text><xsl:value-of
select="substring-before($testcase/@desc,' ')"/>
</xsl:element>
<xsl:text>, </xsl:text>
</font>
</xsl:template>
<!-- Worker template to make testcase anchors: @desc is in anchor -->
<xsl:template name="create-testcase-anchor">
<xsl:param name="testcase"></xsl:param>
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of
select="$testcase-marker"/><xsl:value-of select="translate($testcase/@desc,'\
','-')"/></xsl:attribute>
<xsl:value-of select="@desc"/>
</xsl:element>
</xsl:template>
<!-- Worker template to make checkresult anchors: @result is in anchor -->
<xsl:template name="create-checkresult-anchor">
<xsl:param name="checkresult"></xsl:param>
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of
select="$checkresult-marker"/><xsl:value-of
select="translate($checkresult/@desc,'\ ','-')"/></xsl:attribute>
<xsl:value-of select="@result"/>
</xsl:element>
</xsl:template>
<!-- Override default text node processing, so statistics and other misc text
is skipped -->
<xsl:template match="text()"/>
<xsl:template match="text()" mode="table"/>
</xsl:stylesheet>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]