2015-12-14 05:21:02 +08:00
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:ms="urn:microsoft-performance"
exclude-result-prefixes="msxsl"
version="1.0">
<xsl:output method= 'html' indent= 'yes' standalone= 'yes' encoding= "utf-16" />
<!-- ********** XSL PARAMETERS ********** -->
<xsl:param name= "defaultTop" />
<xsl:param name= "defaultLevel" />
<!-- ***************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
****************************************************************************-->
<!-- ********** XSL FUNCTIONS ********** -->
<msxsl:script language= 'JScript' implements-prefix= 'ms' > < ![CDATA[
var g_tag = 0;
function unique( list, index ){
var check = index - 1;
if( check == 0 ){
return 1;
}
for( var i=0;i<check ; i + + ) {
var compare = list.item(i).text;
if( list.item(check).text == compare ){
return 0;
}
}
return 1;
}
function top( list, field )
{
try{
var topIndex = 0;
var topValue = 0;
var filter = "data[@name = '" + field + "']";
for(i=0;i<list.length ; i + + ) {
var node = list.item(i).selectSingleNode( filter );
if( node ){
var test = node.text * 1;
if( test > topValue ){
topIndex = i;
topValue = test;
}
}
}
return (topIndex+1) * 1;
}catch(e){
return 0;
}
}
function tag(){
return ++g_tag;
}
]]></msxsl:script>
<xsl:variable name= 'titles' >
<title name= "contents" > Contents</title>
<title name= "summary" > Summary</title>
<title name= "top" > Top:</title>
<title name= "topOf" > of</title>
<title name= "warnings" > Warnings</title>
<title name= "type" > Type</title>
<title name= "item" > Item</title>
<title name= "warning" > Warning</title>
<title name= "help" > Help</title>
<title name= "total" > Total</title>
<title name= "average" > Average</title>
<title name= "recordCount" > Transactions: </title>
<title name= "uniqueCount" > Total Records: </title>
<xsl:for-each select= "//titles/title" >
<xsl:copy-of select= "." />
</xsl:for-each>
</xsl:variable>
<xsl:variable name= 'tab' > <xsl:value-of select= "'                '" /> </xsl:variable>
<xsl:variable name= "Top" >
<xsl:choose >
<xsl:when test= "$defaultTop" > <xsl:value-of select= "$defaultTop" /> </xsl:when>
<xsl:when test= "/report/@top" > <xsl:value-of select= "/report/@top" /> </xsl:when>
<xsl:otherwise > 10</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "Level" >
<xsl:choose >
<xsl:when test= "$defaultLevel" > <xsl:value-of select= "$defaultLevel" /> </xsl:when>
<xsl:when test= "/report/@level" > <xsl:value-of select= "/report/@level" /> </xsl:when>
<xsl:otherwise > 1</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:template match= "/" >
<html >
<!-- ***************************************************************************
HTML STYLE DEFINITION
****************************************************************************-->
<style >
body{ font-family: Verdana,Arial; color: black; margin-left: 1%; margin-right: 1%; }
td{ font-size: 75%; }
th{ font-size: 70%; font-weight: bolder; border: 1px solid lightgrey; vertical-align: bottom; }
hr{ border:1px solid black; }
a{ cursor:hand; }
a:link{ color: black; text-decoration: underline; }
a:visited{ color: black; text-decoration: underline; }
li { font-size: 130%; }
li li { font-size: 75%; }
li li li { font-size: 90%; }
.block{ border: solid black 1px; width: 100%; }
.thin{ border:1px solid black; height:1px;}
.popup{ position:absolute; z-index:1; background-color:infobackground; border:solid; border-width:1px; border-right-width:2px; border-bottom-width:2px; font-size: x-small;font-weight: normal;text-align: left;padding: 8px; }
.h1{ font-size: 110%; font-weight: bolder; }
.h2{ font-size: 105%; font-weight: bolder; }
.h3{ font-size: 80%; font-weight: bolder; }
.h4{ font-size: 60%; font-weight: bolder; }
.b1{ background: white; }
.b2{ background: whitesmoke; }
.b3{ background: lightgrey; }
.b4{ background: gray; }
.bold{ font-weight: bolder; }
.italic{ font-style: italic; }
.number{ text-align: right; }
.string{ text-align: left; }
.info{ font-size: 60%; }
.icon{ vertical-align: center; text-align: center; font-family: webdings; font-size: 20pt; }
.code{ font-family: courier; }
.span{ text-align: center; border-bottom:1px solid lightgrey;}
.total{ font-style: normal; }
.average{ font-style: italic; }
</style>
<body onload= 'onload();' class= 'b1' >
<form >
<!-- ***************************************************************************
RUNTIME SCRIPT
****************************************************************************-->
<script >
function onload()
{
<xsl:for-each select= "//include" >
<xsl:value-of select= "document( @document )//@init" />
</xsl:for-each>
}
function popup( d )
{
d.style.display = '';
var x = window.event.x + 12;
if( d.clientWidth + x > (document.body.clientWidth-4) ){
d.style.left = window.event.x - 8 - d.clientWidth;
d.style.right = window.event.x - 8;
}else{
d.style.left = x;
d.style.right = x + d.clientWidth;
}
}
function help( url )
{
showHelp( url );
}
var cc = "";
function compare(elem1, elem2, reverse)
{
var sgn = reverse ? -1 : 1;
if (elem1.isnum & & !elem2.isnum){
return -1;
}
if (elem2.isnum & & !elem1.isnum){
return 1;
}
if (elem1.text < elem2.text){
return -sgn;
}
if (elem1.text > elem2.text){
return sgn;
}
return 0;
}
function sort( t )
{
try{
var tbody = t.tBodies(0);
var iColumn = window.event.srcElement.cellIndex;
var reverse;
var iRowEnd = tbody.rows.length-1;
var iSortRowCnt;
for( var col = 0; col < iColumn; col++ ){
if( tbody.rows[0].cells[col].colSpan > 1 ){
iColumn -= (tbody.rows[0].cells[col].colSpan - 1);
}
}
var key = t.id + "_" + iColumn;
if( isNaN( tbody.children[0].children[iColumn].innerText.charAt(0) ) ){
reverse = false;
}else{
reverse = true;
}
if( cc == key ){
cc = "";
reverse = !reverse;
}else{
cc = key;
}
var t1 = new Array();
var t2 = new Array();
var tab1, tab2;
var i, j;
var re =/\D/g;
iSortRowCnt = 0;
for (i = 0; i < = iRowEnd; ++i){
if (tbody.children[i].child == 'true'){
continue;
}
t1[iSortRowCnt] = new Object();
if (typeof(tbody.children[i].children[iColumn]) != "undefined"){
text = tbody.children[i].children[iColumn].innerText;
}else{
text = "";
}
if (!isNaN(text.charAt(0))){
t1[iSortRowCnt].text = eval(text.replace(re, ""));
t1[iSortRowCnt].isnum = true;
}else{
t1[iSortRowCnt].text = text.toLowerCase();
t1[iSortRowCnt].isnum = false;
}
t1[iSortRowCnt].ptr = tbody.children[i];
iSortRowCnt++;
}
tab2 = t1;
tab1 = t2;
for (var iSize = 1; iSize < iSortRowCnt; iSize *= 2){
var iBeg, iLeft, iRight, iLeftEnd, iRightEnd, iDest;
if (tab1 == t2) {
tab1 = t1;
tab2 = t2;
}else{
tab1 = t2;
tab2 = t1;
}
for (iBeg = 0; iBeg < iSortRowCnt; iBeg += iSize*2){
iRight = iBeg+iSize;
if (iRight >= iSortRowCnt){
break;
}
iRightEnd = iRight+iSize-1;
if (iRightEnd >= iSortRowCnt){
iRightEnd = iSortRowCnt-1;
}
iLeftEnd = iRight-1;
iLeft = iBeg;
for (iDest = iLeft; iDest < = iRightEnd; ++iDest){
if ((iRight > iRightEnd) ||
(iLeft < = iLeftEnd & &
compare(tab1[iLeft], tab1[iRight], reverse) < = 0) ){
tab2[iDest] = tab1[iLeft];
++iLeft;
}else{
tab2[iDest] = tab1[iRight];
++iRight;
}
}
}
for (iDest = iRightEnd+1; iDest < iSortRowCnt; ++iDest){
tab2[iDest] = tab1[iDest];
}
}
for (i = iSortRowCnt-1; i >= 0; --i){
var first = tbody.children[0];
var insert = tab2[i].ptr, next;
if (insert == first) {
continue;
}
next = insert.nextSibling;
while ( next & & next.child == 'true' ) {
tbody.insertBefore(insert, first);
insert = next;
next = insert.nextSibling;
}
tbody.insertBefore(insert, first);
}
}catch(e){
}
if( tbody.mode == "child" ){
shade( tbody );
}else{
show( t );
}
}
function show( t )
{
var tbody = t.tBodies(0);
var top = document.all("top_"+t.id).value;
var count = 0;
var display = 'none';
var visible = 0;
var children = 0;
var childDisplay = 'none';
for( var i=0; i< tbody.rows.length;i++ ){
if( tbody.children[i].child != 'true' ){
children = 0;
if( count++ < top ){
display = '';
visible++;
}else{
display = 'none';
}
if( tbody.rows[i].cells[0].innerText == '+' || display == 'none' ){
childDisplay = 'none';
}else{
childDisplay = '';
}
}else{
if( children++ > top ){
display = 'none';
}else{
display = childDisplay;
}
}
tbody.children[i].style.display = display;
try{
document.all( t.id + "_child_" + tbody.children[i].index ).style.display = display;
}catch(e){
}
}
document.all("top_"+t.id).value = visible;
shade( tbody );
}
function shade( tbody ){
var p = 0;
var light;
var dark;
light = "b1";
dart = "b3";
for ( i = 0; i < tbody.rows.length; i++){
if( tbody.children[i].style.display == '' ){
if( tbody.children[i].child != 'true' ){
p++;
}
if( p % 2 == 0 ){
className = light;
}else{
className = dart;
}
if( tbody.children[i].child != 'true' ){
tbody.children[i].className = className;
}
}
}
}
function pressTop( t ){
if( window.event.keyCode == 13 ){
show( t );
window.event.returnValue = false;
}
}
function folder( d ){
try{
e = document.all( "e_" + d.id );
if( d.style.display == 'none' ){
d.style.display = '';
e.innerText = "-";
}else{
d.style.display = 'none';
e.innerText = "+";
}
}catch(e){
alert( e.message );
}
}
<xsl:for-each select= "//include" >
<xsl:value-of select= "document( @document )//script" />
</xsl:for-each>
</script>
<!-- ***************************************************************************
REPORT
****************************************************************************-->
<xsl:for-each select= "/report[@name]" >
<table class= "block" cellpadding= "2" >
<tr >
<td class= "h1" >
<xsl:call-template name= 'title' />
</td>
</tr>
<xsl:if test= "count(//data[@header])" >
<tr > <td > <hr /> </td> </tr>
<tr >
<td >
<table >
<xsl:for-each select= "//data[@header]" >
<tr >
<td class= "h4" >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "@header" />
</xsl:call-template> :
</td>
<td class= "info" >
<xsl:call-template name= "data" />
<xsl:apply-templates select= "@warning" />
<xsl:apply-templates select= "@note" />
</td>
</tr>
</xsl:for-each>
</table>
</td>
</tr>
</xsl:if>
</table>
<br />
</xsl:for-each>
<!-- ********** TABLE OF CONTENTS ********** -->
<table class= "block" >
<tr > <td valign= 'top' >
<table width= '100%' >
<tr >
<td valign= 'top' class= 'h2' >
<a name= "contents" accesskey= "c" tabindex= "1" >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "'contents'" />
</xsl:call-template>
</a>
<hr />
</td>
</tr> <tr >
<td >
<ul >
<xsl:if test= "//@warning and not(report/section[@name='advice'])" >
<li >
<font class= "bold" >
<a href= '#Warnings' >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "'warnings'" />
</xsl:call-template>
</a>
</font>
</li>
<br />
<br />
</xsl:if>
<xsl:for-each select= "report/section[(table[@level <= $Level or not(@level)][item[@level <= $Level or not(@level)][not(@visible='false')]][ not( @visible='false') and not(@section) ] or //table[@level <= $Level or not(@level)][item[@level <= $Level or not(@level)][not(@visible='false')]]/@section=@name ) or (@name='advise' and //@warning)]" >
<xsl:sort select= "not(@key) or @key < 0" data-type= "number" />
<xsl:sort select= "@key" data-type= "number" />
<li >
<font class= "bold" >
<xsl:call-template name= 'title' >
<xsl:with-param name= 'nosub' select= "1" />
</xsl:call-template>
</font>
</li>
<ul >
<xsl:if test= "//@warning and @name='advice'" >
<li >
<a href= '#Warnings' >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "'warnings'" />
</xsl:call-template>
</a>
</li>
</xsl:if>
<xsl:variable name= "tables" select= "table[@level <= $Level or not(@level)][item[@level <= $Level or not(@level)][not(@visible='false')]][not(@visible='false') and not(@section)] | //table[@level <= $Level or not(@level)][item[@level <= $Level or not(@level)][not(@visible='false')]][@section=current()/@name]" />
<xsl:variable name= "topics" >
<xsl:for-each select= "$tables[@topic]" >
<xsl:sort select= "not(@key) or @key < 0" data-type= "number" />
<xsl:sort select= "@key" data-type= "number" />
<xsl:element name= "topic" >
<xsl:value-of select= "@topic" />
</xsl:element>
</xsl:for-each>
</xsl:variable>
<xsl:for-each select= "msxsl:node-set($topics)/topic" >
<xsl:if test= "ms:unique( msxsl:node-set($topics)/topic, number(position()) )" >
<xsl:variable name= "topic" select= "." />
<li >
<font class= "bold" >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "$topic" />
</xsl:call-template>
</font>
</li>
<ul >
<xsl:for-each select= "$tables[@topic=$topic]" >
<xsl:sort select= "not(@key) or @key < 0" data-type= "number" />
<xsl:sort select= "@key" data-type= "number" />
<li >
<a >
<xsl:attribute name= 'href' > #<xsl:value-of select= '@name' /> </xsl:attribute>
<xsl:call-template name= 'title' >
<xsl:with-param name= 'nosub' select= "1" />
</xsl:call-template>
</a>
</li>
</xsl:for-each>
</ul>
</xsl:if>
</xsl:for-each>
<xsl:for-each select= "$tables[not(@topic)]" >
<xsl:sort select= "not(@key) or @key < 0" data-type= "number" />
<xsl:sort select= "@key" data-type= "number" />
<li >
<a >
<xsl:attribute name= 'href' > #<xsl:value-of select= '@name' /> </xsl:attribute>
<xsl:call-template name= 'title' >
<xsl:with-param name= 'nosub' select= "1" />
</xsl:call-template>
</a>
</li>
</xsl:for-each>
</ul>
<br />
</xsl:for-each>
</ul>
</td>
</tr>
</table>
</td>
<!-- ********** SUMMARY SECTION ********** -->
<xsl:if test= "//table[summary]" >
<td valign= 'top' >
<table width= '100%' >
<tr >
<td class= 'h2' >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "'summary'" />
</xsl:call-template>
<hr />
</td>
</tr>
<xsl:for-each select= "//table[summary]/summary" >
<xsl:sort select= "not(@key) or @key < 0" data-type= "number" />
<xsl:sort select= "@key" data-type= "number" />
<tr >
<td >
<xsl:variable name= "summaryTable" > <xsl:value-of select= "parent::table/@name" /> </xsl:variable>
<table class= "block" cellspacing= '3px' >
<tr >
<xsl:for-each select= "data" >
<td >
<xsl:attribute name= 'class' > <xsl:value-of select= '@class' /> bold</xsl:attribute>
<xsl:choose >
<xsl:when test= 'position() = 1' >
<a >
<xsl:attribute name= 'href' > #<xsl:value-of select= '$summaryTable' /> </xsl:attribute>
<xsl:call-template name= 'title' />
</a>
</xsl:when>
<xsl:otherwise >
<xsl:call-template name= 'title' />
</xsl:otherwise>
</xsl:choose>
</td>
</xsl:for-each>
</tr>
<tr >
<xsl:choose >
<xsl:when test= "@find='top'" >
<xsl:variable name= 'summaryIndex' > <xsl:value-of select= "ms:top(parent::table/item[(data[@name=current()/@exclude] != current()/@value) or not(current()/@exclude)],string(@field))" /> </xsl:variable>
<xsl:for-each select= "data" >
<td >
<xsl:attribute name= "class" > <xsl:value-of select= "@class" /> <xsl:value-of select= "' '" /> b3</xsl:attribute>
<xsl:variable name= "format" >
<xsl:choose >
<xsl:when test= "@format" > <xsl:value-of select= "@format" /> </xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:if test= "position() != 1" >
<xsl:attribute name= 'width' > 40%</xsl:attribute>
</xsl:if>
<xsl:for-each select= "/report/section/table[@name=$summaryTable]/item[data[@name=current()/parent::summary/@exclude] != current()/parent::summary/@value or not(current()/parent::summary/@exclude)][number($summaryIndex)]/data[@name=current()/@name]" >
<xsl:call-template name= "data" >
<xsl:with-param name= "format" select= "$format" />
</xsl:call-template>
</xsl:for-each>
<xsl:apply-templates select= "/report/section/table[@name=$summaryTable]/item[data[@name=current()/parent::summary/@exclude] != current()/parent::summary/@value or not(current()/parent::summary/@exclude)][number($summaryIndex)]/data[@name=current()/@name]/@warning" />
<xsl:apply-templates select= "/report/section/table[@name=$summaryTable]/item[data[@name=current()/parent::summary/@exclude] != current()/parent::summary/@value or not(current()/parent::summary/@exclude)][number($summaryIndex)]/data[@name=current()/@name]/@note" />
</td>
</xsl:for-each>
</xsl:when>
<xsl:when test= "@find='average'" >
<td >
<xsl:attribute name= 'class' > <xsl:value-of select= "data/@class" /> <xsl:value-of select= "' '" /> b3</xsl:attribute>
<xsl:variable name= "format" >
<xsl:choose >
<xsl:when test= "data/@format" > <xsl:value-of select= "data/@format" /> </xsl:when>
<xsl:otherwise > 0.00</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select= "format-number( sum(/report/section/table[@name=$summaryTable]/item[data[@name=current()/@exclude] != current()/@value or not(current()/parent::summary/@exclude)]/data[@name=current()/@field]) div count(/report/section/table[@name=$summaryTable]/item/data[@name=current()/@field]), $format)" />
</td>
</xsl:when>
<xsl:when test= "@find='total'" >
<td >
<xsl:attribute name= "class" > <xsl:value-of select= "data/@class" /> <xsl:value-of select= "' '" /> b3</xsl:attribute>
<xsl:variable name= "format" >
<xsl:choose >
<xsl:when test= "data/@format" > <xsl:value-of select= "data/@format" /> </xsl:when>
<xsl:otherwise > 0.00</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select= "format-number( sum(/report/section/table[@name=$summaryTable]/item[data[@name=current()/@exclude] != current()/@value]/data[@name=current()/@field]), $format )" />
</td>
</xsl:when>
<xsl:when test= "@find='field'" >
<xsl:variable name= 'field' > <xsl:value-of select= '@field' /> </xsl:variable>
<xsl:variable name= 'value' > <xsl:value-of select= '@value' /> </xsl:variable>
<xsl:for-each select= "data" >
<td >
<xsl:variable name= "format" >
<xsl:choose >
<xsl:when test= "@format" > <xsl:value-of select= "@format" /> </xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:attribute name= "class" > <xsl:value-of select= "@class" /> <xsl:value-of select= "' '" /> b3</xsl:attribute>
<xsl:if test= "position() != 1" >
<xsl:attribute name= 'width' > 40%</xsl:attribute>
</xsl:if>
<xsl:for-each select= "/report/section/table[@name=$summaryTable]/item[data[@name=$field]=$value]/data[@name=current()/@name]" >
<xsl:call-template name= "data" >
<xsl:with-param name= "format" select= "$format" />
</xsl:call-template>
</xsl:for-each>
<xsl:apply-templates select= "/report/section/table[@name=$summaryTable]/item[data[@name=$field]=$value]/data[@name=current()/@name]/@warning" />
<xsl:apply-templates select= "/report/section/table[@name=$summaryTable]/item[data[@name=$field]=$value]/data[@name=current()/@name]/@note" />
</td>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</tr>
</table>
</td>
</tr>
</xsl:for-each>
</table>
</td>
</xsl:if>
</tr>
</table>
<br />
<!-- ********** WARNING SECTION ********** -->
<xsl:if test= "//@warning and not(report/section[@name='advice'])" >
<xsl:call-template name= "warning" />
</xsl:if>
<!-- ********** SECTION HEADER ********** -->
<xsl:for-each select= "report/section[(table[item[@level <= $Level or not(@level)][not(@visible='false')]][ not( @visible='false') and not(@section) ] or //table[item[@level <= $Level or not(@level)][not(@visible='false')]]/@section=@name ) or (@name='advise' and //@warning) and (@level > $Level or not(@level))]" >
<xsl:sort select= "not(@key) or @key < 0" data-type= "number" />
<xsl:sort select= "@key" data-type= "number" />
<table class= "block" style= "page-break-before:always" cellpadding= '2' cellspacing= '5' >
<tr >
<td >
<xsl:attribute name= "class" > b3</xsl:attribute>
<table width= '100%' >
<tr >
<td class= 'h1' >
<xsl:call-template name= 'title' />
<xsl:apply-templates select= "@warning" />
<xsl:apply-templates select= "@note" />
</td>
<td align= 'right' >
<a href= "#top" >
<font style= 'text-decoration:none;' face= "webdings" size= "x-small" >
<xsl:value-of select= "'5'" />
</font>
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<br />
<!-- ********** WARNING SECTION ********** -->
<xsl:if test= "@name='advice'" >
<xsl:call-template name= "warning" />
</xsl:if>
<!-- ********** TABLE ********** -->
<xsl:variable name= "tables" select= "table[item[@level <= $Level or not(@level)][not(@visible='false')]][not(@visible = 'false') and not(@section) and (@level <= $Level or not(@level))] | //table[item[@level <= $Level or not(@level)][not(@visible='false')]][@section=current()/@name and (@level <= $Level or not(@level))]" />
<xsl:variable name= "topics" >
<xsl:for-each select= "$tables[@topic]" >
<xsl:sort select= "not(@key) or @key < 0" data-type= "number" />
<xsl:sort select= "@key" data-type= "number" />
<xsl:element name= "topic" >
<xsl:value-of select= "@topic" />
</xsl:element>
</xsl:for-each>
</xsl:variable>
<xsl:for-each select= "msxsl:node-set($topics)/topic" >
<xsl:if test= "ms:unique( msxsl:node-set($topics)/topic, number(position()) )" >
<xsl:variable name= "topic" select= "." />
<table width= "100%" style= "border: solid gray 1px;" >
<tr > <td >
<table width= "100%" > <tr >
<td class= "h2 b2" >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "$topic" />
</xsl:call-template>
</td>
</tr> </table>
</td>
</tr>
</table>
<br />
<xsl:for-each select= "$tables[@topic=$topic]" >
<xsl:sort select= "not(@key) or @key < 0" data-type= "number" />
<xsl:sort select= "@key" data-type= "number" />
<xsl:apply-templates select= "." />
</xsl:for-each>
</xsl:if>
</xsl:for-each>
<xsl:for-each select= "$tables[not(@topic)]" >
<xsl:sort select= "not(@key) or @key < 0" data-type= "number" />
<xsl:sort select= "@key" data-type= "number" />
<xsl:apply-templates select= "." />
</xsl:for-each>
</xsl:for-each>
</form>
</body>
</html>
</xsl:template>
<!-- ********** TABLE TEMPLATES ********** -->
<xsl:template match= "table" >
<xsl:variable name= "table" > <xsl:value-of select= "@name" /> </xsl:variable>
<xsl:variable name= "tableId" > table_<xsl:value-of select= "ms:tag()" /> </xsl:variable>
<a > <xsl:attribute name= "name" > <xsl:value-of select= "@name" /> </xsl:attribute> </a>
<!-- ********** SORT SETUP ********** -->
<xsl:variable name= "count" >
<xsl:call-template name= "itemCount" />
</xsl:variable>
<xsl:variable name= "totalCount" >
<xsl:choose >
<xsl:when test= "@count" >
<xsl:value-of select= "@count" />
</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "count(item[not(@visible='false')])" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "show" >
<xsl:call-template name= "show" >
<xsl:with-param name= "header" select= "header" />
</xsl:call-template>
</xsl:variable>
<!-- ********** TABLE TITLE ********** -->
<table class= "block" cellspacing= '3px' >
<tr >
<td >
<table width= '100%' >
<tr >
<td class= 'h2' >
<xsl:call-template name= 'title' />
<xsl:apply-templates select= "@warning" />
<xsl:apply-templates select= "@note" />
</td>
<td align= 'right' valign= 'top' >
<xsl:if test= "not(@style)" >
<b >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "'top'" />
</xsl:call-template>
</b>
<xsl:value-of select= "' '" />
<input type= 'text' size= '3' class= 'b1' style= "margin:1px;border: none; font-size: 100%;font-family: Verdana,Arial;" >
<xsl:attribute name= 'id' > top_<xsl:value-of select= '$tableId' /> </xsl:attribute>
<xsl:attribute name= 'onchange' > show(<xsl:value-of select= '$tableId' /> )</xsl:attribute>
<xsl:attribute name= 'onkeypress' > pressTop(<xsl:value-of select= '$tableId' /> )</xsl:attribute>
<xsl:attribute name= 'value' >
<xsl:value-of select= "$show" />
</xsl:attribute>
</input>
<b >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "'topOf'" />
</xsl:call-template>
</b>
<xsl:value-of select= "'   '" />
<xsl:value-of select= "$count" />
<xsl:if test= "$count < $totalCount" >
<xsl:call-template name= "note" >
<xsl:with-param name= "text" >
<div nowrap= "true" >
<font class= "bold" >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "'uniqueCount'" />
</xsl:call-template>
</font>
<xsl:value-of select= "$totalCount" />
</div>
</xsl:with-param>
<xsl:with-param name= "width" select= "'50'" />
</xsl:call-template>
</xsl:if>
<xsl:value-of select= "'     '" />
</xsl:if>
<a href= "#top" >
<font style= 'text-decoration:none;' face= "webdings" size= "x-small" >
<xsl:value-of select= "'5'" />
</font>
</a>
</td>
</tr>
</table>
<hr />
</td>
</tr>
<!-- ********** INLUDE AREA ********** -->
<xsl:for-each select= 'include' >
<tr >
<td >
<xsl:copy-of select= 'document(@document)//include[@name=current()/@name]' />
</td>
</tr>
</xsl:for-each>
<!-- ********** TABLE BODY ********** -->
<tr >
<td >
<xsl:choose >
<xsl:when test= "@style='info'" >
<xsl:call-template name= "infoTable" >
<xsl:with-param name= "Level" select= "$Level" />
<xsl:with-param name= "tableId" select= "$tableId" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise >
<xsl:call-template name= "colTable" >
<xsl:with-param name= "header" select= "header" />
<xsl:with-param name= "id" select= "$tableId" />
<xsl:with-param name= "show" select= "$show" />
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</table>
<br /> <br />
</xsl:template>
<xsl:template name= "show" >
<xsl:param name= "header" />
<xsl:variable name= "count" >
<xsl:call-template name= "itemCount" />
</xsl:variable>
<xsl:variable name= "minField" >
<xsl:choose >
<xsl:when test= "$header/threshold[@type='min']" > <xsl:value-of select= "$header/threshold[@type='min']/@field" /> </xsl:when>
<xsl:otherwise > <xsl:value-of select= "item[1]/data[1]/@name" /> </xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "min" >
<xsl:choose >
<xsl:when test= "$header/threshold[@type='min']" > <xsl:value-of select= "$header/threshold[@type='min']/@value" /> </xsl:when>
<xsl:otherwise > all</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "octaveField" >
<xsl:choose >
<xsl:when test= "$header/threshold[@type='octave']" > <xsl:value-of select= "$header/threshold[@type='octave']/@field" /> </xsl:when>
<xsl:otherwise > <xsl:value-of select= "item[1]/data[1]/@name" /> </xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "octave" >
<xsl:choose >
<xsl:when test= "$header/threshold[@type='octave']" >
<xsl:variable name= 'octaveIndex' > <xsl:value-of select= "ms:top(item, string($octaveField))" /> </xsl:variable>
<xsl:value-of select= "item[number($octaveIndex)]/data[@name=$octaveField] div 2" />
</xsl:when>
<xsl:otherwise > all</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "top" >
<xsl:choose >
<xsl:when test= "$header/threshold[@type='top']" > <xsl:value-of select= "$header/threshold[@type='top']/@value" /> </xsl:when>
<xsl:otherwise > <xsl:value-of select= "$Top" /> </xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "octaveCount" >
<xsl:choose >
<xsl:when test= "$octave = 'all'" > 0</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "count(item[@level <= $Level or not(@level)][not(@visible='false')][data[@name = $octaveField] >= $octave])" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "minCount" >
<xsl:choose >
<xsl:when test= "$min = 'all'" > 0</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "count(item[@level <= $Level or not(@level)][not(@visible='false')][data[@name = $minField] >= $min])" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "show" >
<xsl:choose >
<xsl:when test= "$octaveCount > $top and $octaveCount >= $minCount" >
<xsl:value-of select= "$octaveCount" />
</xsl:when>
<xsl:when test= "$minCount > $top and $minCount > $octaveCount" >
<xsl:value-of select= "$minCount" />
</xsl:when>
<xsl:when test= "$top = 'all' or ($top != 'all' and $top > $count)" >
<xsl:value-of select= "$count" />
</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "$top" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select= "$show" />
</xsl:template>
<xsl:template name= "itemCount" >
<xsl:value-of select= "count(item[@level <= $Level or not(@level)][not(@visible='false')])" />
</xsl:template>
<xsl:template name= "colTable" >
<xsl:param name= "mode" />
<xsl:param name= "id" />
<xsl:param name= "header" />
<xsl:param name= "show" />
<xsl:variable name= "max" >
<xsl:choose >
<xsl:when test= "string-length($show)" > all</xsl:when>
<xsl:otherwise >
<xsl:call-template name= "show" >
<xsl:with-param name= "header" select= "$header" />
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "tableId" >
<xsl:choose >
<xsl:when test= "string-length($id)" > <xsl:value-of select= "$id" /> </xsl:when>
<xsl:otherwise > table_<xsl:value-of select= "ms:tag()" /> </xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "order1" >
<xsl:choose >
<xsl:when test= "$header/sort[1]/@order" > <xsl:value-of select= "$header/sort[1]/@order" /> </xsl:when>
<xsl:otherwise > ascending</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "type1" >
<xsl:choose >
<xsl:when test= "$header/sort[1]/@type" > <xsl:value-of select= "$header/sort[1]/@type" /> </xsl:when>
<xsl:otherwise > number</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "order2" >
<xsl:choose >
<xsl:when test= "$header/sort[2]/@order" > <xsl:value-of select= "$header/sort[2]/@order" /> </xsl:when>
<xsl:otherwise > ascending</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "type2" >
<xsl:choose >
<xsl:when test= "$header/sort[2]/@type" > <xsl:value-of select= "$header/sort[2]/@type" /> </xsl:when>
<xsl:otherwise > number</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<table class= "block" style= "table-layout:auto" >
<xsl:attribute name= 'id' > <xsl:value-of select= "$tableId" /> </xsl:attribute>
<thead style= "display: table-header-group" >
<xsl:for-each select= "$header" >
<tr >
<xsl:if test= "header" >
<td width= "1%" />
</xsl:if>
<xsl:apply-templates select= "data[@level <= $Level or not(@level)]" mode= "header" >
<xsl:with-param name= "tableId" select= "$tableId" />
<xsl:with-param name= "sort" > <xsl:if test= 'position()=last()' > true</xsl:if> </xsl:with-param>
</xsl:apply-templates>
</tr>
</xsl:for-each>
</thead>
<tbody >
<xsl:if test= "string-length($mode)" >
<xsl:attribute name= 'mode' > <xsl:value-of select= "$mode" /> </xsl:attribute>
</xsl:if>
<xsl:for-each select= "item[ ($max = 'all' or position() <= $max) and not(@visible='false') and (@level <= $Level or not(@level))]" >
<xsl:sort select= "data[@name=$header/sort[1]/@field]" order= "{$order1}" data-type= '{$type1}' />
<xsl:sort select= "data[@name=$header/sort[2]/@field]" order= "{$order2}" data-type= '{$type2}' />
<xsl:variable name= 'background' >
<xsl:choose >
<xsl:when test= "position() mod 2 = 1" > b3</xsl:when>
<xsl:otherwise > b1</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= 'display' >
<xsl:choose >
<xsl:when test= "not($show)" > </xsl:when>
<xsl:when test= "position() <= number($show)" > display:''</xsl:when>
<xsl:otherwise > display:'none'</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr >
<xsl:attribute name= "class" > <xsl:value-of select= "$background" /> </xsl:attribute>
<xsl:attribute name= "index" > <xsl:value-of select= "position()" /> </xsl:attribute>
<xsl:attribute name= "style" > <xsl:value-of select= "$display" /> </xsl:attribute>
<xsl:variable name= "rowId" select= "generate-id(.)" />
<xsl:variable name= "state" >
<xsl:choose >
<xsl:when test= "item/@expand='true'" > -</xsl:when>
<xsl:otherwise > +</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose >
<xsl:when test= "item[not(@expand='none')] and $header/header" >
<td >
<a style= "cursor:hand;text-decoration:none;" >
<xsl:attribute name= "onclick" > folder( c_<xsl:value-of select= "$rowId" /> )</xsl:attribute>
<xsl:call-template name= "expand" >
<xsl:with-param name= "id" > e_c_<xsl:value-of select= "$rowId" /> </xsl:with-param>
<xsl:with-param name= "state" select= "$state" />
</xsl:call-template>
</a>
</td>
</xsl:when>
<xsl:when test= "$header/header" > <td />
</xsl:when>
</xsl:choose>
<xsl:apply-templates select= "data[not(@visible = 'false') and (@level <= $Level or not(@level))]" >
<xsl:with-param name= "header" select= "$header" />
</xsl:apply-templates>
</tr>
<xsl:if test= "item[not(@expand='none')] and $header/header" >
<tr child= "true" >
<xsl:attribute name= "id" > c_<xsl:value-of select= "$rowId" /> </xsl:attribute>
<xsl:attribute name= "style" >
<xsl:choose >
<xsl:when test= "$state='-'" > <xsl:value-of select= "$display" /> </xsl:when>
<xsl:otherwise > display:'none';</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<td colspan= '100' >
<table width= "100%" cellpadding= "0" cellspacing= "0" >
<tr >
<td width= "10px" />
<td >
<xsl:call-template name= "colTable" >
<xsl:with-param name= "header" select= "$header/header" />
<xsl:with-param name= "mode" > child</xsl:with-param>
</xsl:call-template>
</td>
</tr>
</table>
</td>
</tr>
</xsl:if>
</xsl:for-each>
</tbody>
<xsl:if test= "$header/data[@summary]" >
<tfoot >
<tr >
<xsl:variable name= "items" select= "item" />
<xsl:if test= "$header/header" >
<td width= "1%" />
</xsl:if>
<xsl:for-each select= "$header[data[@summary]]/data" >
<td >
<xsl:if test= "@summary" >
<xsl:attribute name= "style" > border-top: 1px solid black;</xsl:attribute>
</xsl:if>
<xsl:attribute name= "colspan" > <xsl:value-of select= "@span" /> </xsl:attribute>
<xsl:attribute name= "class" > <xsl:value-of select= "@class" /> </xsl:attribute>
<xsl:variable name= 'format' >
<xsl:choose >
<xsl:when test= "@format" > <xsl:value-of select= "@format" /> </xsl:when>
<xsl:otherwise > 0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test= '@summary' >
<xsl:variable name= 'summary' >
<xsl:choose >
<xsl:when test= "string-length(.)" >
<xsl:value-of select= "format-number( ., $format )" />
</xsl:when>
<xsl:when test= "@summary='total'" >
<xsl:value-of select= "format-number( sum($items/data[@name=current()/@name]), $format )" />
</xsl:when>
<xsl:when test= "@summary='average'" >
<xsl:value-of select= "format-number( sum($items/data[@name=current()/@name]) div count($items/data[@name=current()/@name]), $format )" />
</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:call-template name= "note" >
<xsl:with-param name= "anchor" >
<font >
<xsl:attribute name= "class" > <xsl:value-of select= "@summary" /> </xsl:attribute>
<xsl:value-of select= "$summary" />
</font>
</xsl:with-param>
<xsl:with-param name= "text" >
<font >
<xsl:attribute name= "class" > <xsl:value-of select= "@summary" /> </xsl:attribute>
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "@summary" />
</xsl:call-template>
</font>
<xsl:if test= "@count" >
<br />
<div nowrap= "true" >
<font class= "bold" >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "'recordCount'" />
</xsl:call-template>
</font>
<xsl:value-of select= "@count" />
</div>
</xsl:if>
</xsl:with-param>
<xsl:with-param name= "width" select= "50" />
</xsl:call-template>
</xsl:if>
</td>
</xsl:for-each>
</tr>
</tfoot>
</xsl:if>
</table>
</xsl:template>
<!-- ********** TABLE TEMPLATE (INFO STYLE) ********** -->
<xsl:template name= "infoTable" >
<xsl:param name= "Level" />
<xsl:param name= "tableId" />
<table class= 'block' >
<xsl:attribute name= 'id' > <xsl:value-of select= "$tableId" /> </xsl:attribute>
<xsl:for-each select= "item[(@level <= $Level or not(@level))][data[not(@visible='false') and (@level <= $Level or not(@level))]]" >
<xsl:for-each select= "data[not(@visible='false') and (@level <= $Level or not(@level))]" >
<tr >
<td width= '12%' class= 'h4' style= 'white-space:nowrap;' >
<xsl:if test= 'not(@name=preceding-sibling::data/@name)' >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "@name" />
</xsl:call-template> :
</xsl:if>
</td>
<td class= 'info' >
<xsl:if test= 'position() mod 2=1' >
<xsl:attribute name= 'class' > info b3</xsl:attribute>
</xsl:if>
<xsl:call-template name= "data" />
<xsl:apply-templates select= "@warning" mode= "anchor" />
<xsl:apply-templates select= "@note" />
</td>
</tr>
</xsl:for-each>
<xsl:if test= "position() != last()" >
<tr > <td colspan= '2' > <hr class= 'thin' /> </td> </tr>
</xsl:if>
</xsl:for-each>
</table>
</xsl:template>
<!-- ********** ITEM/DATA TEMPLATE ********** -->
<xsl:template match= "data" >
<xsl:param name= "header" />
<xsl:variable name= "class" >
<xsl:choose >
<xsl:when test= "@class" >
<xsl:value-of select= "@class" />
</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "$header/data[@name=current()/@name]/@class" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<td >
<xsl:if test= "position() != 1 and contains( $class, 'number')" >
<xsl:attribute name= "width" > 8%</xsl:attribute>
</xsl:if>
<xsl:attribute name= "colspan" > <xsl:value-of select= "@span" /> </xsl:attribute>
<xsl:attribute name= "class" > <xsl:value-of select= "$class" /> </xsl:attribute>
<xsl:value-of select= "substring($tab, string-length($tab) - (@tab * 4) )" />
<xsl:choose >
<xsl:when test= "@calculate or $header/data[@name=current()/@name]/@calculate" >
<xsl:call-template name= "calculate-data" >
<xsl:with-param name= "header" select= "$header" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise >
<xsl:call-template name= "data" />
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates select= "@warning" mode= "anchor" />
<xsl:apply-templates select= "@note" />
</td>
</xsl:template>
<!-- ********** CALCUTATED DATA TEMPLATE ********** -->
<xsl:template name= "calculate-data" >
<xsl:param name= "header" />
<xsl:variable name= "field" >
<xsl:choose >
<xsl:when test= "$header/data[@name=current()/@name]/@field" >
<xsl:value-of select= "$header/data[@name=current()/@name]/@field" />
</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "@field" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "calculate" >
<xsl:choose >
<xsl:when test= "$header/data[@name=current()/@name]/@calculate" >
<xsl:value-of select= "$header/data[@name=current()/@name]/@calculate" />
</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "@calculate" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "format" >
<xsl:choose >
<xsl:when test= "$header/data[@name=current()/@name]/@format" >
<xsl:value-of select= "$header/data[@name=current()/@name]/@format" />
</xsl:when>
<xsl:when test= "@format" > <xsl:value-of select= "@format" /> </xsl:when>
<xsl:otherwise > 0.00</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "sum" >
<xsl:value-of select= "sum(parent::item/item/data[@name=$field])" />
</xsl:variable>
<xsl:choose >
<xsl:when test= "$calculate='total'" >
<xsl:value-of select= "format-number($sum,$format)" />
</xsl:when>
<xsl:when test= "$calculate='average'" >
<xsl:variable name= "count" >
<xsl:value-of select= "count(parent::item/item/data[@name=$field])" />
</xsl:variable>
<xsl:value-of select= "format-number($sum div $count,$format)" />
</xsl:when>
</xsl:choose>
</xsl:template>
<!-- ********** COLUMN HEADER TEMPLATE ********** -->
<xsl:template match= "data" mode= "header" >
<xsl:param name= "sort" />
<xsl:param name= "tableId" />
<th class= 'header' >
<xsl:attribute name= 'colspan' > <xsl:value-of select= "@span" /> </xsl:attribute>
<xsl:attribute name= "class" >
<xsl:choose >
<xsl:when test= "not(@class)" > </xsl:when>
<xsl:when test= "@class='code' or @class='icon' or @class='string'" >
string
</xsl:when>
<xsl:when test= "@class='span'" >
span
</xsl:when>
<xsl:otherwise >
number
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:if test= "$sort = 'true'" >
<xsl:attribute name= "onclick" > sort(<xsl:value-of select= "$tableId" /> );</xsl:attribute>
<xsl:attribute name= "style" > cursor:hand;</xsl:attribute>
</xsl:if>
<xsl:call-template name= 'title' />
<xsl:apply-templates select= "@warning" />
<xsl:apply-templates select= "@note" />
</th>
</xsl:template>
<!-- ********** DATA TEMPLATE ********** -->
<xsl:template name= "data" >
<xsl:param name= "format" />
<xsl:choose >
<xsl:when test= "@translate = 'value'" >
<xsl:call-template name= "label" >
<xsl:with-param name= 'label' select= '.' />
</xsl:call-template>
</xsl:when>
<xsl:when test= "string-length($format)" >
<xsl:value-of select= 'format-number( ., $format )' />
</xsl:when>
<xsl:when test= "@format" >
<xsl:value-of select= 'format-number( ., @format )' />
</xsl:when>
<xsl:when test= "ancestor::table/header/data[@name=current()/@name]/@format" >
<xsl:value-of select= 'format-number( ., ancestor::table/header/data[@name=current()/@name]/@format )' />
</xsl:when>
<xsl:otherwise > <xsl:value-of select= '.' /> </xsl:otherwise>
</xsl:choose>
<xsl:if test= "@units" >
<xsl:value-of select= "' '" /> <xsl:value-of select= "@units" />
</xsl:if>
</xsl:template>
<!-- ********** LABEL TEMPLATE ********** -->
<xsl:template name= "label" >
<xsl:param name= "label" />
<xsl:choose >
<xsl:when test= "@translate='false'" >
<xsl:value-of select= "$label" />
</xsl:when>
<xsl:otherwise >
<xsl:variable name= 'title' >
<xsl:value-of select= "msxsl:node-set($titles)/title[@name = $label]" />
</xsl:variable>
<xsl:choose >
<xsl:when test= 'string-length($title)' > <xsl:value-of select= "$title" /> </xsl:when>
<xsl:otherwise > <xsl:value-of select= "$label" /> </xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ********** TITLE TEMPLATE ********** -->
<xsl:template name= 'title' >
<xsl:param name= 'nosub' />
<xsl:variable name= "label" >
<xsl:choose >
<xsl:when test= "@title" > <xsl:value-of select= "@title" /> </xsl:when>
<xsl:otherwise > <xsl:value-of select= "@name" /> </xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "$label" />
</xsl:call-template>
<xsl:if test= "@index" >
<xsl:value-of select= "' '" />
<xsl:value-of select= "@index" />
</xsl:if>
<xsl:if test= "@subtitle and $nosub!='1'" >
<div class= "h3" >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "@subtitle" />
</xsl:call-template>
</div>
</xsl:if>
</xsl:template>
<!-- ********** WARNING POPUP TEMPLATE ********** -->
<xsl:template match= "@warning" mode= "anchor" >
<a > <xsl:attribute name= "name" > <xsl:value-of select= "." /> </xsl:attribute> </a>
<xsl:apply-templates select= "." />
</xsl:template>
<xsl:template match= "@warning" >
<xsl:variable name= 'id' > w_<xsl:value-of select= "generate-id(.)" /> <xsl:value-of select= "ms:tag()" /> _<xsl:value-of select= "@name" /> </xsl:variable>
<a style= "cursor:help" >
<xsl:attribute name= "onMouseOver" > popup(<xsl:value-of select= '$id' /> )</xsl:attribute>
<xsl:attribute name= "onMouseOut" > <xsl:value-of select= '$id' /> .style.display='none'</xsl:attribute>
<font style= "font-weight:bolder;" color= "red" face= "wingdings" size= "x-small" > <xsl:value-of select= "'O'" /> </font>
</a>
<div class= "popup" style= "display:'none';width:300;" >
<xsl:attribute name= "id" > <xsl:value-of select= '$id' /> </xsl:attribute>
<xsl:choose >
<xsl:when test= "/report/warnings/warning[@name=current()]" >
<xsl:copy-of select= "/report/warnings/warning[@name=current()]" />
</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "." />
</xsl:otherwise>
</xsl:choose>
</div>
</xsl:template>
<!-- ********** NOTE POPUP TEMPLATE ********** -->
<xsl:template match= "@note" >
<xsl:call-template name= "note" >
<xsl:with-param name= "text" >
<xsl:element name= "note" > <xsl:value-of select= "." /> </xsl:element>
</xsl:with-param>
<xsl:with-param name= "width" select= "'300'" />
</xsl:call-template>
</xsl:template>
<xsl:template name= "note" >
<xsl:param name= "text" />
<xsl:param name= "width" />
<xsl:param name= "anchor" />
<xsl:variable name= 'id' > popup_<xsl:value-of select= "ms:tag()" /> </xsl:variable>
<a style= "cursor:help" >
<xsl:attribute name= "onMouseOver" > popup(<xsl:value-of select= '$id' /> )</xsl:attribute>
<xsl:attribute name= "onMouseOut" > <xsl:value-of select= '$id' /> .style.display='none'</xsl:attribute>
<xsl:choose >
<xsl:when test= "$anchor" >
<xsl:copy-of select= "$anchor" />
</xsl:when>
<xsl:otherwise >
<div style= "margin-left:3;position:absolute;width:8;height:10;background:infobackground;" >
<div style= "position:absolute;top:-5;left:-3;" >
<font style= "font-size: 11pt;font-weight:normal;" color= "black" face= "webdings" > <xsl:value-of select= "''" /> </font>
</div>
</div>
</xsl:otherwise>
</xsl:choose>
</a>
<div class= "popup" >
<xsl:attribute name= "style" > display:'none';width:<xsl:value-of select= "$width" /> </xsl:attribute>
<xsl:attribute name= "id" > <xsl:value-of select= '$id' /> </xsl:attribute>
<xsl:copy-of select= "$text" />
</div>
</xsl:template>
<!-- ********** WARNINGS TABLE TEMPLATE ********** -->
<xsl:template name= "warning" >
<xsl:if test= "//@warning" >
<a name= "warnings" />
<table class= "block" >
<tr >
<td >
<table width= '100%' >
<tr >
<td class= 'h2' >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "'warnings'" />
</xsl:call-template>
</td>
<td align= 'right' >
<a href= "#top" >
<font style= 'text-decoration:none;' face= "webdings" size= "x-small" >
<xsl:value-of select= "'5'" />
</font>
</a>
</td>
</tr>
</table>
<hr /> </td> </tr>
<tr > <td >
<table width= '100%' >
<tr >
<xsl:if test= "/report/warnings" >
<th class= 'string' >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "'type'" />
</xsl:call-template>
</th>
</xsl:if>
<th colspan= '2' class= 'string' >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "'item'" />
</xsl:call-template>
</th>
<th class= 'string' >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "'warning'" />
</xsl:call-template>
</th>
<xsl:if test= "/report/warnings" >
<th class= 'string' >
<xsl:call-template name= "label" >
<xsl:with-param name= "label" select= "'help'" />
</xsl:call-template>
</th>
</xsl:if>
</tr>
<xsl:for-each select= '//@warning[parent::data]' >
<xsl:variable name= "warning" select= "." />
<tr >
<xsl:if test= "position() mod 2 = 1" > <xsl:attribute name= 'class' > b3</xsl:attribute> </xsl:if>
<xsl:if test= "/report/warnings" >
<td valign= 'top' align= 'left' style= 'white-space:nowrap' >
<xsl:choose >
<xsl:when test= "/report/warnings/warning[@name=current()]/@type='info'" >
<table > <tr > <td width= "26px" align= "center" > <xsl:call-template name= "infoIcon" /> </td> <td class= "info" > Information</td> </tr> </table>
</xsl:when>
<xsl:when test= "/report/warnings/warning[@name=current()]/@type='warning' or not(/report/warnings/warning[@name=current()]/@type)" >
<table > <tr > <td width= "26px" align= "center" > <xsl:call-template name= "warningIcon" /> </td> <td class= "info" > Warning</td> </tr> </table>
</xsl:when>
<xsl:when test= "/report/warnings/warning[@name=current()]/@type='error'" >
<table > <tr > <td width= "26px" align= "center" > <xsl:call-template name= "errorIcon" /> </td> <td class= "info" > Error</td> </tr> </table>
</xsl:when>
</xsl:choose>
</td>
</xsl:if>
<td valign= "top" style= "white-space:nowrap;padding:6px;" class= "h4" >
<xsl:for-each select= "parent::data" >
<a >
<xsl:attribute name= 'href' > #<xsl:value-of select= "$warning" /> </xsl:attribute>
<xsl:call-template name= 'title' />
</a>
</xsl:for-each>
</td>
<td valign= "top" class= "info" style= "padding:6px;" >
<xsl:for-each select= "parent::data" >
<xsl:call-template name= "data" />
</xsl:for-each>
</td>
<td >
<xsl:choose >
<xsl:when test= "/report/warnings/warning[@name=current()]" >
<xsl:copy-of select= "/report/warnings/warning[@name=current()]" />
</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "." />
</xsl:otherwise>
</xsl:choose>
</td>
<xsl:if test= "/report/warnings" >
<td valign= 'top' align= 'center' style= "padding:2px;" >
<xsl:if test= "string-length(/report/warnings/warning[@name=current()]/@url)" >
<a >
<xsl:attribute name= "onclick" > help('<xsl:value-of select= "/report/warnings/warning[@name=current()]/@url" /> ')</xsl:attribute>
<xsl:call-template name= "helpIcon" />
</a>
</xsl:if>
</td>
</xsl:if>
</tr>
</xsl:for-each>
</table>
</td> </tr>
</table>
<br />
</xsl:if>
</xsl:template>
<xsl:template name= "infoIcon" >
<div style= "position:relative;text-overflow:clip;overflow:hidden;width:22px;height:22px;" >
<font style= "font-size:18pt; text-decoration:none;font-weight:normal;color:gray" face= "webdings" > <xsl:value-of select= "'('" /> </font>
<div style= "position:absolute;top:-1;left:-1;" >
<font style= "font-size:18pt;text-decoration:none;font-weight:normal;color:aliceblue;" face= "webdings" > <xsl:value-of select= "'('" /> </font>
</div>
<div style= "position:absolute;top:0;left:7;" >
<font style= "font-size:8pt;text-decoration:none;font-weight:bolder;color:blue;" face= "courier" > i</font>
</div>
</div>
</xsl:template>
<xsl:template name= "warningIcon" >
<div style= "position:relative;text-overflow:clip;overflow:hidden;width:22px;height:22px;" >
<font style= "font-size:19pt;text-decoration:none;font-weight:normal;color:gray" face= "webdings" > <xsl:value-of select= "'ê'" /> </font>
<div style= "position:absolute;top:3;left:11;" >
<font style= "font-size:8pt;text-decoration:none;font-weight:bolder;color:grey" > !</font>
</div>
<div style= "position:absolute;top:-1;left:-1;" >
<font style= "font-size:19pt;text-decoration:none;font-weight:normal;color:yellow;" face= "webdings" > <xsl:value-of select= "'ê'" /> </font>
</div>
<div style= "position:absolute;top:2;left:10;" >
<font style= "font-size:8pt;text-decoration:none;font-weight:bolder;color:yellow;" > !</font>
</div>
</div>
</xsl:template>
<xsl:template name= "errorIcon" >
<div style= "position:relative;" >
<font style= "font-size:16pt;text-decoration:none;font-weight:normal;color:gray" face= "webdings" > <xsl:value-of select= "'n'" /> </font>
<div style= "position:absolute;top:-1;left:-1;" >
<font style= "font-size:16pt;text-decoration:none;font-weight:normal;color:red" face= "webdings" > <xsl:value-of select= "'n'" /> </font>
</div>
<div style= "position:absolute;top:-1;left:-1;" >
<font style= "font-size:16pt;text-decoration:none;font-weight:normal;color:white" face= "webdings" > <xsl:value-of select= "'r'" /> </font>
</div>
</div>
</xsl:template>
<xsl:template name= "helpIcon" >
<div style= "position:relative;" >
<font style= "font-size:18pt;text-decoration:none;font-weight:normal;" face= "webdings" > <xsl:value-of select= "''" /> </font>
<div style= "position:absolute;top:-2;left:7;" >
<font style= "font-size:12pt;text-decoration:none;font-weight:bolder;color:yellow;" face= "webdings" > <xsl:value-of select= "'s'" /> </font>
</div>
</div>
</xsl:template>
<!-- ********** +/ - ICON TEMPLATE ********** -->
<xsl:template name= "expand" >
<xsl:param name= "id" />
<xsl:param name= "state" />
<div style= "border: solid black 1px; position: relative; width: 11px; height: 11px;" >
<div style= "font-size: 8pt;position: absolute; overflow: hidden; width: 8; height: 9; line-height: 9px; top: -1; left: 0;" >
<xsl:attribute name= "id" > <xsl:value-of select= "$id" /> </xsl:attribute>
<xsl:value-of select= "$state" />
</div>
<div style= "position: absolute; overflow: hidden;width: 7; height: 9; line-height: 9px; left: 1; top: -3;" >
<hr style= "height:1px" />
</div>
</div>
</xsl:template>
</xsl:stylesheet>