한 기술은 매니페스트 리소스로 내 .NET 어셈블리에 XSLT를 컴파일하는 것입니다. XSLT 파일이 Visual Studio에 있으면 파일 속성에서 "Build Action"을 "Embedded Resource"로 설정할 수 있습니다. 그런 다음 리소스의 이름이 프로젝트의 기본 네임 스페이스가되고 파일 이름이옵니다. (일반적으로 어셈블리를 컴파일 한 다음 ILDASM을 사용하여 매니페스트에서 파싱하여 이름을 확인합니다.) 어쨌든
- 당신이 이름을 알고 나면, 당신은이 같은 함수 변환을 얻을 수있다 (참고, 이것은 당신이 GetExecutingAssembly를 사용할 수 있습니다 다른 디자인 .... 따라서 GetCallingAssembly 해당 어셈블리 내 유틸리티에) :
public static XslCompiledTransform GetTransformByResourceName(string resourceName)
{
XslCompiledTransform transform = new XslCompiledTransform(false);
using (Stream manifestResourceStream =
Assembly.GetCallingAssembly().GetManifestResourceStream(resourceName))
using (XmlTextReader reader = new XmlTextReader(manifestResourceStream))
{
XsltSettings settings = new XsltSettings(false, false);
transform.Load(reader, settings, new XmlUrlResolver());
}
return transform;
}
물론 어떤면에서는 유연성/구성 가능성을 잃지 만 코드가 XSLT를 찾을 수 있다는 것을 알고 있습니다.
변환을 서버로 옮기는 것이 도움이되는지 여부를 알기에는 충분한 설계 지식이 없습니다. 클라이언트 측 변환을 수행해야하는 경우에도 .NET 응용 프로그램에서 이미 XML을 제공하고 있다면 XSLT도 함께 제공 할 수 있지만이 경우 파일 시스템에 별도로 배포하지 않아도됩니다.
XMLDocument 등 – Cylindric
'\ servername \ share'을 사용하여 .Net 앱에서 XML을 생성한다고 언급하는 것을 잊어 버리셨습니까? XML과 함께 XSL을 웹 서버에 넣으려고 했습니까? 이것은 효과가있다. – Tomalak
글쎄, XML은 DB 필드에 생성되어 저장되고 양식의 브라우저 컨트롤에서 재생됩니다. 실제로는 "실제"아무 곳에도 존재하지 않습니다. 지금까지는 응용 프로그램의 사용자 별 폴더를 사용하고 XSL 파일과 생성 된 XML을 여기에 복사했습니다. 모든 방식으로 브라우저에 "로컬"입니다. 임시 파일이 필요하지 않은 브라우저 내 솔루션을 기대했습니다. ( – Cylindric