2017-10-19 4 views
0

MSXSL 6.0 프로세서를 사용하여 XML 변환을 실행하려고 시도하고 있으며 XSLT 파일의 맨 위에 C# 메서드가 있습니다. 처음MSXSL 6.0의 XSLT에서 C# 사용

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts"> 
    <msxsl:script language="C#" implements-prefix="user"> 
     <msxsl:using namespace="System.DateTime"/> 
     <msxsl:using namespace="System.TimeZone"/> 
     <![CDATA[ 
      public string GetLocalTime(string returnPart, string utcTime){ 
       string[] timeList = utcTime.Split(':'); 
       string endString = string.Join(":", timeList.Take(3)); 
       DateTime result = TimeZone.CurrentTimeZone.ToLocalTime(DateTime.Parse(endString)); 
       if(returnPart == "Date") 
       { 
        return result.ToString("MM/dd/yyyy"); 
       } 
       else if(returnPart == "Time") 
       { 
        return result.ToString("HH:mm:ss"); 
       } 
       else 
       { 
        return result.ToString(); 
       } 
      }   
     ]]> 
    </msxsl:script> 

나는 단지 msxsl 후 라인했다 :이 같은 스크립트 태그 : 실행하려고하면

<msxsl:assembly name="System.DateTime" /> 

가 여기에 오류가 발생했습니다 변환을 여기에 내가 사용하고 샘플 XSLT이다 :

External XSLT processing started... 

Error occurred while compiling blah blah blah 

    Code: 0x80004005 
    Keyword msxsl:script may not contain msxsl:assembly. 
    ...done 

약간의 연구를했는데 시스템 어셈블리가 기본적으로 포함되어 있으므로 조립 라인을 제거하고 다시 실행하려고했습니다. 이번에 내가 가지고있는 시간 :

External XSLT processing started... 

Error occurred while compiling blah blah blah 

Code: 0x80004005 
Keyword msxsl:script may not contain msxsl:using. 
...done 

나는이 특별한 오류를 찾으려고했지만 매우 유용한 것을 찾지 못했다. 어떤 도움을 주시면 감사하겠습니다.

감사

+1

변환을 실행하려면 C# 프로그램에서 ActiveX MSXML 6.0을 호출해야합니다. 그렇다면 XmlDocument 또는 XDocument를 사용하여 C#에서 직접 XSL을 수행하고자 할 수 있습니다. –

+0

아니요 MSXSL6.0 프로세서를 사용하는 다른 소프트웨어에서 XSLT 변환을 완료하고이를 활용하려고합니다. – user1971240

답변

1

당신은 당신이 msxsl 프로세서를 사용하는 경우 XSLT에 포함 된 C# 코드를 실행할 수 없습니다. msxsl은 CLR (관리되는 런타임)을 부트 스트랩하지 않는 기본 Xml/Xslt 프로세서를 사용하고 있습니다. 기본 Xml 스택을 사용할 때는 msxsl:script에서 vbscript/jscript를 사용할 수 있지만 C#/VB.NET은 관리되는 Xslt 프로세서 (예 : XsltCompiledTransform)에서만 사용할 수 있습니다.

+0

Gotcha, 이렇게 말하면 자바 스크립트로 변환하면 실행이 가능합니까? – user1971240

+0

수정 - 여기에서 예제를 찾을 수 있습니다. https://msdn.microsoft.com/en-us/library/ms256042(v=vs.110).aspx – Pawel