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一起工作,则必须执行此操作
- 仅使用XSLT 1.0, 而不使用 XSLT 2.0。
-
正如您所做的那样,在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>
- 从服务器,而不是从本地文件服务XSLT。
- 确保XSLT来自与XML相同的域。
最后,请务必检查浏览器控制台是否有任何错误消息。 例如,下面是IE在XSLT无法定位时显示的内容: