1

私はXSLを初めて使用するため、XSL内でスクリプトを使用するのは初めてです。

サンプルコード(これもC#を使用)を使用して、自分で使用できるように調整しましたが、機能しません。

編集:このコードはVisual Studioで機能します。エラーはOxygenでのみ生成されます...私はまだOxygenでエラーが発生しないようにしたいので、洞察をいただければ幸いです。

エラーメッセージは次のとおりです。URIurn: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説明するように、FXSL1.xテンプレートを使用するだけです。

FXSLはXSLTで記述されているため、XSLT 2.0プロセッサ、およびXSLT 1.xの場合はMSXMLまたはEXSLT拡張機能( .NETnode-set()でもサポートされている)をサポートするプロセッサで動作します。XslCompiledTransform

于 2010-06-15T05:00:55.333 に答える