在c#中加载外部XSLT时出错

时间:2012-08-29 13:12:25

标签: c# .net xslt

我有一个XML文档,我试图在c#中添加一个xslt并输出到屏幕。我一直在研究这个问题,看起来我需要使用XslCompiledTransform类来做这个。

问题是,当我调用Load方法时,我的页面错误。我在网上找到的所有样本似乎都建议我只是调用负载“Sort.xsl” - 它与此文件位于同一文件夹中。我还假设我需要使用MemoryStream()将变换后的xml显示到屏幕上?

我使用XmlDocument进行所有处理,所有数据都在“xmlDocument”中。有人可以帮我加载外部xsl,将其应用并将显示结果显示在屏幕上。

非常感谢

// Create a writer for writing the transformed file.
MemoryStream strm = new MemoryStream();

XmlWriter writer = XmlWriter.Create(strm);

// Create and load the transform with script execution enabled. 
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load(@"Convert.xsl", settings, null);

// Execute the transformation. 
transform.Transform(xmlDocument, Response.OutputStream);

1 个答案:

答案 0 :(得分:1)

我假设您正在编写Web应用程序,“输出到屏幕”意味着将转换后的XML发送到浏览器。

当前目录是IIS用户的目录 - 即错误的目录。

有必要使用应用程序的实际(物理)路径组成XSL文件的路径 - 可以使用`HttpRequest.PhysicalApplicationPath'访问 - 类似于:

transform.Load(Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath,"Convert.xsl"), settings, null); 

请注意,这仅在服务请求时调用代码时才有效 - 否则HttpContext.Currentnull,并假定Convert.xsl位于主应用程序目录中(与...一起)。 ASPX文件等)。