XSLT中的C#脚本:“msxsl:script不能为空”错误

时间:2009-03-27 16:42:56

标签: c# xslt

我有一个带有C#脚本的XSLT:

<msxsl:script language="C#" implements-prefix="user">
  <msxsl:using namespace="System.Xml"/>
  <msxsl:using namespace="System.Xml.XPath"/>
  <![CDATA[
    public string GetMenuPath(XPathNodeIterator node)
    {       
      XPathNavigator dataSourceNode = node.Current;
      return dataSourceNode.Name;
    }
  ]]>
</msxsl:script>

在XSLT的某个地方,这个函数被称为:

<xsl:value-of select="user:GetMenuPath(current())"/>

但是当我尝试在XML输入上运行XSLT转换时(输入无关紧要),它会立即停止并显示错误“msxsl:script not empty”。

我完全不知道为什么......我在.NET Framework中使用nxslt。

谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

感谢您的回答,我现在发现了问题的根源。这是因为我使用“style”标签而不是“nxslt”来调用XSLT转换。只要没有扩展脚本,“style”就可以工作。

<nxslt style="transformation.xsl" in="input.xml" out="output.xls" verbose="true">

答案 1 :(得分:0)

它是否为您提供转换停止的行?它是在脚本标签中调用的位置吗?

答案 2 :(得分:0)

您是否尝试将扩展方法放入单独的程序集并以此方式引用它?

马克