Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt 在xsl中使用urn:helper_Xslt - Fatal编程技术网

Xslt 在xsl中使用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

我是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/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那么您没有在本地系统上编译和集成包含扩展函数实现的文件。另一方面,此文件包含在生成服务器上执行的生成中。请提供完整的样式表。