From: Owen R. <exo...@us...> - 2004-11-15 05:13:19
|
Update of /cvsroot/netreflector/NetReflector/tools/fxcop/Xml In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2560/tools/fxcop/Xml Added Files: FxCopConsoleOutput.xsl FxCopReport.xsd FxCopReport.xsl FxCopReportExcludes.xsl FxCopReportRules.xsl Log Message: - working on XmlDocumentationGenerator - started Xsd generation for NetReflector - lots of FxCop inspired improvements --- NEW FILE: FxCopReportRules.xsl --- <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict"> <xsl:template match="/FxCopReport"> <html> <head><title>Analysis Report by Rule</title></head> <style> #Title {font-family: Verdana; font-size: 14pt; color: black; font-weight: bold} .RowHeader {font-family: Verdana; font-size: 8pt; color: black} .Severity1 {font-family: Verdana; font-size: 8pt; color: darkred; font-weight: bold; } .Severity2 {font-family: Verdana; font-size: 8pt; color: royalblue; font-weight: bold; } .Severity3 {font-family: Verdana; font-size: 8pt; color: green; font-weight: bold; } .Severity4 {font-family: Verdana; font-size: 8pt; color: darkgray; font-weight: bold; } .PropertyName {font-family: Verdana; font-size: 8pt; color: black; font-weight: bold} .PropertyContent {font-family: Verdana; font-size: 8pt; color: black} .NodeIcon { font-family: WebDings; font-size: 12pt; color: navy; padding-right: 5;} .MessagesIcon { font-family: WebDings; font-size: 12pt; color: red;} .RuleDetails { padding-top: 10;} .SourceCode { background-color:#DDDDFF; } .RuleBlock { background-color:#EEEEFF; } .MessageNumber { font-family: Verdana; font-size: 10pt; color: darkred; } .MessageBlock { font-family: Verdana; font-size: 10pt; color: darkred; } .Resolution {font-family: Verdana; font-size: 8pt; color: black; } .NodeLine { font-family: Verdana; font-size: 9pt;} .Note { font-family: Verdana; font-size: 9pt; color:black; background-color: #DDDDFF; } .NoteUser { font-family: Verdana; font-size: 9pt; font-weight: bold; } .NoteTime { font-family: Verdana; font-size: 8pt; font-style: italic; } .Button { font-family: Verdana; font-size: 9pt; color: blue; background-color: #EEEEEE; } .RuleNode { font-family: Verdana; font-size: 9pt;} TH { text-align: left; font-family: Verdana; font-size: 9pt;} </style> <script> function ViewState(blockId) { var block = document.all.item(blockId); if (block.style.display=='none') { block.style.display='block'; } else { block.style.display='none'; } } function SwitchAll(how) { var len = document.all.length-1; for(i=0;i!=len;i++) { var block = document.all[i]; if (block != null) { if(block.className == 'NodeDiv' || block.className == 'RuleDiv' ) { block.style.display=how; } } } } function ExpandAll() { SwitchAll('block'); } function CollapseAll() { SwitchAll('none'); } </script> <body bgcolor="white" alink="Black" vlink="Black" link="Black"> <!-- Report Title --> <div id="Title"> FxCop <xsl:value-of select="@Version"/> Analysis Report by Rule </div> <br/> <table> <tr> <td class="Button"> <a onClick="ExpandAll();">Expand All</a> </td> <td class="Button"> <a onClick="CollapseAll();">Collapse All</a> </td> </tr> </table> <br/> <xsl:apply-templates select="Rules"/> </body> </html> </xsl:template> <xsl:template match="Message"> <xsl:variable name="rulename" select="Rule/@TypeName"/> <div class="MessageBlock" style="position: relative; padding-left: 22;"> <table width="100%"> <tr> <th> Message </th> </tr> <xsl:apply-templates select="Notes" mode="notes"/> <tr bgcolor="#EEEEEE"> <td class="RowHeader" width="20%">Severity:</td> <td> <xsl:variable name="severity" select="/FxCopReport/Rules/Rule[@TypeName=$rulename]/Severity" /> <xsl:attribute name="class">Severity<xsl:value-of select="$severity" /></xsl:attribute> <xsl:value-of select="$severity" /> </td> </tr> <tr> <td class="RowHeader"> Certainty: </td> <td> <xsl:variable name="certainty" select="/FxCopReport/Rules/Rule[@TypeName=$rulename]/Certainty" /> <xsl:attribute name="class">Severity<xsl:value-of select="$certainty" /></xsl:attribute> <xsl:value-of select="$certainty" /> </td> </tr> <tr bgcolor="#EEEEEE"> <td class="RowHeader"> Resolution: </td> <td class="Resolution"> <xsl:value-of select="Resolution/Text/text()" /> </td> </tr> <xsl:choose> <xsl:when test="SourceCode"> <tr> <td class="RowHeader"> Source: </td> <td class="PropertyContent"> <a> <xsl:attribute name="href"> <xsl:value-of select="SourceCode/@Path"/>/<xsl:value-of select="SourceCode/@File"/> </xsl:attribute> <xsl:value-of select="SourceCode/@Path"/>/<xsl:value-of select="SourceCode/@File"/> </a> (Line <xsl:value-of select="SourceCode/@Line"/>) </td> </tr> </xsl:when> </xsl:choose> </table> </div> </xsl:template> <xsl:template match="Notes" mode="notes"> <xsl:for-each select="Note"> <xsl:variable name="id" select="@ID"/> <xsl:apply-templates select="/FxCopReport/Notes/Note[@ID=$id]" mode="notes"/> </xsl:for-each> </xsl:template> <xsl:template match="Note" mode="notes"> <tr class="Note"> <td colspan="3" class="Note"> <nobr class="NoteUser"><xsl:value-of select="@UserName"/></nobr>   <nobr class="NoteTime">[<xsl:value-of select="@Modified"/>]</nobr>: <xsl:value-of select="."/> </td> </tr> </xsl:template> <xsl:template match="Rule"> <xsl:variable name="nodeId" select="generate-id()"/> <xsl:variable name="rulename" select="@TypeName"/> <div class="RuleNode"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon"></nobr> <xsl:value-of select="Name" /> <nobr class="MessageNumber"> (<xsl:value-of select="count(/FxCopReport/Targets/Target/descendant::Rule[@TypeName=$rulename])+count(/FxCopReport/Namespaces/Namespace/descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> <br/> </div> <div class="RuleDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$nodeId"/> </xsl:attribute> <table width="100%" class="RuleBlock"> <xsl:apply-templates select="." mode="ruledetails" /> </table> <xsl:apply-templates select="/FxCopReport/Namespaces/Namespace[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="/FxCopReport/Targets/Target[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Target"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon">2</nobr><xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Modules/Module[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Resources[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Module"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon">1</nobr> <xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Namespaces/Namespace[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Methods/Method[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Namespace"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr style="color: navy;">{} </nobr> <xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Classes/Class[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="ValueTypes/ValueType[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Interfaces/Interface[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Delegates/Delegate[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Enums/Enum[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Class"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon"><</nobr> <xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Classes/Class[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="ValueTypes/ValueType[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Interfaces/Interface[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Delegates/Delegate[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Enums/Enum[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Constructors/Contructor[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Properties/Property[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Events/Event[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Fields/Field[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Methods/Method[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="ValueType"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon"><</nobr> <xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Classes/Class[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="ValueTypes/ValueType[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Interfaces/Interface[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Delegates/Delegate[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Enums/Enum[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Constructors/Contructor[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Properties/Property[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Events/Event[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Fields/Field[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Methods/Method[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Interface"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon"><</nobr> <xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Properties/Property[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Events/Event[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Methods/Method[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Delegate"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon"><</nobr> <xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Constructors/Contructor[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Methods/Method[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Enum"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon"><</nobr> <xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Fields/Field[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Event"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon">~</nobr> <xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Methods/Method[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Constructor"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon">=</nobr> <xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Parameters/Parameter[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Property"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon">˜</nobr> <xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Parameters/Parameter[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Methods/Method[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Field"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon">ë</nobr> <xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Method"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon">a</nobr> <xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> <xsl:apply-templates select="Parameters/Parameter[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Parameter"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon">ë</nobr> Parameter <xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Resources"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon">Ì</nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Resource[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Resource"> <xsl:param name="rulename"></xsl:param> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$rulename"/> <xsl:value-of select="$nodeId"/>'); </xsl:attribute> <nobr class="NodeIcon">Ì</nobr> <xsl:value-of select="@Name"></xsl:value-of> <nobr class="MessageNumber"> (<xsl:value-of select="count(descendant::Rule[@TypeName=$rulename])"></xsl:value-of>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$rulename"/><xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates select="Messages/Message[descendant::Rule[@TypeName=$rulename]]"> <xsl:with-param name="rulename"><xsl:value-of select="$rulename"/></xsl:with-param> </xsl:apply-templates> </div> </xsl:template> <xsl:template match="Description" mode="ruledetails"> <tr> <td class="PropertyName">Rule Description:</td> <td class="PropertyContent"><xsl:value-of select="text()" /></td> </tr> </xsl:template> <xsl:template match="LongDescription" mode="ruledetails"> <!-- Test, don't display line if no data present --> <xsl:choose> <xsl:when test="text()"> <tr> <td class="PropertyName">Long Description:</td> <td class="PropertyContent"><xsl:value-of select="text()" /></td> </tr> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="File" mode="ruledetails"> <tr> <td class="PropertyName">Rule File:</td> <td class="PropertyContent"><xsl:value-of select="@Name"/> [<xsl:value-of select="@Version"/>]</td> </tr> </xsl:template> <xsl:template match="Rule" mode="ruledetails"> <xsl:apply-templates select="Description" mode="ruledetails" /> <xsl:apply-templates select="LongDescription" mode="ruledetails" /> <xsl:apply-templates select="File" mode="ruledetails" /> </xsl:template> <!-- End Rule Details --> </xsl:stylesheet> --- NEW FILE: FxCopReportExcludes.xsl --- <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict"> <xsl:template match="/FxCopReport"> <html> <head><title>Analysis Report</title></head> <style> #Title {font-family: Verdana; font-size: 14pt; color: black; font-weight: bold} .ColumnHeader {font-family: Verdana; font-size: 8pt; background-color:white; color: black} .CriticalError {font-family: Verdana; font-size: 8pt; color: darkred; font-weight: bold; text-align: center} .Error {font-family: Verdana; font-size: 8pt; color: royalblue; font-weight: bold; text-align: center} .CriticalWarning {font-family: Verdana; font-size: 8pt; color: green; font-weight: bold; text-align: center} .Warning {font-family: Verdana; font-size: 8pt; color: darkgray; font-weight: bold; text-align: center} .Information {font-family: Verdana; font-size: 8pt; color: black; font-weight: bold; text-align: center} .PropertyName {font-family: Verdana; font-size: 8pt; color: black; font-weight: bold} .PropertyContent {font-family: Verdana; font-size: 8pt; color: black} .NodeIcon { font-family: WebDings; font-size: 12pt; color: navy; padding-right: 5;} .MessagesIcon { font-family: WebDings; font-size: 12pt; color: red;} .RuleDetails { padding-top: 10;} .SourceCode { background-color:#DDDDFF; } .RuleBlock { background-color:#EEEEFF; } .MessageNumber { font-family: Verdana; font-size: 10pt; color: darkred; } .MessageBlock { font-family: Verdana; font-size: 10pt; color: darkred; } .Resolution {font-family: Verdana; font-size: 8pt; color: black; } .NodeLine { font-family: Verdana; font-size: 9pt;} .Note { font-family: Verdana; font-size: 9pt; color:black; background-color: #DDDDFF; } .NoteUser { font-family: Verdana; font-size: 9pt; font-weight: bold; } .NoteTime { font-family: Verdana; font-size: 8pt; font-style: italic; } .Button { font-family: Verdana; font-size: 9pt; color: blue; background-color: #EEEEEE; } </style> <script> function ViewState(blockId) { var block = document.all.item(blockId); if (block.style.display=='none') { block.style.display='block'; } else { block.style.display='none'; } } function SwitchAll(how) { var len = document.all.length-1; for(i=0;i!=len;i++) { var block = document.all[i]; if (block != null) { if(block.className == 'NodeDiv' || block.className == 'MessageBlockDiv' || block.className == 'MessageDiv') { block.style.display=how; } } } } function ExpandAll() { SwitchAll('block'); } function CollapseAll() { SwitchAll('none'); } </script> <body bgcolor="white" alink="Black" vlink="Black" link="Black"> <!-- Report Title --> <div id="Title"> FxCop <xsl:value-of select="@Version"/> Analysis Report </div> <br/> <table> <tr> <td class="Button"> <a onClick="ExpandAll();">Expand All</a> </td> <td class="Button"> <a onClick="CollapseAll();">Collapse All</a> </td> </tr> </table> <br/> <xsl:apply-templates select="Namespaces"/> <xsl:choose> <xsl:when test="Namespaces"> <hr/> </xsl:when> </xsl:choose> <xsl:apply-templates select="Targets"/> </body> </html> </xsl:template> <xsl:template match="*"> <xsl:choose> <xsl:when test="@Name or name()='Resources'"> <xsl:variable name="MessageCount" select="count(.//Message[@Status='Excluded'])"/> <xsl:choose> <xsl:when test="$MessageCount > 0"> <xsl:variable name="nodeId" select="generate-id()"/> <div class="NodeLine"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$nodeId"/>'); </xsl:attribute> <!-- Display Icon --> <xsl:choose> <xsl:when test="name()='Method'"> <nobr class="NodeIcon">a</nobr> </xsl:when> <xsl:when test="name()='Constructor'"> <nobr class="NodeIcon">=</nobr> </xsl:when> <xsl:when test="name()='Property'"> <nobr class="NodeIcon">˜</nobr> </xsl:when> <xsl:when test="name()='Event'"> <nobr class="NodeIcon">~</nobr> </xsl:when> <xsl:when test="name()='Field'"> <nobr class="NodeIcon">ë</nobr> </xsl:when> <xsl:when test="name()='Parameter'"> <nobr class="NodeIcon">4</nobr> Parameter </xsl:when> <xsl:when test="name()='Class'"> <nobr class="NodeIcon"><</nobr> </xsl:when> <xsl:when test="name()='Interface'"> <nobr class="NodeIcon"><</nobr> </xsl:when> <xsl:when test="name()='Delegate'"> <nobr class="NodeIcon"><</nobr> </xsl:when> <xsl:when test="name()='Enum'"> <nobr class="NodeIcon"><</nobr> </xsl:when> <xsl:when test="name()='ValueType'"> <nobr class="NodeIcon"><</nobr> </xsl:when> <xsl:when test="name()='Namespace'"> <nobr style="color: navy;">{} </nobr> </xsl:when> <xsl:when test="name()='Target'"> <nobr class="NodeIcon">2</nobr> </xsl:when> <xsl:when test="name()='Module'"> <nobr class="NodeIcon">1</nobr> </xsl:when> <xsl:when test="name()='Resource'"> <nobr class="NodeIcon"></nobr> </xsl:when> <xsl:when test="name()='Resources'"> <nobr class="NodeIcon">Ì</nobr> </xsl:when> <xsl:otherwise> [<xsl:value-of select="name()"/>] </xsl:otherwise> </xsl:choose> <xsl:choose> <xsl:when test="name()='Resources'"> <xsl:value-of select="name()"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="@Name"/> </xsl:otherwise> </xsl:choose> <nobr class="MessageNumber"> (<xsl:value-of select="$MessageCount"/>) </nobr> </div> <div class="NodeDiv" style="display: none; position: relative; padding-left: 11;"> <xsl:attribute name="id"> <xsl:value-of select="$nodeId"/> </xsl:attribute> <xsl:apply-templates /> </div> </xsl:when> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:apply-templates /> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="Messages"> <xsl:variable name="MessageBlockId" select="generate-id()"/> <div class="MessageBlock"> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$MessageBlockId"/>'); </xsl:attribute> <nobr class="MessagesIcon">@</nobr> <xsl:variable name="MessageCount" select="count(Message[@Status='Excluded'])"/> <xsl:value-of select="$MessageCount"/> Message<xsl:choose><xsl:when test="$MessageCount > 1">s</xsl:when></xsl:choose> for <xsl:choose><xsl:when test="name(..)='Parameter'">Parameter </xsl:when></xsl:choose> <xsl:value-of select="../@Name"/> </div> <div class="MessageBlockDiv" style="display: none; position: relative; padding-left: 5;"> <xsl:attribute name="id"> <xsl:value-of select="$MessageBlockId"/> </xsl:attribute> <table width="100%"> <tr> <td class="ColumnHeader">Message Level</td> <td class="ColumnHeader">Certainty</td> <td class="ColumnHeader" width="100%">Resolution</td> </tr> <xsl:apply-templates select="Message[@Status='Excluded']"/> </table> </div> </xsl:template> <xsl:template match="Message"> <!-- Message Row --> <xsl:variable name="messageId" select="generate-id()"/> <xsl:variable name="rulename" select="Rule/@TypeName"/> <xsl:apply-templates select="Issues/Issue" > <xsl:with-param name="messageId"><xsl:value-of select="$messageId"/></xsl:with-param> </xsl:apply-templates> <tr> <td colspan="3"> <div class="MessageDiv" style="display: none"> <xsl:attribute name="id"> <xsl:value-of select="$messageId"/> </xsl:attribute> <!--- Rule Details --> <table width="100%" class="RuleBlock"> <xsl:apply-templates select="Notes" mode="notes"/> <xsl:apply-templates select="SourceCode"/> <xsl:apply-templates select="/FxCopReport/Rules/Rule[@TypeName=$rulename]" mode="ruledetails" /> </table> </div> </td> </tr> </xsl:template> <xsl:template match="Issue"> <xsl:param name="messageId"></xsl:param> <tr> <xsl:attribute name="onClick"> javascript:ViewState('<xsl:value-of select="$messageId"/>'); </xsl:attribute> <xsl:attribute name="bgcolor"> <xsl:choose> <xsl:when test="position() mod 2 = 1">#EEEEEE</xsl:when> <xsl:otherwise>white</xsl:otherwise> </xsl:choose> </xsl:attribute> <td valign="top"> <xsl:attribute name="class"><xsl:value-of select="@Level" /></xsl:attribute> <xsl:value-of select="@Level" /> </td> <td valign="top"> <xsl:attribute name="class"><xsl:value-of select="@Level" /></xsl:attribute> <xsl:value-of select="@Certainty" /> </td> <td class="Resolution" valign="top"> <xsl:value-of select="Resolution/Text/text()" /> </td> </tr> </xsl:template> <xsl:template match="Notes" mode="notes"> <xsl:for-each select="Note"> <xsl:variable name="id" select="@ID"/> <xsl:apply-templates select="/FxCopReport/Notes/Note[@ID=$id]" mode="notes"/> </xsl:for-each> </xsl:template> <xsl:template match="Note" mode="notes"> <tr class="Note"> <td colspan="3" class="Note"> <nobr class="NoteUser"><xsl:value-of select="@UserName"/></nobr>   <nobr class="NoteTime">[<xsl:value-of select="@Modified"/>]</nobr>: <xsl:value-of select="."/> </td> </tr> </xsl:template> <xsl:template match="SourceCode"> <tr class="SourceCode"> <td class="PropertyName">Source:</td> <td class="PropertyContent"> <a> <xsl:attribute name="href"> <xsl:value-of select="@Path"/>/<xsl:value-of select="@File"/> </xsl:attribute> <xsl:value-of select="@Path"/>/<xsl:value-of select="@File"/> </a> (Line <xsl:value-of select="@Line"/>) </td> </tr> </xsl:template> <xsl:template match="Description" mode="ruledetails"> <tr> <td class="PropertyName">Rule Description:</td> <td class="PropertyContent"><xsl:value-of select="text()" /></td> </tr> </xsl:template> <xsl:template match="LongDescription" mode="ruledetails"> <!-- Test, don't display line if no data present --> <xsl:choose> <xsl:when test="text()"> <tr> <td class="PropertyName">Long Description:</td> <td class="PropertyContent"><xsl:value-of select="text()" /></td> </tr> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="File" mode="ruledetails"> <tr> <td class="PropertyName">Rule File:</td> <td class="PropertyContent"><xsl:value-of select="@Name"/> [<xsl:value-of select="@Version"/>]</td> </tr> </xsl:template> <xsl:template match="Rule" mode="ruledetails"> <tr> <td class="PropertyName">Rule:</td> <td class="PropertyContent"><xsl:value-of select="Name" /></td> </tr> <xsl:apply-templates select="Description" mode="ruledetails" /> <xsl:apply-templates select="LongDescription" mode="ruledetails" /> <xsl:apply-templates select="File" mode="ruledetails" /> </xsl:template> <!-- End Rule Details --> </xsl:stylesheet> --- NEW FILE: FxCopReport.xsd --- <?xml version="1.0" encoding="utf-8" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!-- Main report definition --> <xs:element name="FxCopReport"> <xs:complexType> <xs:all> <xs:element ref="Namespaces" minOccurs="0" maxOccurs="1" /> <xs:element ref="Targets" minOccurs="0" maxOccurs="1" /> <xs:element ref="Notes" minOccurs="0" maxOccurs="1" /> <xs:element ref="Rules" minOccurs="0" maxOccurs="1" /> </xs:all> <xs:attribute name="Version" type="xs:double" use="required" /> <xs:attribute name="LastAnalysis" type="xs:string" use="optional" /> </xs:complexType> </xs:element> <!-- Message & Note element type definitions --> <xs:simpleType name="MessageLevel"> <xs:restriction base="xs:string"> <xs:enumeration value="CriticalError" /> <xs:enumeration value="Error" /> <xs:enumeration value="CriticalWarning" /> <xs:enumeration value="Warning" /> <xs:enumeration value="Information" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="Certainty"> <xs:restriction base="xs:integer"> <xs:minInclusive value="0" /> <xs:maxInclusive value="100" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="MessageStatus"> <xs:restriction base="xs:string"> <xs:enumeration value="Active" /> <xs:enumeration value="Excluded" /> <xs:enumeration value="Absent" /> </xs:restriction> </xs:simpleType> <xs:complexType name="NoteIdentifier"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="ID" type="xs:nonNegativeInteger" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="NoteIdentifiers"> <xs:sequence> <xs:element name="Note" type="NoteIdentifier" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:complexType name="Resolution"> <xs:sequence> <xs:any namespace="##other" processContents="skip"/> </xs:sequence> </xs:complexType> <!-- Message & Issue definitions --> <xs:element name="Issue"> <xs:complexType> <xs:all> <xs:element ref="SourceCode" minOccurs="0" maxOccurs="1" /> <xs:element name="Resolution" minOccurs="1" maxOccurs="1"/> </xs:all> <xs:attribute name="Certainty" type="Certainty" use="required" /> <xs:attribute name="Level" type="MessageLevel" use="required" /> </xs:complexType> </xs:element> <xs:element name="Issues"> <xs:complexType> <xs:sequence> <xs:element ref="Issue" minOccurs="1" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Message"> <xs:complexType> <xs:all> <xs:element name="Rule" type="RuleIdentifier" minOccurs="1" maxOccurs="1" /> <xs:element ref="Issues" minOccurs="1" maxOccurs="1" /> <xs:element name="Notes" type="NoteIdentifiers" minOccurs="0" maxOccurs="1" /> </xs:all> <xs:attribute name="Status" type="MessageStatus" use="required" /> <xs:attribute name="Created" type="xs:string" use="required" /> <xs:attribute name="LastSeen" type="xs:string" use="optional" /> </xs:complexType> </xs:element> <xs:element name="Messages"> <xs:complexType> <xs:sequence> <xs:element ref="Message" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="SourceCode"> <xs:complexType> <xs:attribute name="Path" type="xs:string" use="required" /> <xs:attribute name="File" type="xs:string" use="required" /> <xs:attribute name="Line" type="xs:integer" use="required" /> </xs:complexType> </xs:element> <!-- Note definition --> <xs:element name="Note"> <xs:complexType> <xs:simpleContent> <xs:extension base="NoteIdentifier"> <xs:attribute name="Modified" type="xs:string" use="required" /> <xs:attribute name="UserName" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Notes"> <xs:complexType> <xs:sequence> <xs:element ref="Note" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <!-- Rule description element definitions --> <xs:simpleType name="RuleCertainty"> <xs:restriction base="xs:string"> <!-- regular expression allows either an integer --> <!-- or 2 integers separated by a dash --> <xs:pattern value="[0-9]+(-[0-9]+)?" /> </xs:restriction> </xs:simpleType> <xs:complexType name="RuleMessageLevel"> <xs:simpleContent> <xs:extension base="MessageLevel"> <xs:attribute name="Certainty" type="RuleCertainty" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="RuleFile"> <xs:attribute name="Name" type="xs:string" use="required" /> <xs:attribute name="Version" type="xs:string" use="required" /> </xs:complexType> <xs:complexType name="RuleIdentifier"> <xs:attribute name="TypeName" type="xs:string" use="required" /> </xs:complexType> <!-- Rule definition --> <xs:element name="Rule"> <xs:complexType> <xs:complexContent> <xs:extension base="RuleIdentifier"> <xs:sequence> <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1" /> <xs:element name="Description" type="xs:string" minOccurs="1" maxOccurs="1" /> <xs:element name="LongDescription" type="xs:string" minOccurs="1" maxOccurs="1" /> <xs:element name="GroupOwner" type="xs:string" minOccurs="1" maxOccurs="1" /> <xs:element name="DevOwner" type="xs:string" minOccurs="1" maxOccurs="1" /> <xs:element name="Url" type="xs:anyURI" minOccurs="1" maxOccurs="1" /> <xs:element name="Email" type="xs:string" minOccurs="1" maxOccurs="1" /> <xs:element name="MessageLevel" type="RuleMessageLevel" minOccurs="1" maxOccurs="1" /> <xs:element name="File" type="RuleFile" minOccurs="1" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="Rules"> <xs:complexType> <xs:sequence> <xs:element ref="Rule" minOccurs="0" maxOccurs="unbounded"></xs:element> </xs:sequence> </xs:complexType> </xs:element> <!-- Target tree element definitions --> <!-- Singular target definitions --> <xs:complexType name="NamedElement"> <xs:attribute name="Name" type="xs:string" use="required" /> </xs:complexType> <!-- Target members --> <xs:complexType name="Parameter"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:sequence> <xs:element ref="Messages" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="Method"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:sequence> <xs:element ref="Messages" minOccurs="0" maxOccurs="1" /> <xs:element ref="Parameters" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="Field"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:sequence> <xs:element ref="Messages" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="Event"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:sequence> <xs:element ref="Messages" minOccurs="0" maxOccurs="1" /> <xs:element ref="Methods" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="Property"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:sequence> <xs:element ref="Messages" minOccurs="0" maxOccurs="1" /> <xs:element ref="Methods" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="Constructor"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:sequence> <xs:element ref="Messages" minOccurs="0" maxOccurs="1" /> <xs:element ref="Parameters" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <!-- Target types --> <xs:group name="ClassElements"> <xs:sequence> <xs:element ref="Messages" minOccurs="0" maxOccurs="1" /> <xs:element ref="Classes" minOccurs="0" maxOccurs="1" /> <xs:element ref="Enums" minOccurs="0" maxOccurs="1" /> <xs:element ref="Delegates" minOccurs="0" maxOccurs="1" /> <xs:element ref="ValueTypes" minOccurs="0" maxOccurs="1" /> <xs:element ref="Interfaces" minOccurs="0" maxOccurs="1" /> <xs:element ref="Methods" minOccurs="0" maxOccurs="1" /> <xs:element ref="Fields" minOccurs="0" maxOccurs="1" /> <xs:element ref="Constructors" minOccurs="0" maxOccurs="1" /> <xs:element ref="Events" minOccurs="0" maxOccurs="1" /> <xs:element ref="Properties" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:group> <xs:complexType name="Class"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:group ref="ClassElements" /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="ValueType"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:group ref="ClassElements" /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="Enum"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:sequence> <xs:element ref="Messages" minOccurs="0" maxOccurs="1" /> <xs:element ref="Fields" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="Delegate"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:sequence> <xs:element ref="Messages" minOccurs="0" maxOccurs="1" /> <xs:element ref="Constructors" minOccurs="0" maxOccurs="1" /> <xs:element ref="Methods" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="Interface"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:sequence> <xs:element ref="Messages" minOccurs="0" maxOccurs="1" /> <xs:element ref="Methods" minOccurs="0" maxOccurs="1" /> <xs:element ref="Properties" minOccurs="0" maxOccurs="1" /> <xs:element ref="Events" minOccurs="0" maxOccurs="1" /> <xs:element ref="Interfaces" minOccurs="0" maxOccurs="1" /> <xs:element ref="Classes" minOccurs="0" maxOccurs="1" /> <xs:element ref="Fields" minOccurs="0" maxOccurs="1" /> <xs:element ref="Constructors" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <!-- Type containers --> <xs:complexType name="Namespace"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:sequence> <xs:element ref="Messages" minOccurs="0" maxOccurs="1" /> <xs:element ref="Classes" minOccurs="0" maxOccurs="1" /> <xs:element ref="ValueTypes" minOccurs="0" maxOccurs="1" /> <xs:element ref="Enums" minOccurs="0" maxOccurs="1" /> <xs:element ref="Delegates" minOccurs="0" maxOccurs="1" /> <xs:element ref="Interfaces" minOccurs="0" maxOccurs="1" /> <xs:element ref="Methods" minOccurs="0" maxOccurs="1" /> <xs:element ref="Fields" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="Module"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:sequence> <xs:element ref="Messages" minOccurs="0" maxOccurs="1" /> <xs:element ref="Namespaces" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <!-- Resources --> <xs:complexType name="Resource"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:sequence> <xs:element ref="Messages" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <!-- Top-level target definition --> <xs:complexType name="Target"> <xs:complexContent> <xs:extension base="NamedElement"> <xs:sequence> <xs:element ref="Messages" minOccurs="0" maxOccurs="1" /> <xs:element ref="Modules" minOccurs="0" maxOccurs="1" /> <xs:element ref="Resources" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <!-- Plural target groups --> <xs:element name="Parameters"> <xs:complexType> <xs:sequence> <xs:element name="Parameter" type="Parameter" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Methods"> <xs:complexType> <xs:sequence> <xs:element name="Method" type="Method" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Fields"> <xs:complexType> <xs:sequence> <xs:element name="Field" type="Field" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Events"> <xs:complexType> <xs:sequence> <xs:element name="Event" type="Event" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Properties"> <xs:complexType> <xs:sequence> <xs:element name="Property" type="Property" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Constructors"> <xs:complexType> <xs:sequence> <xs:element name="Constructor" type="Constructor" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Classes"> <xs:complexType> <xs:sequence> <xs:element name="Class" type="Class" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="ValueTypes"> <xs:complexType> <xs:sequence> <xs:element name="ValueType" type="ValueType" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Enums"> <xs:complexType> <xs:sequence> <xs:element name="Enum" type="Enum" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Delegates"> <xs:complexType> <xs:sequence> <xs:element name="Delegate" type="Delegate" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Interfaces"> <xs:complexType> <xs:sequence> <xs:elem... [truncated message content] |