0

我有一个 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);
4

1 回答 1

1

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

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

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

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

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

于 2012-08-29T15:27:49.863 回答