2010-06-14 8 views
1

XSL을 처음 사용하므로 XSL에서 스크립트를 처음 사용합니다.오류 메시지 URI가 외부 Java 클래스를 식별하지 않습니다.

나는 (또한 C#을 사용하는) 예제 코드를 사용하고 그것을 내 자신의 용도로 채택했다. 그러나 작동하지 않는다.

EDIT :이 코드는 Visual Studio에서 작동합니다. 오류는 Oxygen에서만 생성됩니다 ... 나는 여전히 Oxygen에서 오류가 발생하기를 원하므로 모든 통찰력을 높이 평가합니다!

오류 메시지는 다음과 같습니다 URI에 urn : CS-스크립트는 외부 자바 클래스를 식별하지 않습니다

내가 가진 관련 코드는 다음과 같습니다

<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 솔루션을 설명합니다. –

답변

4

선언

xmlns:tok="urn:cs-script" 

은 XSLT에서 C#으로 작성된 함수를 나타냅니다. 산소는 자바에서 만들어 지므로 C#에서 생성 된 콜백 함수를로드/컴파일 할 수 없습니다.

Oxygen에서 오류를 제거하려면 .NET 환경에서만 작동하는 C# 관련 콜백 함수를 제거하십시오.

+0

@Svenson : 음 .. C#을 사용할 수 없습니다. Java를 사용해야합니까? 다른 스크립트는 작동하지 않습니까? 자바 스크립트? PHP? 기타.? – developer

+0

.Net에서 XSLT를 실행하면이 기능을 사용할 수 있으며 Oxygen 오류는 무시됩니다. 다른 환경에서 xslt를 사용하면 사용할 수 없습니다. 외부 런타임에 대한 콜백없이 순수 XSLT 함수를 만들어야합니다. –

2

문자열을 단어로 분할하는 확장 기능이 필요하지 않습니다.

here과 같이 FXSL 1.x 템플릿 str-split-to-words 만 사용하면됩니다.

FXSL은 XSLT로 작성 되었기 때문에 MSXML 또는 EXSLT node-set() 확장을 지원하는 모든 프로세서 (.NET에서 XslCompiledTransform도 지원)와 함께 모든 XSLT 2.0 프로세서 및 XSLT 1.x에서 작동합니다.

+0

실제로 xsl에서 재귀 적 솔루션을 사용하고 있습니다.하지만 더 복잡한 작업을 수행하려면 확장 기능을 추가하는 것이 더 낫습니다. 나는 C#으로하고 싶을 다른 것들을 가지고있다. 그래서 나는이 파일들을 위해 Visual Studio로 전환해야 할 것이다. (비록 Oxygen이 xsl .. : S를 사용하는 것이 훨씬 더 좋긴하지만.) 그러나 당신의 응답에 감사드립니다! 항상 감사드립니다 :) – developer