home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 September / Chip_2004-09_cd1.bin / zkuste / system / download / secanal / MBSASetup-en.msi / Data.Cab / copyreport.xsl < prev    next >
Extensible Markup Language  |  2004-01-16  |  19KB  |  528 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.     </xsl:variable>
  14.     
  15.     <xsl:variable name="Assessment">
  16.       <c score="1" text="Incomplete Scan" longtext="Could not complete one or more requested checks."/>
  17.       <c score="2" text="Severe Risk" longtext="One or more critical checks failed."/>
  18.       <c score="3" text="Potential Risk" longtext="One or more non-critical checks failed."/>
  19.       <c score="4" text="Security FYIs" longtext=""/>
  20.       <c score="5" text="Strong Security" longtext="All checks were passed."/>
  21.     </xsl:variable>
  22.  
  23.     <xsl:variable name="FileName">FileNameHere</xsl:variable>
  24.     
  25.         <xsl:template match="SecScan">
  26.             <xsl:param name="assess" select="@Grade"/>
  27.             <head>
  28.                 <link REL="stylesheet" type="text/css" href="css/scanner.css" />
  29.             </head>
  30.             <table>
  31.             <tr>
  32.                 <td class="reportsubheader" width="140"><b>Computer name:</b></td>
  33.                 <td>
  34.                     <xsl:choose>
  35.                         <xsl:when test="@DisplayName">
  36.                             <xsl:value-of select="@DisplayName"/>
  37.                         </xsl:when>
  38.                         <xsl:otherwise>
  39.                             <xsl:value-of select="@Domain"/>\<xsl:value-of select="@Machine"/>
  40.                         </xsl:otherwise>
  41.                     </xsl:choose>
  42.                 </td>
  43.             </tr>
  44.             <tr>
  45.                 <td class="reportsubheader" width="140"><b>IP address:</b></td>
  46.                 <td><xsl:value-of select="@IP"/></td>
  47.             </tr>
  48.             <tr>
  49.                 <td class="reportsubheader" width="140"><b>Security report name:</b></td>
  50.                 <td><xsl:value-of select="$FileName" /></td>
  51.             </tr>
  52.             <xsl:if test="@SUSServer and @SUSServer != ''">
  53.                 <tr>
  54.                     <td class="reportsubheader" width="140"><b>SUS Server:</b></td>
  55.                     <td><xsl:value-of select="@SUSServer" /></td>
  56.                 </tr>
  57.             </xsl:if>
  58.             <tr>
  59.                 <td class="reportsubheader" width="140"><b>Scan date:</b></td>
  60.                  <xsl:choose>
  61.                   <xsl:when test="@LDate">
  62.                     <td><xsl:value-of select="@LDate"/></td>
  63.                   </xsl:when>
  64.                   <xsl:otherwise>
  65.                     <td><xsl:value-of select="@Date"/></td>
  66.                   </xsl:otherwise>
  67.                 </xsl:choose>        
  68.             </tr>
  69.             <xsl:choose>
  70.             <xsl:when test="@HotfixDataVersion">
  71.                   <tr>
  72.                       <td class="reportsubheader" width="140"><b>Security update database version:</b></td>
  73.                     <td><xsl:value-of select="@HotfixDataVersion"/>
  74.                     </td>
  75.                 </tr>
  76.             </xsl:when>
  77.             </xsl:choose>    
  78.             
  79.             <xsl:for-each select="//Check[@DataVersionName and @DataVersion]">
  80.                   <tr>
  81.                     <td class="reportsubheader" width="140"><b><xsl:value-of select="@DataVersionName"/></b></td>
  82.                     <td><xsl:value-of select="@DataVersion"/></td>
  83.                 </tr>
  84.             </xsl:for-each>
  85.  
  86.             <tr>
  87.                 <td class="reportsubheader" width="140"><b>Security assessment:</b></td>
  88.                 <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>
  89.             </tr>
  90.             
  91.             </table>
  92.             
  93.             <xsl:choose>
  94.             <xsl:when test="Check[@Type='5']">
  95.                 <br />
  96.                 <div class="reportheader"><b>Security Updates</b></div>
  97.                 <xsl:choose>
  98.                 <xsl:when test="Check[@Type='5'][@Cat='1']">
  99.                     <br />
  100.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  101.                         <tr class="ReportListHeader">
  102.                             <td style="width:40" align="center"><nobr>  Score  </nobr></td>
  103.                             <td style="width:80" align="left"><nobr>Issue</nobr></td>
  104.                             <td><nobr>Result</nobr></td>
  105.                         </tr>
  106.                         <xsl:for-each select=".">
  107.                             <xsl:apply-templates select="Check[@Type='5'][@Cat='1']">
  108.                                 <xsl:sort order="sortorder" select="sortfield"/>
  109.                                 <xsl:sort select="@Rank"/>
  110.                             </xsl:apply-templates>
  111.                         </xsl:for-each>
  112.                     </table>
  113.                 </xsl:when>
  114.                 </xsl:choose>
  115.             </xsl:when>
  116.             </xsl:choose>
  117.             
  118.             <xsl:choose>
  119.             <xsl:when test="Check[@Type='1']">
  120.                 <br />
  121.                 <div class="reportheader"><b>Windows Scan Results</b></div>
  122.                 <xsl:choose>
  123.                 <xsl:when test="Check[@Type='1'][@Cat='1']">
  124.                     <br />
  125.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Vulnerabilities</b></div>
  126.                     <br />
  127.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  128.                         <tr class="ReportListHeader">
  129.                             <td style="width:40" align="center"><nobr>  Score  </nobr></td>
  130.                             <td style="width:80" align="left"><nobr>Issue</nobr></td>
  131.                             <td><nobr>Result</nobr></td>
  132.                         </tr>
  133.                         <xsl:for-each select=".">
  134.                             <xsl:apply-templates select="Check[@Type='1'][@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:choose>
  143.                 <xsl:when test="Check[@Type='1'][@Cat='2']">
  144.                     <br />
  145.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Additional System Information</b></div>
  146.                     <br />
  147.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  148.                         <tr class="ReportListHeader">
  149.                             <td style="width:40" align="center"><nobr>  Score  </nobr></td>
  150.                             <td style="width:80" align="left"><nobr>Issue</nobr></td>
  151.                             <td><nobr>Result</nobr></td>
  152.                         </tr>
  153.                         <xsl:for-each select=".">
  154.                             <xsl:apply-templates select="Check[@Type='1'][@Cat='2']">
  155.                                 <xsl:sort order="sortorder" select="sortfield"/>
  156.                                 <xsl:sort select="@Rank"/>
  157.                             </xsl:apply-templates>
  158.                         </xsl:for-each>
  159.                     </table>
  160.                 </xsl:when>
  161.                 </xsl:choose>
  162.             </xsl:when>
  163.             </xsl:choose>
  164.  
  165.             <xsl:choose>
  166.             <xsl:when test="Check[@Type='3']">    
  167.                 <br />
  168.                 <div class="reportheader"><b>Internet Information Services (IIS) Scan Results</b></div>
  169.                 <xsl:choose>
  170.                 <xsl:when test="Check[@Type='3'][@Cat='1']">
  171.                     <br />
  172.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Vulnerabilities</b></div>
  173.                     <br />
  174.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  175.                         <tr class="ReportListHeader">
  176.                             <td style="width:40" align="center"><nobr>  Score  </nobr></td>
  177.                             <td style="width:80" align="left"><nobr>Issue</nobr></td>
  178.                             <td><nobr>Result</nobr></td>
  179.                         </tr>
  180.                         <xsl:for-each select=".">
  181.                             <xsl:apply-templates select="Check[@Type='3'][@Cat='1']">
  182.                                 <xsl:sort order="sortorder" select="sortfield"/>
  183.                                 <xsl:sort select="@Rank"/>
  184.                             </xsl:apply-templates>
  185.                         </xsl:for-each>
  186.                     </table>            
  187.                 </xsl:when>
  188.                 </xsl:choose>
  189.                 <xsl:choose>
  190.                 <xsl:when test="Check[@Type='3'][@Cat='2']">
  191.                     <br />
  192.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Additional System Information</b></div>
  193.                     <br />
  194.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  195.                         <tr class="ReportListHeader">
  196.                             <td style="width:40" align="center"><nobr>  Score  </nobr></td>
  197.                             <td style="width:80" align="left"><nobr>Issue</nobr></td>
  198.                             <td><nobr>Result</nobr></td>
  199.                         </tr>
  200.                         <xsl:for-each select=".">
  201.                             <xsl:apply-templates select="Check[@Type='3'][@Cat='2']">
  202.                                 <xsl:sort order="sortorder" select="sortfield"/>
  203.                                 <xsl:sort select="@Rank"/>
  204.                             </xsl:apply-templates>
  205.                         </xsl:for-each>
  206.                     </table>
  207.                 </xsl:when>
  208.                 </xsl:choose>
  209.                 <xsl:choose>
  210.                 <xsl:when test="Check[@Type='3'][@Cat='4']">
  211.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  212.                         <tr class="ReportListHeader">
  213.                             <td style="width:40" align="center"><nobr>  Score  </nobr></td>
  214.                             <td style="width:80" align="left"><nobr>Issue</nobr></td>
  215.                             <td><nobr>Result</nobr></td>
  216.                         </tr>
  217.                         <xsl:for-each select=".">
  218.                             <xsl:apply-templates select="Check[@Type='3'][@Cat='4']">
  219.                                 <xsl:sort order="sortorder" select="sortfield"/>
  220.                                 <xsl:sort select="@Rank"/>
  221.                             </xsl:apply-templates>
  222.                         </xsl:for-each>
  223.                     </table>
  224.                 </xsl:when>
  225.                 </xsl:choose>
  226.             </xsl:when>
  227.             </xsl:choose>
  228.             
  229.             <!-- One tag per SQL Instance, MBSA V1.1 and later -->
  230.             <xsl:choose>
  231.                 <xsl:when test="SQLInstance">
  232.                     <xsl:for-each select=".">
  233.                         <xsl:apply-templates select="SQLInstance"/>
  234.                     </xsl:for-each>
  235.                 </xsl:when>
  236.             </xsl:choose>
  237.  
  238.             <xsl:choose>
  239.             <xsl:when test="Check[@Type='2']">    
  240.                 <br />
  241.                 <div class="reportheader"><b>SQL Server Scan Results</b></div>
  242.                 <xsl:choose>
  243.                 <xsl:when test="Check[@Type='2'][@Cat='1']">
  244.                     <br />
  245.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Vulnerabilities</b></div>
  246.                     <br />
  247.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  248.                         <tr class="ReportListHeader">
  249.                             <td style="width:40" align="center"><nobr>  Score  </nobr></td>
  250.                             <td style="width:80" align="left"><nobr>Issue</nobr></td>
  251.                             <td><nobr>Result</nobr></td>
  252.                         </tr>
  253.                         <xsl:for-each select=".">
  254.                             <xsl:apply-templates select="Check[@Type='2'][@Cat='1']">
  255.                                 <xsl:sort order="sortorder" select="sortfield"/>
  256.                                 <xsl:sort select="@Rank"/>
  257.                             </xsl:apply-templates>
  258.                         </xsl:for-each>
  259.                     </table>            
  260.                 </xsl:when>
  261.                 </xsl:choose>
  262.                 <xsl:choose>
  263.                 <xsl:when test="Check[@Type='2'][@Cat='2']">
  264.                     <br />
  265.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Additional System Information</b></div>
  266.                     <br />
  267.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  268.                         <tr class="ReportListHeader">
  269.                             <td style="width:40" align="center"><nobr>  Score  </nobr></td>
  270.                             <td style="width:80" align="left"><nobr>Issue</nobr></td>
  271.                             <td><nobr>Result</nobr></td>
  272.                         </tr>
  273.                         <xsl:for-each select=".">
  274.                             <xsl:apply-templates select="Check[@Type='2'][@Cat='2']">
  275.                                 <xsl:sort order="sortorder" select="sortfield"/>
  276.                                 <xsl:sort select="@Rank"/>
  277.                             </xsl:apply-templates>
  278.                         </xsl:for-each>
  279.                     </table>
  280.                 </xsl:when>
  281.                 </xsl:choose>
  282.                 <xsl:choose>
  283.                 <xsl:when test="Check[@Type='2'][@Cat='4']">
  284.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  285.                         <tr class="ReportListHeader">
  286.                             <td style="width:40" align="center"><nobr>  Score  </nobr></td>
  287.                             <td style="width:80" align="left"><nobr>Issue</nobr></td>
  288.                             <td><nobr>Result</nobr></td>
  289.                         </tr>
  290.                         <xsl:for-each select=".">
  291.                             <xsl:apply-templates select="Check[@Type='2'][@Cat='4']">
  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:when>
  300.             </xsl:choose>
  301.             
  302.             <xsl:choose>
  303.             <xsl:when test="Check[@Type='4']">    
  304.                 <br />
  305.                 <div class="reportheader"><b>Desktop Application Scan Results</b></div>
  306.                 <xsl:choose>
  307.                 <xsl:when test="Check[@Type='4'][@Cat='1']">
  308.                     <br />
  309.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Vulnerabilities</b></div>
  310.                     <br />
  311.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  312.                         <tr class="ReportListHeader">
  313.                             <td style="width:40" align="center"><nobr>  Score  </nobr></td>
  314.                             <td style="width:80" align="left"><nobr>Issue</nobr></td>
  315.                             <td><nobr>Result</nobr></td>
  316.                         </tr>
  317.                         <xsl:for-each select=".">
  318.                             <xsl:apply-templates select="Check[@Type='4'][@Cat='1']">
  319.                                 <xsl:sort order="sortorder" select="sortfield"/>
  320.                                 <xsl:sort select="@Rank"/>
  321.                             </xsl:apply-templates>
  322.                         </xsl:for-each>
  323.                     </table>            
  324.                 </xsl:when>
  325.                 </xsl:choose>
  326.                 <xsl:choose>
  327.                 <xsl:when test="Check[@Type='4'][@Cat='2']">
  328.                     <br />
  329.                     <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Additional System Information</b></div>
  330.                     <br />
  331.                     <table width="100%" border="0" cellpadding="0" cellspacing="0">
  332.                         <tr class="ReportListHeader">
  333.                             <td style="width:40" align="center"><nobr>  Score  </nobr></td>
  334.                             <td style="width:80" align="left"><nobr>Issue</nobr></td>
  335.                             <td><nobr>Result</nobr></td>
  336.                         </tr>
  337.                         <xsl:for-each select=".">
  338.                             <xsl:apply-templates select="Check[@Type='4'][@Cat='2']">
  339.                                 <xsl:sort order="sortorder" select="sortfield"/>
  340.                                 <xsl:sort select="@Rank"/>
  341.                             </xsl:apply-templates>
  342.                         </xsl:for-each>
  343.                     </table>
  344.                 </xsl:when>
  345.                 </xsl:choose>
  346.             </xsl:when>
  347.             </xsl:choose>
  348.         <!--EndFragment -->
  349.         </xsl:template>
  350.     
  351.     <xsl:template match="Check">
  352.         <xsl:param name="score" select="@Grade"/>
  353.             <xsl:variable name="bgcolor">
  354.             <xsl:choose>
  355.                 <xsl:when test="(position() mod 2) = 1">#8caae6</xsl:when>
  356.                 <xsl:otherwise>#CECFF6</xsl:otherwise>
  357.             </xsl:choose>
  358.             </xsl:variable>
  359.             <tr bgcolor="{$bgcolor}">
  360.                 <td align="center" valign="top">
  361.                     <xsl:choose>
  362.                       <xsl:when test="@Cat='2'">
  363.                         <xsl:choose>
  364.                           <xsl:when test="@ID='121'">
  365.                             <xsl:value-of select="document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext"/>
  366.                           </xsl:when>
  367.                           <xsl:when test="@ID='10121'">
  368.                             <xsl:value-of select="document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext"/>
  369.                           </xsl:when>
  370.                           <xsl:when test="@ID='101'">
  371.                             <xsl:value-of select="document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext"/>
  372.                            </xsl:when>
  373.                           <xsl:when test="@ID='10101'">
  374.                             <xsl:value-of select="document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=7]/@alttext"/>
  375.                            </xsl:when>
  376.                           <xsl:otherwise>
  377.                            <xsl:value-of select="document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=4]/@alttext"/>
  378.                           </xsl:otherwise>
  379.                         </xsl:choose>
  380.                       </xsl:when>
  381.                       <xsl:otherwise>
  382.                          <xsl:value-of select="document('')/*/xsl:variable[@name='ScoreLookup']/c[@score=$score]/@alttext" />
  383.                       </xsl:otherwise>
  384.                     </xsl:choose>    
  385.                 </td>
  386.                 <td style="WIDTH:75" align="left" valign="top"><xsl:value-of select="@Name"/></td>
  387.                 <td> 
  388.                     <TABLE width="100%">  
  389.                       <TR>
  390.                         <TD align="left" colspan="3"><xsl:value-of select="Advice"/></TD>
  391.                       </TR>
  392.                         <xsl:choose>
  393.                           <xsl:when test="Detail">
  394.                             <TR>
  395.                             <TD>
  396.                             <table width="100%" border="0" cellpadding="0" cellspacing="0" style="padding-left: 10px; padding-right: 10px;">
  397.                                 <tr class="ReportListHeader">
  398.                                     <xsl:for-each select="Detail/Head/Col">
  399.                                         <td Nowrap="true">
  400.                                         <B><xsl:value-of select="."/></B>
  401.                                         </td>
  402.                                     </xsl:for-each>
  403.                                 </tr>
  404.                                 <xsl:for-each select="Detail">
  405.                                     <xsl:apply-templates select="Row">
  406.                                     </xsl:apply-templates>
  407.                                 </xsl:for-each>
  408.                             </table>
  409.                             </TD>
  410.                             </TR>
  411.                           </xsl:when>
  412.                         </xsl:choose>    
  413.                     </TABLE>
  414.                 </td>
  415.             </tr>
  416.     </xsl:template>
  417.     
  418.     <xsl:template match="Row">
  419.         <xsl:param name="score" select="@Grade"/>
  420.             <tr>
  421.                 <xsl:for-each select="Col">
  422.                 <td valign="top">
  423.                  <xsl:choose>
  424.                   <xsl:when test="@URL and @URL != '' and @URL != ' '">
  425.                     <A href="{@URL}"><xsl:value-of select="."/></A>
  426.                   </xsl:when>
  427.                   <xsl:otherwise>
  428.                     <xsl:value-of select="."/>
  429.                   </xsl:otherwise>
  430.                 </xsl:choose>    
  431.  
  432.                 <xsl:if test="@REQUIREDNAME">
  433.                     <br/><font size="-1">This update requires
  434.                     <xsl:value-of select="@REQUIREDNAME"/>
  435.                     to be installed first.</font>
  436.                 </xsl:if>
  437.  
  438.                 </td>
  439.                 </xsl:for-each>
  440.             </tr>
  441.             <xsl:apply-templates select="SETTINGS">
  442.             </xsl:apply-templates>
  443.     </xsl:template>
  444.  
  445.     <xsl:template match="SETTINGS">
  446.         <xsl:param name="numCols" select="count(Head/Col)"/>
  447.             <tr>
  448.                 <td colspan="4">
  449.                     <table width="100%" border="0" cellpadding="0" cellspacing="0" style="padding-left: 10px; padding-right: 10px;">
  450.                         <tr class="ReportListHeader">
  451.                             <xsl:for-each select="Head/Col">
  452.                                 <td Nowrap="true">
  453.                                     <B><xsl:value-of select="."/></B>
  454.                                 </td>
  455.                             </xsl:for-each>
  456.                         </tr>
  457.                         <xsl:apply-templates select="Row">
  458.                         </xsl:apply-templates>
  459.                     </table>
  460.                 </td>
  461.             </tr>
  462.     </xsl:template>
  463.  
  464.     <!-- SQL Instance section -->
  465.     <xsl:template match="SQLInstance">
  466.         <br />
  467.         <div class="reportheader"><b>SQL Server Scan Results: Instance <xsl:value-of select="@Name"/></b></div>
  468.         <xsl:choose>
  469.         <xsl:when test="Check[@Type='2'][@Cat='1']">
  470.             <br />
  471.             <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Vulnerabilities</b></div>
  472.             <br />
  473.             <table width="100%" border="0" cellpadding="0" cellspacing="0">
  474.                 <tr class="ReportListHeader">
  475.                             <td style="width:40" align="center"><nobr>  Score  </nobr></td>
  476.                             <td style="width:80" align="left"><nobr>Issue</nobr></td>
  477.                             <td><nobr>Result</nobr></td>
  478.                 </tr>
  479.                 <xsl:for-each select=".">
  480.                     <xsl:apply-templates select="Check[@Type='2'][@Cat='1']">
  481.                         <xsl:sort order="sortorder" select="sortfield"/>
  482.                         <xsl:sort select="@Rank"/>
  483.                     </xsl:apply-templates>
  484.                 </xsl:for-each>
  485.             </table>            
  486.         </xsl:when>
  487.         </xsl:choose>
  488.         <xsl:choose>
  489.         <xsl:when test="Check[@Type='2'][@Cat='2']">
  490.             <br />
  491.             <div class="reportsubheader" style="MARGIN-LEFT: 5px;"><b>Additional System Information</b></div>
  492.             <br />
  493.             <table width="100%" border="0" cellpadding="0" cellspacing="0">
  494.                 <tr class="ReportListHeader">
  495.                             <td style="width:40" align="center"><nobr>  Score  </nobr></td>
  496.                             <td style="width:80" align="left"><nobr>Issue</nobr></td>
  497.                             <td><nobr>Result</nobr></td>
  498.                 </tr>
  499.                 <xsl:for-each select=".">
  500.                     <xsl:apply-templates select="Check[@Type='2'][@Cat='2']">
  501.                         <xsl:sort order="sortorder" select="sortfield"/>
  502.                         <xsl:sort select="@Rank"/>
  503.                     </xsl:apply-templates>
  504.                 </xsl:for-each>
  505.             </table>
  506.         </xsl:when>
  507.         </xsl:choose>
  508.         <xsl:choose>
  509.         <xsl:when test="Check[@Type='2'][@Cat='4']">
  510.             <table width="100%" border="0" cellpadding="0" cellspacing="0">
  511.                 <tr class="ReportListHeader">
  512.                             <td style="width:40" align="center"><nobr>  Score  </nobr></td>
  513.                             <td style="width:80" align="left"><nobr>Issue</nobr></td>
  514.                             <td><nobr>Result</nobr></td>
  515.                 </tr>
  516.                 <xsl:for-each select=".">
  517.                     <xsl:apply-templates select="Check[@Type='2'][@Cat='4']">
  518.                         <xsl:sort order="sortorder" select="sortfield"/>
  519.                         <xsl:sort select="@Rank"/>
  520.                     </xsl:apply-templates>
  521.                 </xsl:for-each>
  522.             </table>
  523.         </xsl:when>
  524.         </xsl:choose>
  525.     </xsl:template>
  526.  
  527. </xsl:stylesheet>
  528.