我有一个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);
答案 0 :(得分:1)
我假设您正在编写Web应用程序,“输出到屏幕”意味着将转换后的XML发送到浏览器。
当前目录是IIS用户的目录 - 即错误的目录。
有必要使用应用程序的实际(物理)路径组成XSL文件的路径 - 可以使用`HttpRequest.PhysicalApplicationPath'访问 - 类似于:
transform.Load(Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath,"Convert.xsl"), settings, null);
请注意,这仅在服务请求时调用代码时才有效 - 否则HttpContext.Current
为null
,并假定Convert.xsl
位于主应用程序目录中(与...一起)。 ASPX文件等)。