home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2006 June / PCpro_2006_06.ISO / files / mstools / MBaslineSASetup-EN.msi / Data.Cab / report.xsl < prev    next >
Encoding:
Extensible Markup Language  |  2005-06-29  |  23.9 KB  |  583 lines

  1. <?xml version="1.0"?> 
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3.  
  4.     <xsl:variable name="ScoreLookup">
  5.       <c score="0" url="Graphics/dash.gif" alttext="Check Not Performed"/>
  6.       <c score="1" url="Graphics/excl_red.gif" alttext="Unable to scan"/>
  7.       <c score="2" url="Graphics/x_red.gif" alttext="Check failed (critical)"/>
  8.       <c score="3" url="Graphics/x_gold.gif" alttext="Check failed (non-critical)"/>
  9.       <c score="4" url="Graphics/astrx.gif" alttext="Best practice"/>
  10.       <c score="5" url="Graphics/chek_grn.gif" alttext="Check passed"/>
  11.       <c score="6" url="Graphics/dash.gif" alttext="Check not performed"/>
  12.       <c score="7" url="Graphics/info.gif" alttext="Additional information"/>
  13.       <c score="8" url="Graphics/star_blu.gif" alttext="Not approved"/>
  14.     </xsl:variable>
  15.     
  16.     <xsl:variable name="Assessment">
  17.       <c score="1" text="Incomplete Scan" longtext="Could not complete one or more requested checks."/>
  18.       <c score="2" text="Severe Risk" longtext="One or more critical checks failed."/>
  19.       <c score="3" text="Potential Risk" longtext="One or more non-critical checks failed."/>
  20.       <c score="4" text="Security FYIs" longtext=""/>
  21.       <c score="5" text="Strong Security" longtext="The selected checks were passed."/>
  22.       <c score="8" text="Security FYIs" longtext=""/>
  23.     </xsl:variable>
  24.  
  25.     <xsl:variable name="FileName"></xsl:variable>
  26.     <xsl:variable name="ReportAgePH"></xsl:variable>
  27.     <xsl:variable name="CatSyncAgePH"></xsl:variable>
  28.     
  29.     <!-- The outermost tag -->
  30.     <xsl:template match="SecScan">
  31.  
  32.         <!-- Add the report header information in a table -->
  33.         <xsl:param name="assess" select="@Grade"/>    
  34.         <table>
  35.         <tr>
  36.             <td class="reportsubheader" width="200">Computer name:</td>
  37.             <td>
  38.                 <xsl:choose>
  39.                     <xsl:when test="@DisplayName">
  40.                         <xsl:value-of select="@DisplayName"/>
  41.                     </xsl:when>
  42.                     <xsl:otherwise>
  43.                         <xsl:value-of select="@Domain"/>\<xsl:value-of select="@Machine"/>
  44.                     </xsl:otherwise>
  45.                 </xsl:choose>
  46.             </td>
  47.         </tr>
  48.         <tr>
  49.             <td class="reportsubheader" width="200">IP address:</td>
  50.             <td><xsl:value-of select="@IP"/></td>
  51.         </tr>
  52.         <tr>
  53.             <td class="reportsubheader" width="200">Security report name:</td>
  54.             <td><xsl:value-of select="$FileName" /></td>
  55.         </tr>
  56.         <xsl:if test="@SUSServer and @SUSServer != ''">
  57.             <tr>
  58.                 <td class="reportsubheader" width="200">Update Services server:</td>
  59.                 <td><xsl:value-of select="@SUSServer" /></td>
  60.             </tr>
  61.         </xsl:if>
  62.         <tr>
  63.             <td class="reportsubheader" width="200">Scan date:</td>
  64.              <xsl:choose>
  65.               <xsl:when test="@LDate">
  66.                 <td><xsl:value-of select="@LDate"/>
  67.                 <xsl:value-of select="$ReportAgePH"/></td>
  68.               </xsl:when>
  69.               <xsl:otherwise>
  70.                 <td><xsl:value-of select="@Date"/>
  71.                 <xsl:value-of select="$ReportAgePH"/></td>
  72.               </xsl:otherwise>
  73.             </xsl:choose>
  74.         </tr>
  75.         <xsl:if test="@MbsaToolVersion">
  76.               <tr>
  77.                 <td class="reportsubheader" width="200">Scanned with MBSA version:</td>
  78.                 <td><xsl:value-of select="@MbsaToolVersion"/>
  79.                 <xsl:if test="NewerVersions/@MbsaVer"><b>  ** Newer version <xsl:value-of select="NewerVersions/@MbsaVer"/> is available **</b></xsl:if>
  80.                 </td>
  81.             </tr>
  82.         </xsl:if>
  83.         <xsl:if test="not(@MbsaToolVersion)">
  84.               <tr>
  85.                 <td class="reportsubheader" width="200">Scanned with MBSA version: </td>
  86.                 <td>1.0    <xsl:if test="NewerVersions/@MbsaVer"><b>  ** Newer version <xsl:value-of select="NewerVersions/@MbsaVer"/> is available **</b></xsl:if>
  87.                 </td>
  88.             </tr>
  89.         </xsl:if>
  90.         <xsl:if test="@HotfixDataVersion">
  91.               <tr>
  92.                 <td class="reportsubheader" width="200">Catalog synchronization date:</td>
  93.                 <td><xsl:value-of select="@HotfixDataVersion"/>
  94.                 <xsl:if test="NewerVersions/@XmlVer"><b>  ** New security updates are available; rescan to use security update database version <xsl:value-of select="NewerVersions/@XmlVer"/> **</b></xsl:if>
  95.                 <xsl:value-of select="$CatSyncAgePH"/>
  96.                 </td>
  97.             </tr>
  98.         </xsl:if>
  99.         <xsl:if test="@WUSSource and @WUSSource != ''">
  100.               <tr>
  101.                 <td class="reportsubheader" width="200">Security update catalog:</td>
  102.                 <td><xsl:value-of select="@WUSSource"/>
  103.                 </td>
  104.             </tr>
  105.         </xsl:if>
  106.         <xsl:for-each select="//Check[@DataVersionName and @DataVersion]">
  107.               <tr>
  108.                 <td class="reportsubheader" width="200"><xsl:value-of select="@DataVersionName"/></td>
  109.                 <td><xsl:value-of select="@DataVersion"/></td>
  110.             </tr>
  111.         </xsl:for-each>
  112.         <tr>
  113.             <td class="reportsubheader" width="200">Security assessment:</td>
  114.             <td><xsl:value-of select="document('')/*/xsl:variable[@name='Assessment']/c[@score=$assess]/@text"/><xsl:text> </xsl:text>(<xsl:value-of select="document('')/*/xsl:variable[@name='Assessment']/c[@score=$assess]/@longtext"/>)</td>
  115.         </tr>
  116.         
  117.         </table>
  118.         
  119.         <!-- Security Update (hotfix) section -->
  120.         <xsl:choose>
  121.         <xsl:when test="Check[@Type='5']">
  122.             <br />
  123.             <div class="reportheader">Security Update Scan Results</div>
  124.             <br />
  125.             <xsl:choose>
  126.             <xsl:when test="Check[@Type='5'][@Cat='1']">
  127.                 <table width="100%" border="0" cellpadding="4" cellspacing="0">
  128.                     <tr class="ReportListHeader">
  129.                         <td class="ReportListHeader" style="width:40" align="center" valign="middle"><nobr>  Score  </nobr></td>
  130.                         <td class="ReportListHeader" style="width:80" align="left" valign="middle"><nobr>Issue </nobr></td>
  131.                         <td class="ReportListHeader" valign="middle"><nobr>Result </nobr></td>
  132.                     </tr>
  133.                     <xsl:for-each select=".">
  134.                         <xsl:apply-templates select="Check[@Type='5'][@Cat='1']">
  135.                             <xsl:sort order="sortorder" select="sortfield"/>
  136.                             <xsl:sort select="@Rank"/>
  137.                         </xsl:apply-templates>
  138.                     </xsl:for-each>
  139.                 </table>            
  140.             </xsl:when>
  141.             </xsl:choose>
  142.         </xsl:when>
  143.         </xsl:choose>
  144.         
  145.         
  146.         <!-- Windows (OS) section -->
  147.         <xsl:choose>
  148.         <xsl:when test="Check[@Type='1']">
  149.             <br />
  150.             <div class="reportheader">Windows Scan Results</div>
  151.             <xsl:choose>
  152.             <xsl:when test="Check[@Type='1'][@Cat='1']">
  153.                 <br />
  154.                 <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Administrative Vulnerabilities</div>
  155.                 <br />
  156.                 <table width="100%" border="0" cellpadding="4" cellspacing="0">
  157.                     <tr class="ReportListHeader">
  158.                         <td class="ReportListHeader" style="width:40" align="center" valign="middle"><nobr>  Score  </nobr></td>
  159.                         <td class="ReportListHeader" style="width:80" align="left" valign="middle"><nobr>Issue </nobr></td>
  160.                         <td class="ReportListHeader" valign="middle"><nobr>Result </nobr></td>
  161.                     </tr>
  162.                     <xsl:for-each select=".">
  163.                         <xsl:apply-templates select="Check[@Type='1'][@Cat='1']">
  164.                             <xsl:sort order="sortorder" select="sortfield"/>
  165.                             <xsl:sort select="@Rank"/>
  166.                         </xsl:apply-templates>
  167.                     </xsl:for-each>
  168.                 </table>            
  169.             </xsl:when>
  170.             </xsl:choose>
  171.             <xsl:choose>
  172.             <xsl:when test="Check[@Type='1'][@Cat='2']">
  173.                 <br />
  174.                 <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Additional System Information</div>
  175.                 <br />
  176.                 <table width="100%" border="0" cellpadding="4" cellspacing="0">
  177.                     <tr class="ReportListHeader">
  178.                         <td class="ReportListHeader" style="width:40" align="center" valign="middle"><nobr>  Score  </nobr></td>
  179.                         <td class="ReportListHeader" style="width:80" align="left" valign="middle"><nobr>Issue </nobr></td>
  180.                         <td class="ReportListHeader" valign="middle"><nobr>Result </nobr></td>
  181.                     </tr>
  182.                     <xsl:for-each select=".">
  183.                         <xsl:apply-templates select="Check[@Type='1'][@Cat='2']">
  184.                             <xsl:sort select="@Rank"/>
  185.                         </xsl:apply-templates>
  186.                     </xsl:for-each>
  187.                 </table>
  188.             </xsl:when>
  189.             </xsl:choose>
  190.         </xsl:when>
  191.         </xsl:choose>
  192.  
  193.         <!-- IIS section -->
  194.         <xsl:choose>
  195.         <xsl:when test="Check[@Type='3']">    
  196.             <br />
  197.             <div class="reportheader">Internet Information Services (IIS) Scan Results</div>
  198.             <xsl:choose>
  199.             <xsl:when test="Check[@Type='3'][@Cat='1']">
  200.                 <br />
  201.                 <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Administrative Vulnerabilities</div>
  202.                 <br />
  203.                 <table width="100%" border="0" cellpadding="4" cellspacing="0">
  204.                     <tr class="ReportListHeader">
  205.                         <td class="ReportListHeader" style="width:40" align="center" valign="middle"><nobr>  Score  </nobr></td>
  206.                         <td class="ReportListHeader" style="width:80" align="left" valign="middle"><nobr>Issue </nobr></td>
  207.                         <td class="ReportListHeader" valign="middle"><nobr>Result </nobr></td>
  208.                     </tr>
  209.                     <xsl:for-each select=".">
  210.                         <xsl:apply-templates select="Check[@Type='3'][@Cat='1']">
  211.                             <xsl:sort order="sortorder" select="sortfield"/>
  212.                             <xsl:sort select="@Rank"/>
  213.                         </xsl:apply-templates>
  214.                     </xsl:for-each>
  215.                 </table>            
  216.             </xsl:when>
  217.             </xsl:choose>
  218.             <xsl:choose>
  219.             <xsl:when test="Check[@Type='3'][@Cat='2']">
  220.                 <br />
  221.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Additional System Information</div>
  222.                 <br />
  223.                 <table width="100%" border="0" cellpadding="4" cellspacing="0">
  224.                     <tr class="ReportListHeader">
  225.                         <td class="ReportListHeader" style="width:40" align="center" valign="middle"><nobr>  Score  </nobr></td>
  226.                         <td class="ReportListHeader" style="width:80" align="left" valign="middle"><nobr>Issue </nobr></td>
  227.                         <td class="ReportListHeader" valign="middle"><nobr>Result </nobr></td>
  228.                     </tr>
  229.                     <xsl:for-each select=".">
  230.                         <xsl:apply-templates select="Check[@Type='3'][@Cat='2']">
  231.                             <xsl:sort order="sortorder" select="sortfield"/>
  232.                             <xsl:sort select="@Rank"/>
  233.                         </xsl:apply-templates>
  234.                     </xsl:for-each>
  235.                 </table>
  236.             </xsl:when>
  237.             </xsl:choose>
  238.         </xsl:when>
  239.         </xsl:choose>
  240.         <xsl:choose>
  241.  
  242.         <!-- IIS Not Installed section -->
  243.         <xsl:when test="Check[@Type='3'][@Cat='4']">
  244.             <br />
  245.             <table width="100%" border="0" cellpadding="4" cellspacing="0">
  246.                     <tr class="ReportListHeader">
  247.                         <td class="ReportListHeader" style="width:40" align="center" valign="middle"><nobr>  Score  </nobr></td>
  248.                         <td class="ReportListHeader" style="width:80" align="left" valign="middle"><nobr>Issue </nobr></td>
  249.                         <td class="ReportListHeader" valign="middle"><nobr>Result </nobr></td>
  250.                     </tr>
  251.                 <xsl:for-each select=".">
  252.                     <xsl:apply-templates select="Check[@Type='3'][@Cat='4']">
  253.                         <xsl:sort order="sortorder" select="sortfield"/>
  254.                         <xsl:sort select="@Rank"/>
  255.                     </xsl:apply-templates>
  256.                 </xsl:for-each>
  257.             </table>
  258.         </xsl:when>
  259.         </xsl:choose>
  260.             
  261.  
  262.         <!-- One tag per SQL Instance, MBSA V1.1 and later -->
  263.         <xsl:choose>
  264.             <xsl:when test="SQLInstance">
  265.             <br />
  266.             <div class="reportheader">SQL Server Scan Results</div>
  267.                 <xsl:for-each select=".">
  268.                     <xsl:apply-templates select="SQLInstance"/>
  269.                 </xsl:for-each>
  270.             </xsl:when>
  271.         </xsl:choose>
  272.  
  273.  
  274.         <!-- SQL Checks, all instances, MBSA V1.0 only -->
  275.         <xsl:choose>
  276.             <xsl:when test="Check[@Type='2']">    
  277.                 <br />
  278.                 <div class="reportheader">SQL Server Scan Results</div>
  279.                 <xsl:choose>
  280.                     <xsl:when test="Check[@Type='2'][@Cat='1']">
  281.                         <br />
  282.                         <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Administrative Vulnerabilities</div>
  283.                         <br />
  284.                         <table width="100%" border="0" cellpadding="4" cellspacing="0">
  285.                             <tr class="ReportListHeader">
  286.                                 <td class="ReportListHeader" style="width:40" align="center" valign="middle"><nobr>  Score  </nobr></td>
  287.                                 <td class="ReportListHeader" style="width:80" align="left" valign="middle"><nobr>Issue </nobr></td>
  288.                                 <td class="ReportListHeader" valign="middle"><nobr>Result </nobr></td>
  289.                             </tr>
  290.                             <xsl:for-each select=".">
  291.                                 <xsl:apply-templates select="Check[@Type='2'][@Cat='1']">
  292.                                     <xsl:sort order="sortorder" select="sortfield"/>
  293.                                     <xsl:sort select="@Rank"/>
  294.                                 </xsl:apply-templates>
  295.                             </xsl:for-each>
  296.                         </table>            
  297.                     </xsl:when>
  298.                 </xsl:choose>
  299.                 <xsl:choose>
  300.                     <xsl:when test="Check[@Type='2'][@Cat='2']">
  301.                         <br />
  302.                             <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Additional System Information</div>
  303.                         <br />
  304.                         <table width="100%" border="0" cellpadding="4" cellspacing="0">
  305.                             <tr class="ReportListHeader">
  306.                                 <td class="ReportListHeader" style="width:40" align="center" valign="middle"><nobr>  Score  </nobr></td>
  307.                                 <td class="ReportListHeader" style="width:80" align="left" valign="middle"><nobr>Issue </nobr></td>
  308.                                 <td class="ReportListHeader" valign="middle"><nobr>Result </nobr></td>
  309.                             </tr>
  310.                             <xsl:for-each select=".">
  311.                                 <xsl:apply-templates select="Check[@Type='2'][@Cat='2']">
  312.                                     <xsl:sort order="sortorder" select="sortfield"/>
  313.                                     <xsl:sort select="@Rank"/>
  314.                                 </xsl:apply-templates>
  315.                             </xsl:for-each>
  316.                         </table>
  317.                     </xsl:when>
  318.                 </xsl:choose>
  319.             </xsl:when>
  320.         </xsl:choose>
  321.  
  322.  
  323.         <!-- SQL not installed -->
  324.         <xsl:choose>
  325.             <xsl:when test="Check[@Type='2'][@Cat='4']">
  326.                 <br />
  327.                 <table width="100%" border="0" cellpadding="4" cellspacing="0">
  328.                         <tr class="ReportListHeader">
  329.                             <td class="ReportListHeader" style="width:40" align="center" valign="middle"><nobr>  Score  </nobr></td>
  330.                             <td class="ReportListHeader" style="width:80" align="left" valign="middle"><nobr>Issue </nobr></td>
  331.                             <td class="ReportListHeader" valign="middle"><nobr>Result </nobr></td>
  332.                         </tr>
  333.                     <xsl:for-each select=".">
  334.                         <xsl:apply-templates select="Check[@Type='2'][@Cat='4']">
  335.                             <xsl:sort order="sortorder" select="sortfield"/>
  336.                             <xsl:sort select="@Rank"/>
  337.                         </xsl:apply-templates>
  338.                     </xsl:for-each>
  339.                 </table>
  340.             </xsl:when>
  341.         </xsl:choose>
  342.             
  343.         <!-- Desktop Section -->
  344.         <xsl:choose>
  345.         <xsl:when test="Check[@Type='4']">    
  346.             <br />
  347.             <div class="reportheader">Desktop Application Scan Results</div>
  348.             <xsl:choose>
  349.             <xsl:when test="Check[@Type='4'][@Cat='1']">
  350.                 <br />
  351.                 <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Administrative Vulnerabilities</div>
  352.                 <br />
  353.                 <table width="100%" border="0" cellpadding="4" cellspacing="0">
  354.                     <tr class="ReportListHeader">
  355.                         <td class="ReportListHeader" style="width:40" align="center" valign="middle"><nobr>  Score  </nobr></td>
  356.                         <td class="ReportListHeader" style="width:80" align="left" valign="middle"><nobr>Issue </nobr></td>
  357.                         <td class="ReportListHeader" valign="middle"><nobr>Result </nobr></td>
  358.                     </tr>
  359.                     <xsl:for-each select=".">
  360.                         <xsl:apply-templates select="Check[@Type='4'][@Cat='1']">
  361.                             <xsl:sort order="sortorder" select="sortfield"/>
  362.                             <xsl:sort select="@Rank"/>
  363.                         </xsl:apply-templates>
  364.                     </xsl:for-each>
  365.                 </table>            
  366.             </xsl:when>
  367.             </xsl:choose>
  368.             <xsl:choose>
  369.             <xsl:when test="Check[@Type='4'][@Cat='2']">
  370.                 <br />
  371.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Additional System Information</div>
  372.                 <br />
  373.                 <table width="100%" border="0" cellpadding="4" cellspacing="0">
  374.                     <tr class="ReportListHeader">
  375.                         <td class="ReportListHeader" style="width:40" align="center" valign="middle"><nobr>  Score  </nobr></td>
  376.                         <td class="ReportListHeader" style="width:80" align="left" valign="middle"><nobr>Issue </nobr></td>
  377.                         <td class="ReportListHeader" valign="middle"><nobr>Result </nobr></td>
  378.                     </tr>
  379.                     <xsl:for-each select=".">
  380.                         <xsl:apply-templates select="Check[@Type='4'][@Cat='2']">
  381.                             <xsl:sort select="@Rank"/>
  382.                         </xsl:apply-templates>
  383.                     </xsl:for-each>
  384.                 </table>
  385.             </xsl:when>
  386.             </xsl:choose>
  387.         </xsl:when>
  388.         </xsl:choose>
  389.     </xsl:template>
  390.     
  391.  
  392.     <!-- SQL Instance section -->
  393.     <xsl:template match="SQLInstance">
  394.         <br />
  395.         <div class="reportsubheader" style="MARGIN-LEFT: 2px;">Instance <xsl:value-of select="@Name"/> </div>
  396.         <xsl:choose>
  397.             <xsl:when test="Check[@Type='2'][@Cat='1']">
  398.                 <br />
  399.                 <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Administrative Vulnerabilities</div>
  400.                 <br />
  401.                 <table width="100%" border="0" cellpadding="4" cellspacing="0">
  402.                     <tr class="ReportListHeader">
  403.                         <td class="ReportListHeader" style="width:40" align="center" valign="middle"><nobr>  Score  </nobr></td>
  404.                         <td class="ReportListHeader" style="width:80" align="left" valign="middle"><nobr>Issue </nobr></td>
  405.                         <td class="ReportListHeader" valign="middle"><nobr>Result </nobr></td>
  406.                     </tr>
  407.                     <xsl:for-each select=".">
  408.                         <xsl:apply-templates select="Check[@Type='2'][@Cat='1']">
  409.                             <xsl:sort order="sortorder" select="sortfield"/>
  410.                             <xsl:sort select="@Rank"/>
  411.                         </xsl:apply-templates>
  412.                     </xsl:for-each>
  413.                 </table>            
  414.             </xsl:when>
  415.         </xsl:choose>
  416.         <xsl:choose>
  417.             <xsl:when test="Check[@Type='2'][@Cat='2']">
  418.                 <br />
  419.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;">Additional System Information</div>
  420.                 <br />
  421.                 <table width="100%" border="0" cellpadding="4" cellspacing="0">
  422.                     <tr class="ReportListHeader">
  423.                         <td class="ReportListHeader" style="width:40" align="center" valign="middle"><nobr>  Score  </nobr></td>
  424.                         <td class="ReportListHeader" style="width:80" align="left" valign="middle"><nobr>Issue </nobr></td>
  425.                         <td class="ReportListHeader" valign="middle"><nobr>Result </nobr></td>
  426.                     </tr>
  427.                     <xsl:for-each select=".">
  428.                         <xsl:apply-templates select="Check[@Type='2'][@Cat='2']">
  429.                             <xsl:sort order="sortorder" select="sortfield"/>
  430.                             <xsl:sort select="@Rank"/>
  431.                         </xsl:apply-templates>
  432.                     </xsl:for-each>
  433.                 </table>
  434.             </xsl:when>
  435.         </xsl:choose>
  436.     </xsl:template>
  437.  
  438.  
  439.  
  440.     <!-- For an individual Check -->
  441.     <xsl:template match="Check">
  442.         <xsl:param name="score" select="@Grade"/>
  443.     
  444.             <xsl:variable name="DetailURL">
  445.             <xsl:choose>
  446.                 <!-- Handle IE Zones details  -->
  447.                 <xsl:when test="@ID=118">javascript:OpenDetails('<xsl:value-of select="@ID"/>',false,true, '', '')</xsl:when>
  448.                 <!-- Handle hotfix details -->
  449.                 <xsl:when test="@Type=5">
  450.                     <xsl:choose>
  451.                     <xsl:when test="@Instance">javascript:OpenDetails('<xsl:value-of select="@ID"/>',true,false, '<xsl:value-of select="@Instance"/>', '<xsl:value-of select="@GroupID"/>')</xsl:when>
  452.                     <xsl:otherwise>javascript:OpenDetails('<xsl:value-of select="@ID"/>',true,false, '', '<xsl:value-of select="@GroupID"/>')</xsl:otherwise>
  453.                     </xsl:choose>
  454.                 </xsl:when>
  455.                 <!-- Handle SQL Instance details -->
  456.                 <xsl:when test="@Type=2">
  457.                     <xsl:choose>
  458.                     <xsl:when test="../../SQLInstance">javascript:OpenDetails('<xsl:value-of select="@ID"/>', false,false,'<xsl:value-of select="../@Name"/>', '')</xsl:when>
  459.                     <xsl:otherwise>javascript:OpenDetails('<xsl:value-of select="@ID"/>',false,false, '', '')</xsl:otherwise>
  460.                     </xsl:choose>
  461.                 </xsl:when>
  462.                 <!-- Handle all other details -->
  463.                 <xsl:otherwise>javascript:OpenDetails('<xsl:value-of select="@ID"/>',false,false, '', '')</xsl:otherwise>
  464.             </xsl:choose>
  465.             </xsl:variable>        
  466.         
  467.             <xsl:variable name="classname">
  468.             <xsl:choose>
  469.                 <xsl:when test="(position() mod 2) = 1">ReportsRowOverEven</xsl:when>
  470.                 <xsl:otherwise>ReportsRowOverOdd</xsl:otherwise>
  471.             </xsl:choose>
  472.             </xsl:variable>
  473.             <tr class="{$classname}">
  474.                 <td align="center" valign="middle">
  475.                     <xsl:choose>
  476.                       <xsl:when test="@Cat='2' and @Type!='6'">
  477.                         <xsl:choose>
  478.                           <xsl:when test="@ID='121'">
  479.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@url}" />
  480.                            </xsl:when>
  481.                           <xsl:when test="@ID='10121'">
  482.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@url}" />
  483.                            </xsl:when>
  484.                           <xsl:when test="@ID='101'">
  485.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=$score]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=$score]/@url}" />
  486.                            </xsl:when>
  487.                           <xsl:when test="@ID='10101'">
  488.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@url}" />
  489.                            </xsl:when>
  490.                           <xsl:otherwise>
  491.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=4]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=4]/@url}" />
  492.                           </xsl:otherwise>
  493.                         </xsl:choose>
  494.                       </xsl:when>
  495.                       <xsl:when test="(@ID='178' or @ID='10178' or @ID='20178') or 
  496.                               (@ID='179' or @ID='10179' or @ID='20179')">
  497.                         <xsl:choose>
  498.                           <xsl:when test="@Grade='4'">
  499.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@url}" />
  500.                           </xsl:when>
  501.                           <xsl:otherwise>
  502.                             <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=$score]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=$score]/@url}" />    
  503.                           </xsl:otherwise>
  504.                         </xsl:choose>
  505.                       </xsl:when>
  506.                       <xsl:otherwise>
  507.                         <img alt="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=$score]/@alttext}" src="{document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=$score]/@url}" />    
  508.                       </xsl:otherwise>
  509.                     </xsl:choose>    
  510.                 </td>
  511.                 <td style="width:75">
  512.                     <TABLE width="100%">  
  513.                       <TR>
  514.                         <TD align="left"><xsl:value-of select="@Name"/></TD>
  515.                       </TR>
  516.                     </TABLE>
  517.                 </td>
  518.                 <td> 
  519.                     <TABLE width="100%">  
  520.                       <TR>
  521.                         <TD align="left" colspan="3"><xsl:value-of select="Advice"/></TD>
  522.                       </TR>
  523.                       <TR>
  524.                       <TD>
  525.                       <nobr>
  526.     
  527.                         <xsl:choose>
  528.                             <xsl:when test="$score=5 or $score=0 or $score=6 or ($score=1 and @ID < 20000)">
  529.                                 <xsl:choose>
  530.                                   <xsl:when test="@URL1 and @URL1 != '' and @URL1 != ' '">
  531.                                     <A class="sys-link-normal" style="padding: 0 0 0 0" target="_blank" href="{@URL1}">What was scanned</A>                       
  532.                                   </xsl:when>
  533.                                   <xsl:otherwise>
  534.                                                                
  535.                                   </xsl:otherwise>
  536.                                 </xsl:choose>                    
  537.                                     
  538.                                 <xsl:choose>
  539.                                   <xsl:when test="Detail">
  540.                                     <wbr/><A class="sys-link-normal" style="padding: 0 0 0 0" href="{$DetailURL}">Result details</A>    
  541.                                   </xsl:when>
  542.                                 </xsl:choose>
  543.                                  <xsl:if test="$score=1">
  544.                                                                 
  545.                                      <A class="sys-link-normal" style="padding: 0 0 0 0" target="_blank" href="Help/mbsahelp.html#howtocorrect">How to correct this</A>                       
  546.                                  </xsl:if>                                                                                    
  547.                             </xsl:when>
  548.                             <xsl:otherwise>
  549.                                 <xsl:choose>
  550.                                   <xsl:when test="@URL1 and @URL1 != '' and @URL1 != ' '">
  551.                                     <A class="sys-link-normal" style="padding: 0 0 0 0" target="_blank" href="{@URL1}">What was scanned</A>                       
  552.                                   </xsl:when>
  553.                                   <xsl:otherwise>
  554.                                                                
  555.                                   </xsl:otherwise>
  556.                                 </xsl:choose>                    
  557.                                     
  558.                                 <xsl:choose>
  559.                                   <xsl:when test="Detail">
  560.                                     <wbr/><A class="sys-link-normal" style="padding: 0 0 0 0" href="{$DetailURL}">Result details</A>    
  561.                                   </xsl:when>
  562.                                   <xsl:otherwise>
  563.                                                                
  564.                                   </xsl:otherwise>
  565.                                 </xsl:choose>            
  566.                                     
  567.                                 <xsl:choose>
  568.                                   <xsl:when test="@URL2 and @URL2 != '' and @URL2 != ' '">
  569.                                     <wbr/><A class="sys-link-normal" style="padding: 0 0 0 0" target="_blank" href="{@URL2}">How to correct this</A>                       
  570.                                   </xsl:when>
  571.                                 </xsl:choose>
  572.                             </xsl:otherwise>
  573.                         </xsl:choose>
  574.                       </nobr>
  575.                       </TD>
  576.                       </TR>
  577.                     </TABLE>
  578.                 </td>
  579.             </tr>
  580.     </xsl:template>
  581.  
  582. </xsl:stylesheet>
  583.