У меня нет опыта работы с XSLT. Я пробовал следовать нескольким онлайн-учебникам, в том числе и на W3C, но без успеха. Я пытаюсь создать HTML-страницу из XML, созданного инструментом командной строки Visual Studio Code Metrics. XML выглядит следующим образом:Помощь с XSLT?
<?xml version="1.0" encoding="utf-8"?>
<CodeMetricsReport Version="10.0">
<Targets>
<Target Name="C:\Users\rs02130\Documents\Visual Studio 2010\Projects\TestVS10XML\TestVS10XML\Bin\Debug\TestVS10XML.dll">
<Modules>
<Module Name="TestVS10XML.dll" AssemblyVersion="1.0.0.0" FileVersion="1.0.0.0">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="97" />
<Metric Name="CyclomaticComplexity" Value="10" />
<Metric Name="ClassCoupling" Value="8" />
<Metric Name="DepthOfInheritance" Value="5" />
<Metric Name="LinesOfCode" Value="4" />
</Metrics>
<Namespaces>
<Namespace Name="TestVS10XML">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="97" />
<Metric Name="CyclomaticComplexity" Value="10" />
<Metric Name="ClassCoupling" Value="8" />
<Metric Name="DepthOfInheritance" Value="5" />
<Metric Name="LinesOfCode" Value="4" />
</Metrics>
<Types>
<Type Name="_Default">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="91" />
<Metric Name="CyclomaticComplexity" Value="2" />
<Metric Name="ClassCoupling" Value="5" />
<Metric Name="DepthOfInheritance" Value="4" />
<Metric Name="LinesOfCode" Value="2" />
</Metrics>
<Members>
<Member Name="Page_Load(object, EventArgs) : void" File="C:\Users\rs02130\Documents\Visual Studio 2010\Projects\TestVS10XML\TestVS10XML\Default.aspx.cs" Line="14">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="90" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="4" />
<Metric Name="LinesOfCode" Value="1" />
</Metrics>
</Member>
<Member Name="_Default()">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="LinesOfCode" Value="1" />
</Metrics>
</Member>
</Members>
</Type>
<Type Name="SiteMaster">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="2" />
<Metric Name="ClassCoupling" Value="3" />
<Metric Name="DepthOfInheritance" Value="5" />
<Metric Name="LinesOfCode" Value="1" />
</Metrics>
<Members>
<Member Name="Page_Load(object, EventArgs) : void" File="C:\Users\rs02130\Documents\Visual Studio 2010\Projects\TestVS10XML\TestVS10XML\Site.Master.cs" Line="13">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="LinesOfCode" Value="0" />
</Metrics>
</Member>
<Member Name="SiteMaster()">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="LinesOfCode" Value="1" />
</Metrics>
</Member>
</Members>
</Type>
<Type Name="Global">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="6" />
<Metric Name="ClassCoupling" Value="2" />
<Metric Name="DepthOfInheritance" Value="2" />
<Metric Name="LinesOfCode" Value="1" />
</Metrics>
<Members>
<Member Name="Application_Start(object, EventArgs) : void" File="C:\Users\rs02130\Documents\Visual Studio 2010\Projects\TestVS10XML\TestVS10XML\Global.asax.cs" Line="14">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="LinesOfCode" Value="0" />
</Metrics>
</Member>
<Member Name="Application_End(object, EventArgs) : void" File="C:\Users\rs02130\Documents\Visual Studio 2010\Projects\TestVS10XML\TestVS10XML\Global.asax.cs" Line="20">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="LinesOfCode" Value="0" />
</Metrics>
</Member>
<Member Name="Application_Error(object, EventArgs) : void" File="C:\Users\rs02130\Documents\Visual Studio 2010\Projects\TestVS10XML\TestVS10XML\Global.asax.cs" Line="26">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="LinesOfCode" Value="0" />
</Metrics>
</Member>
<Member Name="Session_Start(object, EventArgs) : void" File="C:\Users\rs02130\Documents\Visual Studio 2010\Projects\TestVS10XML\TestVS10XML\Global.asax.cs" Line="32">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="LinesOfCode" Value="0" />
</Metrics>
</Member>
<Member Name="Session_End(object, EventArgs) : void" File="C:\Users\rs02130\Documents\Visual Studio 2010\Projects\TestVS10XML\TestVS10XML\Global.asax.cs" Line="38">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="LinesOfCode" Value="0" />
</Metrics>
</Member>
<Member Name="Global()">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="LinesOfCode" Value="1" />
</Metrics>
</Member>
</Members>
</Type>
</Types>
</Namespace>
</Namespaces>
</Module>
</Modules>
</Target>
</Targets>
</CodeMetricsReport>
Я только хочу, чтобы отчет включать показатели верхнего уровня:
<Module Name="TestVS10XML.dll" AssemblyVersion="1.0.0.0" FileVersion="1.0.0.0">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="97" />
<Metric Name="CyclomaticComplexity" Value="10" />
<Metric Name="ClassCoupling" Value="8" />
<Metric Name="DepthOfInheritance" Value="5" />
<Metric Name="LinesOfCode" Value="4" />
</Metrics>
Не вся информация о пространстве имен под ним. Я придумал этот XSLT (не включая имя модуля, которое мне тоже очень понравилось), но когда я его запускаю, я получаю заголовки столбцов, никаких данных в таблице. Любая помощь очень ценится ...
XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<table width="100%" align="center" cellpadding="0" cellspacing="0" border="1"
style="font-family:verdana;font-size:10pt;border:1">
<tr>
<td width="20%" align="left" >
Maintainability Index
</td>
<td width="20%" align="left">
Cyclomatic Complexity
</td>
<td width="20%" align="left">
Class Coupling
</td>
<td width="20%" align="left">
Depth Of Inheritance
</td>
<td width="20%" align="left">
Lines Of Code
</td>
</tr>
</table>
<xsl:for-each select="Targets/Modules/Metrics">
<table width="100%" align="center" cellpadding="0" cellspacing="0" border="1"
style="font-family:verdana;font-size:10pt;border:1">
<tr >
<td width="20%" align="left" >
<xsl:value-of select="MaintainabilityIndex"/>
</td>
<td width="20%" align="left" >
<xsl:value-of select="CyclomaticComplexity"/>
</td>
<td width="20%" align="left" >
<xsl:value-of select="ClassCoupling"/>
</td>
<td width="20%" align="left" >
<xsl:value-of select="DepthOfInheritance"/>
</td>
<td width="20%" align="left" >
<xsl:value-of select="LinesOfCode"/>
</td>
</tr>
</table>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Я не верю, что есть онлайн учебник по W3C. Если вы имеете в виду w3schools, помните, что это не связано с W3C. Вообще, я думаю, что попытка научиться XSLT из такого учебника не является хорошим подходом. Получите себе хорошую книгу, которая правильно объясняет концепции. –