сообщение об ошибке URI не идентифицирует внешний класс Java - PullRequest
1 голос
/ 14 июня 2010

Я новичок в 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>

Ответы [ 2 ]

4 голосов
/ 15 июня 2010

Декларация

xmlns:tok="urn:cs-script"

относится к функции, созданной в C # в вашем XSLT. Кислород создается в Java, и поэтому не может загружать / компилировать сгенерированную C # функцию обратного вызова.

Если вы хотите устранить ошибку в Oxygen, то удалите функцию обратного вызова, специфичную для C # (которая будет работать только в среде .Net).

2 голосов
/ 15 июня 2010

Вам не нужна функция расширения для разбиения строки на слова.

Просто используйте шаблон FXSL 1.x str-split-to-words, как описано здесь .

Поскольку FXSL написан на XSLT, он работает с любыми процессорами XSLT 2.0, а для XSLT 1.x - с MSXML или любым процессором, который поддерживает расширение EXSLT node-set() (также поддерживается XslCompiledTransform в .NET).

...