Xslt 在xsl中使用urn:helper
我是xslt新手。我尝试在样式表标记中使用urn:helper。但它会抛出以下错误。Xslt 在xsl中使用urn:helper,xslt,Xslt,我是xslt新手。我尝试在样式表标记中使用urn:helper。但它会抛出以下错误。 找不到实现前缀“urn:Helper”的脚本或外部对象 下面是我的代码中使用的代码片段 xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:myObj="urn:Helper" xmlns:t="http://microsoft.com/schemas/VisualStudio/TeamTest
找不到实现前缀“urn:Helper”的脚本或外部对象 下面是我的代码中使用的代码片段
xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:myObj="urn:Helper"
xmlns:t="http://microsoft.com/schemas/VisualStudio/TeamTest/2006"
我错过什么了吗
谢谢
编辑:完成样式表
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:myObj="urn:Helper"
xmlns:t="http://microsoft.com/schemas/VisualStudio/TeamTest/2006">
<xsl:param name="today"></xsl:param>
<xsl:param name="results"></xsl:param>
<xsl:param name="pass" select="'Passed'"/>
<xsl:param name="fail" select="'Failed'"/>
<xsl:key name="class-key" match="@className" use="."/>
<xsl:variable name="unique-classes" select="//t:TestMethod/@className[generate-id(.) =generate-id(key('class-key',.))]" />
<xsl:template match="/">
<html>
<body style="font-family:Verdana; font-size:10pt">
<h1>Test Results Summary</h1>
<table style="font-family:Verdana; font-size:10pt">
<tr>
<td>
<b>Run Date/Time</b>
</td>
<td>
</td>
</tr>
<tr>
<td>
Start Time:
</td>
<td>
<xsl:value-of select="myObj:DateTimeToString(//t:TestRun/t:Times/@start)"/>
</td>
</tr>
<tr>
<td>
End Time:
</td>
<td>
<xsl:value-of select="myObj:DateTimeToString(//t:TestRun/t:Times/@finish)"/>
</td>
</tr>
<tr>
<td>
Duration:
</td>
<td>
<xsl:value-of select="myObj:TimeSpan(//t:TestRun/t:Times/@start,//t:TestRun/t:Times/@finish)"/>
</td>
</tr>
<tr>
<td>
<b>Results File</b>
</td>
<td>
<xsl:value-of select="$results"/>
</td>
</tr>
</table>
<a href="coverage.htm">Coverage Summary</a>
<xsl:call-template name="summary" />
<!--<xsl:call-template name="details" />-->
<xsl:call-template name="details2" />
</body>
</html>
</xsl:template>
<xsl:template name="summary">
<h3>Test Summary</h3>
<table style="width:640;border:1px solid black;font-family:Verdana; font-size:10pt">
<tr>
<td style="font-weight:bold">Total</td>
<td style="font-weight:bold">Failed</td>
<td style="font-weight:bold">Passed</td>
<td style="font-weight:bold">Inconclusive</td>
</tr>
<tr>
<td >
<xsl:value-of select="/t:TestRun/t:ResultSummary/t:Counters/@total"/>
</td>
<td style="background-color:pink;">
<xsl:value-of select="/t:TestRun/t:ResultSummary/t:Counters/@failed"/>
</td>
<td style="background-color:lightgreen;">
<xsl:value-of select="/t:TestRun/t:ResultSummary/t:Counters/@passed"/>
</td>
<td style="background-color:yellow;">
<xsl:value-of select="/t:TestRun/t:ResultSummary/t:Counters/@inconclusive"/>
</td>
</tr>
</table>
</xsl:template>
<xsl:template name="details">
<h3>Unit Test Results</h3>
<table style="width:640;border:1px solid black;font-family:Verdana; font-size:10pt;">
<tr>
<td style="font-weight:bold">Test Name</td>
<td style="font-weight:bold">Result</td>
<td style="font-weight:bold">Duration</td>
</tr>
<xsl:for-each select="/t:TestRun/t:Results/t:UnitTestResult">
<xsl:sort select="@testName"/>
<tr>
<xsl:attribute name="style">
<xsl:choose>
<xsl:when test="@outcome='Failed'">background-color:pink;</xsl:when>
<xsl:when test="@outcome='Passed'">background-color:lightgreen;</xsl:when>
<xsl:otherwise>background-color:yellow;</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<td>
<xsl:value-of select="@testName"/>
</td>
<td>
<xsl:choose>
<xsl:when test="@outcome='Failed'">FAILED</xsl:when>
<xsl:when test="@outcome='Passed'">Passed</xsl:when>
<xsl:otherwise>Inconclusive</xsl:otherwise>
</xsl:choose>
</td>
<td>
<xsl:value-of select="@duration"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
<xsl:template name="details2">
<h3>Unit Test Results</h3>
<table border="0" style="width:640;border:1px solid black;font-family:Verdana; font-size:10pt;">
<xsl:for-each select="$unique-classes">
<xsl:sort />
<xsl:variable name="curClass" select="."/>
<xsl:variable name="return" select="myObj:GetClassInformation($curClass)"/>
<!--<xsl:for-each select="//TestRun/tests/value/testMethod[className=$curClass]">-->
<tr>
<td valign="bottom" style="background-color:beige;font-weight:bold;" colspan="3">
<font>
<xsl:value-of select="concat('',$return/className)"/>
</font>
</td>
</tr>
<tr>
<td style="font-weight:bold">Test Name</td>
<td style="font-weight:bold">Result</td>
<td style="font-weight:bold">Duration</td>
</tr>
<xsl:for-each select="//t:UnitTest/t:TestMethod[@className=$curClass]">
<xsl:sort select="@name"/>
<xsl:variable name="testid" select="../@id"/>
<xsl:for-each select="//t:UnitTestResult[@testId=$testid]">
<xsl:call-template name="classRunsDetail">
<xsl:with-param name="testid" select="."/>
</xsl:call-template>
</xsl:for-each>
</xsl:for-each>
<tr>
<td style="border-bottom:0px solid black;height:1px;background-color:black" colspan="3"></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
<xsl:template name="classRunsDetail">
<xsl:param name="testid"/>
<tr>
<xsl:attribute name="style">
<xsl:choose>
<xsl:when test="@outcome = $fail">background-color:pink;</xsl:when>
<xsl:when test="@outcome = $pass">background-color:lightgreen;</xsl:when>
<xsl:otherwise>background-color:yellow;</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<td>
<xsl:value-of select="@testName"/>
</td>
<td>
<xsl:choose>
<xsl:when test="@outcome = $fail">FAILED</xsl:when>
<xsl:when test="@outcome = $pass">Passed</xsl:when>
<xsl:otherwise>Inconclusive</xsl:otherwise>
</xsl:choose>
</td>
<td>
<xsl:value-of select="@duration"/>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
测试结果摘要
运行日期/时间
开始时间:
结束时间:
持续时间:
结果文件
测试摘要
全部的
失败
通过
无定论的
单元测试结果
测试名称
结果
期间
背景颜色:粉红色;
背景颜色:浅绿色;
背景颜色:黄色;
失败
通过
无定论的
单元测试结果
测试名称
结果
期间
背景颜色:粉红色;
背景颜色:浅绿色;
背景颜色:黄色;
失败
通过
无定论的
我看到你从帖子里抓到了那个小助手对象。这似乎是正确的,但请确保您使用的是C代码来实际执行转换。您的xsl:stylesheet
元素没有问题
问题在于:
<xsl:value-of select="myObj:DateTimeToString(//t:TestRun/t:Times/@start)"/>
从
如果在FunctionCall中输入FunctionName
表达式不是NCName(即如果
它包含一个冒号),则为
视为对分机的调用
功能。函数名已展开
使用命名空间创建一个名称
评价报告的声明
上下文
如果XSLT处理器没有
延期的实施
特定名称的功能
可用,则功能可用
函数必须为此返回false
名称如果这样的扩展函数
在表达式和
实际上调用了扩展函数,
XSLT处理器必须向
错误
答案是:您缺少扩展函数实现
因此,您必须提供处理器的详细信息,并重新询问处理器与扩展函数实现的链接方式。实际上,我正在研究一个已经存在的xsl。在生成服务器上运行夜间生成时,此文件不会引发错误。。但是当我在本地系统上运行它时,它会抛出错误。@Sidd那么您没有在本地系统上编译和集成包含扩展函数实现的文件。另一方面,此文件包含在生成服务器上执行的生成中。请提供完整的样式表。