1

我是 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>
4

2 回答 2

4

宣言

xmlns:tok="urn:cs-script"

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

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

于 2010-06-14T20:27:28.230 回答
2

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

只需使用此处str-split-to-words所述的 FXSL 1.x 模板。

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

于 2010-06-15T05:00:55.333 回答