2012-10-28 2 views
0

ASP Classic 응용 프로그램을 .Net 4.0 (4.5도 사용 가능)으로 마이그레이션하려고합니다. 응용 프로그램은 Javascript 확장 기능을 사용하여 XSL 변환을 수행합니다. ASP 클래식 응용 프로그램은 현재 MSXML 4.0을 사용하여 변환을 수행합니다.ms : XSLT의 스크립트 태그

XslCompiledTransform 클래스를 사용하여 자바 스크립트 확장을 포함하는 변환을 처리하려고 할 때 .NET에서 문제가 발생합니다. 간단한 예제에서 작동하지만 상당히 광범위한 javascript 라이브러리가 있으며 테스트 사례가 점점 복잡해지면서 오류가 표시됩니다. 이러한 오류 중 가장 실망스러운 것은 구문 오류입니다. 예를 들어 .Net 파서는 함수 외부의 명령문을 좋아하지 않는 것처럼 보입니다.

누구나 자바 스크립트 확장을 구문 분석하고 컴파일하는 데 사용되는 클래스를 알려주고 어디에서나 완벽한 문서가 있으면 알려주실 수 있습니다. 또한 javascript 프로세서 개체를 (UriResolver와 유사한 방식으로) 사용자 지정 개체로 바꿀 수 있습니다.

또한 파서 규칙을 사용하여 Visual Studio에서 파일을 볼 때 javascript 구문 오류를 강조 표시 할 수 있습니까? 나는 이미 웹 페이지 등에서 사용되는 자바 스크립트 코드에 대해이 작업을 수행하고 있지만 구문 규칙은 XSLT에서 다른 것으로 보입니다.

답변

0

AFAIR XslCompiledTransform은 CodeDom을 사용하여 포함 된 스크립트를 컴파일합니다. 작동 방식은 XslCompiledTransform이 컴파일을 위해 CodeDom으로 전달되는 코드 파일을 만드는 것입니다. MSXML이 CodeDom에서 사용하는 것과 다른 JavaScript 엔진을 사용한다고 생각합니다. 따라서 컴파일 문제. 또한 스크립트를 컴파일 할 수있게하는 몇 가지 추가적인 처리가있을 수 있습니다. (C#의 스크립트에는 클래스가 생성되었고 모든 함수가이 클래스에 저장되었음을 기억합니다.) CodeDom에 의해 생성 된 어셈블리는 변환이 실행되는 appdomain에로드됩니다. 이것은 CLR이 어셈블리 언로드를 허용하지 않기 때문에 OutOfMemory 예외를 발생시킬 수 있습니다. - 여기 얼마 전에 여기에 대해 썼습니다 : http://blogs.msdn.com/b/xmlteam/archive/2011/09/26/effective-xml-part-5-something-went-really-wrong-outofmemoryexception-and-stackoverflowexception-thrown-when-using-xslcompiledtransform.aspx