<?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>