<!-- Copyright (C) 2004 The Apache Software Foundation. All rights reserved. -->
<xsl:stylesheet	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<!--
/* ====================================================================
   Copyright 2003-2004   Apache Software Foundation

   Licensed 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.
==================================================================== */
 -->

<xsl:output method="html" indent="yes"/>

<xsl:template match="JDepend">
	<html>
	<head>
		<title>JDepend Analysis</title>
		
	<style type="text/css">
	  body {
		font:normal 68% verdana,arial,helvetica;
		color:#000000;
	  }
	  table tr td, 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;
		margin-left:2em;
		margin-right:2em;
	  }
	  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;
	  }
	  </style>
		
		
	</head>
	<body>
	<!--h1>JDepend Report</h1>
	<ul>
	<xsl:for-each select="./Packages/Package">
				<xsl:sort select="@name"/>
		<li><xsl:value-of select="@name"/></li>
	</xsl:for-each>
	</ul-->
	
	<h1><a name="top">JDepend Analysis</a></h1>
	<p align="right">Designed for use with <a href="http://www.clarkware.com/software/JDepend.html">JDepend</a> and <a href="http://jakarta.apache.org">Ant</a>.</p>
	<hr size="2" />
	
	<table width="100%"><tr><td>
	<a name="NVsummary"><h2>Summary</h2></a>
	</td><td align="right">
	[<a href="#NVsummary">summary</a>]
	[<a href="#NVpackages">packages</a>]
	[<a href="#NVcycles">cycles</a>]
	[<a href="#NVexplanations">explanations</a>]
	</td></tr></table>
	
	<table width="100%" class="details">
		<tr>
			<th>Package</th>
			<th>Total Classes</th>
			<th><a href="#EXnumber">Abstract Classes</a></th>
			<th><a href="#EXnumber">Concrete Classes</a></th>
			<th><a href="#EXafferent">Afferent Couplings</a></th>
			<th><a href="#EXefferent">Efferent Couplings</a></th>
			<th><a href="#EXabstractness">Abstractness</a></th>
			<th><a href="#EXinstability">Instability</a></th>
			<th><a href="#EXdistance">Distance</a></th>
			
		</tr>
	<xsl:for-each select="./Packages/Package">
		<xsl:if test="count(error) = 0">
			<tr>
				<td align="left">
					<a>
					<xsl:attribute name="href">#PK<xsl:value-of select="@name"/>
					</xsl:attribute>
					<xsl:value-of select="@name"/>
					</a>
				</td>
				<td align="right"><xsl:value-of select="Stats/TotalClasses"/></td>
				<td align="right"><xsl:value-of select="Stats/AbstractClasses"/></td>
				<td align="right"><xsl:value-of select="Stats/ConcreteClasses"/></td>
				<td align="right"><xsl:value-of select="Stats/Ca"/></td>
				<td align="right"><xsl:value-of select="Stats/Ce"/></td>
				<td align="right"><xsl:value-of select="Stats/A"/></td>
				<td align="right"><xsl:value-of select="Stats/I"/></td>
				<td align="right"><xsl:value-of select="Stats/D"/></td>
				

			</tr>
		</xsl:if>
	</xsl:for-each>
	<xsl:for-each select="./Packages/Package">
		<xsl:if test="count(error) &gt; 0">
			<tr>
				<td align="left">
					<xsl:value-of select="@name"/>
				</td>
				<td align="left" colspan="8"><xsl:value-of select="error"/></td>
			</tr>
		</xsl:if>
	</xsl:for-each>
	</table>
	
	<table width="100%"><tr><td>
	<a name="NVpackages"><h2>Packages</h2></a>
	</td><td align="right">
	[<a href="#NVsummary">summary</a>]
	[<a href="#NVpackages">packages</a>]
	[<a href="#NVcycles">cycles</a>]
	[<a href="#NVexplanations">explanations</a>]
	</td></tr></table>
	
	<xsl:for-each select="./Packages/Package">
		<xsl:if test="count(error) = 0">
			<h3><a><xsl:attribute name="name">PK<xsl:value-of select="@name"/></xsl:attribute>
			<xsl:value-of select="@name"/></a></h3>
			
			<table width="100%"><tr>
				<td><a href="#EXafferent">Afferent Couplings</a>: <xsl:value-of select="Stats/Ca"/></td>
				<td><a href="#EXefferent">Efferent Couplings</a>: <xsl:value-of select="Stats/Ce"/></td>
				<td><a href="#EXabstractness">Abstractness</a>: <xsl:value-of select="Stats/A"/></td>
				<td><a href="#EXinstability">Instability</a>: <xsl:value-of select="Stats/I"/></td>
				<td><a href="#EXdistance">Distance</a>: <xsl:value-of select="Stats/D"/></td>
			</tr></table>
			
			<table width="100%" class="details">
				<tr>
					<th>Abstract Classes</th>
					<th>Concrete Classes</th>
					<th>Used by Packages</th>
					<th>Uses Packages</th>
				</tr>
				<tr>
					<td valign="top" width="25%">
					<xsl:if test="count(AbstractClasses/Class)=0">
							<i>None</i>
						</xsl:if>
						<xsl:for-each select="AbstractClasses/Class">
							<xsl:value-of select="node()"/><br/>
						</xsl:for-each>
					</td>
					<td valign="top" width="25%">
						<xsl:if test="count(ConcreteClasses/Class)=0">
							<i>None</i>
						</xsl:if>
						<xsl:for-each select="ConcreteClasses/Class">
							<xsl:value-of select="node()"/><br/>
						</xsl:for-each>
					</td>
					<td valign="top" width="25%">
						<xsl:if test="count(UsedBy/Package)=0">
							<i>None</i>
						</xsl:if>
						<xsl:for-each select="UsedBy/Package">
							<a>
								<xsl:attribute name="href">#PK<xsl:value-of select="node()"/></xsl:attribute>
								<xsl:value-of select="node()"/>
							</a><br/>
						</xsl:for-each>
					</td>
					<td valign="top" width="25%">
						<xsl:if test="count(DependsUpon/Package)=0">
							<i>None</i>
						</xsl:if>
						<xsl:for-each select="DependsUpon/Package">
							<a>
								<xsl:attribute name="href">#PK<xsl:value-of select="node()"/></xsl:attribute>
								<xsl:value-of select="node()"/>
							</a><br/>
						</xsl:for-each>
					</td>
				</tr>
			</table>
		</xsl:if>
	</xsl:for-each>
	
	<table width="100%"><tr><td>
	<a name="NVcycles"><h2>Cycles</h2></a>
	</td><td align="right">
	[<a href="#NVsummary">summary</a>]
	[<a href="#NVpackages">packages</a>]
	[<a href="#NVcycles">cycles</a>]
	[<a href="#NVexplanations">explanations</a>]
	</td></tr></table>
	
	<xsl:if test="count(Cycles/Package) = 0">
		<p>There are no cyclic dependancies.</p>
	</xsl:if>
	<xsl:for-each select="Cycles/Package">
		<h3><xsl:value-of select="@Name"/></h3><p>
		<xsl:for-each select="Package">
			<xsl:value-of select="."/><br/>
		</xsl:for-each></p>
	</xsl:for-each>
	
	<table width="100%"><tr><td>
	<a name="NVexplanations"><h2>Explanations</h2></a>
	</td><td align="right">
	[<a href="#NVsummary">summary</a>]
	[<a href="#NVpackages">packages</a>]
	[<a href="#NVcycles">cycles</a>]
	[<a href="#NVexplanations">explanations</a>]
	</td></tr></table>
	
	<p>The following explanations are for quick reference and are lifted directly from the original <a href="http://www.clarkware.com/software/JDepend.html">JDepend documentation</a>.</p>
	
	<h3><a name="EXnumber">Number of Classes</a></h3>
		<p>The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.</p>
	<h3><a name="EXafferent">Afferent Couplings</a></h3>
		<p>The number of other packages that depend upon classes within the package is an indicator of the package's responsibility. </p>
	<h3><a name="EXefferent">Efferent Couplings</a></h3>
		<p>The number of other packages that the classes in the package depend upon is an indicator of the package's independence. </p>
	<h3><a name="EXabstractness">Abstractness</a></h3> 
		<p>The ratio of the number of abstract classes (and interfaces) in the analyzed package to the total number of classes in the analyzed package. </p>
		<p>The range for this metric is 0 to 1, with A=0 indicating a completely concrete package and A=1 indicating a completely abstract package. </p>
	<h3><a name="EXinstability">Instability</a></h3>
		<p>The ratio of efferent coupling (Ce) to total coupling (Ce / (Ce + Ca)). This metric is an indicator of the package's resilience to change. </p>
		<p>The range for this metric is 0 to 1, with I=0 indicating a completely stable package and I=1 indicating a completely instable package. </p>
	<h3><a name="EXdistance">Distance</a></h3>
		<p>The perpendicular distance of a package from the idealized line A + I = 1. This metric is an indicator of the package's balance between abstractness and stability. </p>
		<p>A package squarely on the main sequence is optimally balanced with respect to its abstractness and stability. Ideal packages are either completely abstract and stable (x=0, y=1) or completely concrete and instable (x=1, y=0). </p>
		<p>The range for this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence and D=1 indicating a package that is as far from the main sequence as possible. </p>
	
	</body>
	</html>
</xsl:template>

</xsl:stylesheet>
