我可以在XML文档中使用XSL的内联规范吗?

我可以在XML文档中使用XSL的内联规范吗?,xml,xslt,Xml,Xslt,我在我们的CRM系统中嵌入了一个HTML控件,并使用它来显示一些XML。我想使用XSL文档对其进行格式化 当我使用test.xml和test.xsl在本地测试它时,一切都很好,但是当我将xsl链接更改为 \\servername\share\test.xsl 然后它就不起作用了,我想是因为位置不可信 我可以将XSL插入XML文档吗?当我不能真正使用相对路径时,如何格式化浏览器控件的内容 谢谢我经常使用的一种技术是将XSLT作为清单资源编译到我的.NET程序集中。如果XSLT文件位于Visual

我在我们的CRM系统中嵌入了一个HTML控件,并使用它来显示一些XML。我想使用XSL文档对其进行格式化

当我使用test.xml和test.xsl在本地测试它时,一切都很好,但是当我将xsl链接更改为

\\servername\share\test.xsl
然后它就不起作用了,我想是因为位置不可信

我可以将XSL插入XML文档吗?当我不能真正使用相对路径时,如何格式化浏览器控件的内容


谢谢

我经常使用的一种技术是将XSLT作为清单资源编译到我的.NET程序集中。如果XSLT文件位于Visual Studio中,则可以在文件属性中将生成操作设置为嵌入式资源。然后,资源的名称成为项目的默认名称空间,后跟我认为是的文件名。。。。通常我编译程序集,然后用ILDASM检查清单中的名称

无论如何,一旦你知道了这个名字,你就可以用一个像这样的函数来获得转换了,这是在我的工具程序集中,因此GetCallingAssembly。。。。在不同的设计中,您可以使用GetExecutionGassembly:

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也可能会工作,但在这种情况下,您不必单独将其部署到文件系统

忘记提到XML是由.Net应用程序使用XMLDocument etc\servername\share生成的吗?您是否尝试过将XSL与XML一起放在web服务器上?这应该是可行的,XML是生成并存储在DB字段中的,只是显示在表单的浏览器控件中——它实际上并不存在于任何真实的地方。现在,我已经使用了应用程序自己的每个用户文件夹,并将XSL文件和生成的XML复制到其中,这样它就可以在浏览器中本地运行。希望有一个不需要临时文件的浏览器内解决方案: