<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> | |
<!--*********************************************************** | |
* | |
* 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. | |
* | |
***********************************************************--> | |
<!-- This style sheet converts any rat-report.xml file. --> | |
<xsl:variable name="now" select="current-dateTime()"/> | |
<xsl:template match="/"> | |
<html> | |
<xsl:comment>Generated at <xsl:value-of select="$now"/></xsl:comment> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> | |
<style type="text/css"> | |
<!-- | |
body {margin-top: 0px;font-size: 0.8em;background-color: #F9F7ED;} | |
h1 {color:red;} | |
h2 {color:blue;} | |
h3 {color:green;} | |
h4 {color:orange;} | |
/* Table Design */ | |
table,tr,td {text-align:center;font-weight:bold;border:1px solid #000;} | |
caption {color:blue;text-align:left;} | |
.notes, .binaries, .archives, .standards {width:25%;} | |
.notes {background:#D7EDEE;} | |
.binaries {background:#D0F2F4;} | |
.archives {background:#ABE7E9;} | |
.standards {background:#A0F0F4;} | |
.licenced, .generated {width:50%;} | |
.licenced {background:#C6EBDD;} | |
.generated {background:#ABE9D2;} | |
.java_note {background:#D6EBC6;} | |
.generated_note {background:#C9E7A9;} | |
.unknown {width:100%;background:#E92020;} | |
.unknown-zero {color:#00CC00;} | |
.center{text-align:center;margin:0 auto;} | |
--> | |
</style> | |
</head> | |
<body> | |
<xsl:apply-templates/> | |
<xsl:call-template name="generated"/> | |
</body> | |
</html> | |
</xsl:template> | |
<xsl:template match="rat-report"> | |
<h1>Rat Report</h1> | |
<p>This HTML version (yes, it is!) is generated from the RAT xml reports using Saxon9B. All the outputs required are displayed below, similar to the .txt version. | |
This is obviously a work in progress; and a prettier, easier to read and manage version will be available soon</p> | |
<div class="center"> | |
<table id="rat-reports summary" cellspacing="0" summary="A snapshot summary of this rat report"> | |
<caption> | |
Table 1: A snapshot summary of this rat report. | |
</caption> | |
<tr> | |
<td colspan="1" class="notes">Notes: <xsl:value-of select="count(descendant::type[attribute::name="notice"])"/></td> | |
<td colspan="1" class="binaries">Binaries: <xsl:value-of select="count(descendant::type[attribute::name="binary"])"/></td> | |
<td colspan="1" class="archives">Archives: <xsl:value-of select="count(descendant::type[attribute::name="archive"])"/></td> | |
<td colspan="1" class="standards">Standards: <xsl:value-of select="count(descendant::type[attribute::name="standard"])"/></td> | |
</tr> | |
<tr> | |
<td colspan="2" class="licenced">Apache Licensed: <xsl:value-of select="count(descendant::header-type[attribute::name="AL "])"/></td> | |
<td colspan="2" class="generated">Generated Documents: <xsl:value-of select="count(descendant::header-type[attribute::name="GEN "])"/></td> | |
</tr> | |
<tr> | |
<td colspan="2" class="java_note">Note: JavaDocs are generated and so license header is optional</td> | |
<td colspan="2" class="generated_note">Note: Generated files do not require license headers</td> | |
</tr> | |
<tr> | |
<xsl:choose> | |
<xsl:when test="count(descendant::header-type[attribute::name="?????"]) > 0"> | |
<td colspan="4" class="unknown"><xsl:value-of select="count(descendant::header-type[attribute::name="?????"])"/> Unknown Licenses - or files without a license.</td> | |
</xsl:when> | |
<xsl:otherwise> | |
<td colspan="4" class="unknown-zero"><xsl:value-of select="count(descendant::header-type[attribute::name="?????"])"/> Unknown Licenses - or files without a license.</td> | |
</xsl:otherwise> | |
</xsl:choose> | |
</tr> | |
</table> | |
</div> | |
<hr/> | |
<h3>Unapproved Licenses:</h3> | |
<xsl:for-each select="descendant::resource[license-approval/@name="false"]"> | |
<xsl:text> </xsl:text> | |
<xsl:value-of select="@name"/><br/> | |
<xsl:text> | |
</xsl:text> | |
</xsl:for-each> | |
<hr/> | |
<h3>Archives:</h3> | |
<xsl:for-each select="descendant::resource[type/@name="archive"]"> | |
+ <xsl:value-of select="@name"/> | |
<br/> | |
</xsl:for-each> | |
<hr/> | |
<p> | |
Files with Apache License headers will be marked AL<br/> | |
Binary files (which do not require AL headers) will be marked B<br/> | |
Compressed archives will be marked A<br/> | |
Notices, licenses etc will be marked N<br/> | |
</p> | |
<xsl:for-each select="descendant::resource"> | |
<xsl:choose> | |
<xsl:when test="license-approval/@name="false"">!</xsl:when> | |
<xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise> | |
</xsl:choose> | |
<xsl:choose> | |
<xsl:when test="type/@name="notice"">N </xsl:when> | |
<xsl:when test="type/@name="archive"">A </xsl:when> | |
<xsl:when test="type/@name="binary"">B </xsl:when> | |
<xsl:when test="type/@name="standard""><xsl:value-of select="header-type/@name"/></xsl:when> | |
<xsl:otherwise>!!!!!</xsl:otherwise> | |
</xsl:choose> | |
<xsl:text> </xsl:text> | |
<xsl:value-of select="@name"/><br/> | |
<xsl:text> | |
</xsl:text> | |
</xsl:for-each> | |
<hr/> | |
<h3>Printing headers for files without AL header...</h3> | |
<xsl:for-each select="descendant::resource[header-type/@name="?????"]"> | |
<h4><xsl:value-of select="@name"/></h4> | |
<xsl:value-of select="header-sample"/> | |
<hr/> | |
</xsl:for-each> | |
<br/> | |
<!-- <xsl:apply-templates select="resource"/> | |
<xsl:apply-templates select="header-sample"/> | |
<xsl:apply-templates select="header-type"/> | |
<xsl:apply-templates select="license-family"/> | |
<xsl:apply-templates select="license-approval"/> | |
<xsl:apply-templates select="type"/> --> | |
</xsl:template> | |
<xsl:template match="resource"> | |
<div> | |
<h3>Resource: <xsl:value-of select="@name"/></h3> | |
<xsl:apply-templates/> | |
</div> | |
</xsl:template> | |
<xsl:template match="header-sample"> | |
<xsl:if test="normalize-space(.) != ''"> | |
<h4>First few lines of non-compliant file</h4> | |
<p> | |
<xsl:value-of select="."/> | |
</p> | |
</xsl:if> | |
<h4>Other Info:</h4> | |
</xsl:template> | |
<xsl:template match="header-type"> | |
Header Type: <xsl:value-of select="@name"/> | |
<br/> | |
</xsl:template> | |
<xsl:template match="license-family"> | |
License Family: <xsl:value-of select="@name"/> | |
<br/> | |
</xsl:template> | |
<xsl:template match="license-approval"> | |
License Approval: <xsl:value-of select="@name"/> | |
<br/> | |
</xsl:template> | |
<xsl:template match="type"> | |
Type: <xsl:value-of select="@name"/> | |
<br/> | |
</xsl:template> | |
<xsl:template name="generated"> | |
<p>Generated at <xsl:value-of select="$now"/></p> | |
</xsl:template> | |
</xsl:transform> |