|
|
Ant example source code file (junit-frames-xalan1.xsl)
This example Ant source code file (junit-frames-xalan1.xsl) is included in the DevDaily.com
"Java Source Code
Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.
The junit-frames-xalan1.xsl source code
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:lxslt="http://xml.apache.org/xslt"
xmlns:redirect="org.apache.xalan.lib.Redirect"
xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils"
extension-element-prefixes="redirect">
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
<xsl:decimal-format decimal-separator="." grouping-separator=","/>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!--
Sample stylesheet to be used with Ant JUnitReport output.
It creates a set of HTML files a la javadoc where you can browse easily
through all packages and classes.
-->
<xsl:param name="output.dir" select="'.'"/>
<xsl:template match="testsuites">
<!-- create the index.html -->
<redirect:write file="{$output.dir}/index.html">
<xsl:call-template name="index.html"/>
</redirect:write>
<!-- create the stylesheet.css -->
<redirect:write file="{$output.dir}/stylesheet.css">
<xsl:call-template name="stylesheet.css"/>
</redirect:write>
<!-- create the overview-packages.html at the root -->
<redirect:write file="{$output.dir}/overview-summary.html">
<xsl:apply-templates select="." mode="overview.packages"/>
</redirect:write>
<!-- create the all-packages.html at the root -->
<redirect:write file="{$output.dir}/overview-frame.html">
<xsl:apply-templates select="." mode="all.packages"/>
</redirect:write>
<!-- create the all-classes.html at the root -->
<redirect:write file="{$output.dir}/allclasses-frame.html">
<xsl:apply-templates select="." mode="all.classes"/>
</redirect:write>
<!-- process all packages -->
<xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
<xsl:call-template name="package">
<xsl:with-param name="name" select="@package"/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template name="package">
<xsl:param name="name"/>
<xsl:variable name="package.dir">
<xsl:if test="not($name = '')">
<xsl:if test="$name = ''">.
</xsl:variable>
<!--Processing package -->
<!-- create a classes-list.html in the package directory -->
<redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
<xsl:call-template name="classes.list">
<xsl:with-param name="name" select="$name"/>
</xsl:call-template>
</redirect:write>
<!-- create a package-summary.html in the package directory -->
<redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
<xsl:call-template name="package.summary">
<xsl:with-param name="name" select="$name"/>
</xsl:call-template>
</redirect:write>
<!-- for each class, creates a @name.html -->
<!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
<xsl:for-each select="/testsuites/testsuite[@package = $name]">
<redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
<xsl:apply-templates select="." mode="class.details"/>
</redirect:write>
<xsl:if test="string-length(./system-out)!=0">
<redirect:write file="{$output.dir}/{$package.dir}/{@name}-out.txt">
<xsl:value-of select="./system-out" />
</redirect:write>
</xsl:if>
<xsl:if test="string-length(./system-err)!=0">
<redirect:write file="{$output.dir}/{$package.dir}/{@name}-err.txt">
<xsl:value-of select="./system-err" />
</redirect:write>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template name="index.html">
<html>
<head>
<title>Unit Test Results.
</head>
<frameset cols="20%,80%">
<frameset rows="30%,70%">
<frame src="overview-frame.html" name="packageListFrame"/>
<frame src="allclasses-frame.html" name="classListFrame"/>
</frameset>
<frame src="overview-summary.html" name="classFrame"/>
<noframes>
<h2>Frame Alert
<p>
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
</p>
</noframes>
</frameset>
</html>
</xsl:template>
<!-- this is the stylesheet css to use for nearly everything -->
<xsl:template name="stylesheet.css">
body {
font:normal 68% verdana,arial,helvetica;
color:#000000;
}
table tr td, table tr th {
font-size: 68%;
}
table.details tr th{
font-weight: bold;
text-align:left;
background:#a6caf0;
}
table.details tr td{
background:#eeeee0;
}
p {
line-height:1.5em;
margin-top:0.5em; margin-bottom:1.0em;
}
h1 {
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
}
h2 {
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
}
h3 {
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
}
h4 {
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
}
h5 {
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
}
h6 {
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
}
.Error {
font-weight:bold; color:red;
}
.Failure {
font-weight:bold; color:purple;
}
.Properties {
text-align:right;
}
</xsl:template>
<!-- ======================================================================
This page is created for every testsuite class.
It prints a summary of the testsuite and detailed information about
testcase methods.
====================================================================== -->
<xsl:template match="testsuite" mode="class.details">
<xsl:variable name="package.name" select="@package"/>
<xsl:variable name="class.name">.
<html>
<head>
<title>Unit Test Results:
<xsl:call-template name="create.stylesheet.link">
<xsl:with-param name="package.name" select="$package.name"/>
</xsl:call-template>
<script type="text/javascript" language="JavaScript">
var TestCases = new Array();
var cur;
<xsl:apply-templates select="properties"/>
</script>
<script type="text/javascript" language="JavaScript">Properties of " + name + "");
doc.write("<style type=\"text/css\">");
doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
doc.write("table tr td, table tr th { font-size: 68%; }");
doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
doc.write("</style>");
doc.write("</head>");
doc.write("<h3>Properties of " + name + "");
doc.write("<div align=\"right\">Close ");
doc.write("<table class='properties'>");
doc.write("<tr> | Name | Value |
");
for (prop in TestCases[name]) {
doc.write("<tr>