【问题标题】:error message The URI does not identify an external Java class错误消息 URI 未识别外部 Java 类
【发布时间】:2011-03-03 16:13:10
【问题描述】:

我是 XSL 新手,因此不熟悉在 XSL 中使用脚本。

我已经获取了示例代码(也使用 C#)并对其进行了调整以供我自己使用。但它不起作用。

编辑:此代码在 Visual Studio 中有效。该错误仅在 Oxygen 中生成...我仍然希望它在 Oxygen 中没有错误,因此感谢您的任何见解!

错误信息是:URI urn:cs-scripts 没有识别外部 Java 类

我的相关代码是:

<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"
xmlns:tok="urn:cs-scripts">

...
...
...
</xsl:template>


<xsl:variable name="temp">
    <xsl:value-of select="tok:getList('AAA BBB CCC', ' ')"/>
</xsl:variable>

<msxsl:script language="C#" implements-prefix="tok">
    <![CDATA[
    public string[] getList(string str, char[] delim)
  {
     return str.Split(delim, StringSplitOptions.None);
  }

  public string getString(string[] list, int i)
  {
     return list[i];
  }
  ]]>
</msxsl:script>


</xsl:stylesheet>

【问题讨论】:

  • 好问题 (+1)。请参阅我描述纯 XSLT 解决方案的回答。

标签: c# xslt namespaces fxsl


【解决方案1】:

声明

xmlns:tok="urn:cs-script"

指的是在 XSLT 中用 C# 创建的函数。氧气是在java中创建的,因此无法加载/编译C#生成的回调函数。

如果您想消除 Oxygen 中的错误,请移除 C# 特定的回调函数(仅适用于 .Net 环境)。

【讨论】:

  • @Svenson:嗯..所以我不能使用 C#。我必须使用Java?没有其他脚本可以工作? javascript? php?等等?
  • 如果您在 .Net 中执行 XSLT,那么您可以使用它(并且忽略 Oxygen 错误)。如果您在其他环境中使用 xslt,则无法使用它。您必须创建纯 XSLT 函数,而无需回调外部运行时。
【解决方案2】:

您不需要扩展函数来将字符串拆分为单词。

只需使用 FXSL 1.x 模板 str-split-to-words,如 here 所述。

因为 FXSL 是用 XSLT 编写的,所以它可以与任何 XSLT 2.0 处理器和 XSLT 1.x 一起使用——与 MSXML 或任何支持 EXSLT node-set() 扩展的处理器(也受 .NET 中的 XslCompiledTransform 支持)一起使用。

【讨论】:

  • 我实际上目前正在使用 xsl 中的递归解决方案,但是我需要完成的工作会变得更加复杂,并且添加扩展功能更加简洁。我还有其他一些我想用 C# 做的事情,所以我将不得不切换到 Visual Studio 来处理这些文件(即使 Oxygen 更适合用于 xsl .. :S )但是感谢您的回复!永远感激它:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-24
  • 1970-01-01
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多