XSLT不能在Web浏览器中工作

我有一个XML格式的XSLT文件。 XSLT可以通过URL( http://someurl/somefile.xsl )访问,没有问题。

当我将相同的URL插入xml-stylesheet处理指令时,它只会在浏览器(FF,IE)中呈现纯文本,

 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="http://someurl/somefile.xsl"?> <rootElement>...</rootElement> 

但是当我使用本地文件path(文件下载到XML文件相同的文件夹)时,它的作用就像一个魅力:

 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="somefile.xsl"?> <rootElement>...</rootElement> 

为什么?

在Web浏览器中运行XSLT

在浏览器中运行XSLT受到一些限制:

  • 任何主要的Web浏览器都不支持XSLT 2.0。

  • 浏览器安全模型在XSLT处理方面有所不同。

    • 跨域限制通常会要求XSLT从与XML相同的来源加载。 (在这种情况下,这似乎正在刺激你。)

    • Chrome 不允许本地加载的XSLT运行(即使在本地加载XML时)。 这在开发过程中可能很烦人。

由于这些原因,XSLT更经常在服务器上运行,或者在批处理模式下运行,而不是在浏览器中运行。

如果您希望在浏览器中运行XSLT并使其与Chrome,Firefox和IE一起工作,则必须执行此操作

  1. 仅使用XSLT 1.0, 而不使用 XSLT 2.0。
  2. 正如您所做的那样,在XML文件中使用xml-stylesheet处理指令来将XSLT文件与XML文件相关联:

     <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="http://origin-domain/path/to/file.xsl"?> <rootElement>...</rootElement> 
  3. 从服务器,而不是从本地文件服务XSLT。
  4. 确保XSLT来自与XML相同的域。

最后,请务必检查浏览器控制台是否有任何错误消息。 例如,下面是IE在XSLT无法定位时显示的内容:

在这里输入图像描述