2010-06-14 37 views
1

我是XSL新手,因此在XSL中使用腳本是新手。錯誤消息URI不標識外部Java類

我已經採取了示例代碼(也使用C#)並將其改編爲我自己的用途..但它不起作用。

編輯:此代碼在Visual Studio中工作..該錯誤僅在氧氣中生成...我仍然希望在氧氣中沒有錯誤,所以任何見解都被讚賞!

該錯誤信息是:URI金塔:CS-腳本不能識別外部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> 
+0

好問題(+1)。查看我的答案,描述純粹的XSLT解決方案。 – 2010-06-15 05:01:35

回答

4

聲明

xmlns:tok="urn:cs-script" 

引用在XSLT中用C#創建的函數。氧氣是在java中創建的,因此無法加載/編譯C#生成的回調函數。

如果要刪除Oxygen中的錯誤,請刪除特定於C#的回調函數(該函數僅適用於.Net環境)。

+0

@Svenson:嗯..所以我不能使用C#。我必須使用Java?沒有其他腳本可以工作? JavaScript的? PHP的?等等。? – developer 2010-06-14 20:31:38

+0

如果您在.Net中執行XSLT,那麼您可以使用它(並忽略氧氣錯誤)。如果您在其他某個環境中使用xslt,則無法使用它。您將不得不創建純粹的XSLT函數而無需回調到外部運行時。 – 2010-06-14 20:45:49

2

您不需要將字符串拆分爲單詞的擴展功能。

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

由於FXSL寫入XSLT,它適用於任何XSLT 2.0處理器和XSLT 1.x的 - 與MSXML或支持EXSLT node-set()擴展(也由XslCompiledTransform在.NET支持)的任何處理器。

+0

我實際上目前正在xsl中使用遞歸解決方案,但是我需要完成的任務會變得更加複雜,並且添加擴展功能更爲簡單。我還有一些其他的東西需要用C#處理,所以我將不得不切換到Visual Studio來處理這些文件(儘管Oxygen對於xsl ..:S來說更好用),但是感謝您的迴應!總是欣賞它:) – developer 2010-06-15 14:46:00