Chrome可以在本地文件上执行XSL转换吗?

Zaz*_*Zaz 83 xml xslt google-chrome local

我正在研究xslt并开始测试w3schools上的示例.

但是,当我将xml和xsl保存在文件中并尝试在本地打开它们时,chrome将不会执行xsl转换.它只显示一个空白页面.

我已将<?xml-stylesheet type="text/xsl" href="style.xsl">标记添加到xml文档中,并且firefox将其呈现为应该看起来的样子.此外,如果我通过Web服务器查看文件,chrome会显示该文件应该看起来的样子.

当链接是本地链接时,chrome是否在查找样式表信息时遇到问题?将href更改为file:///C:/xsl/style.xsl没有任何区别.

更新:这似乎是安全策略的一个副作用,即不将file:///*视为同一来源.这会使控制台中出现以下错误:

不安全的尝试从URL文件加载URL文件:/// C:/xsl-rpg/style.xsl:/// C:/xsl-rpg/data.xml.域,协议和端口必须匹配.

Zaz*_*Zaz 67

简短的回答是"不,使用其中一种不同的浏览器 ".

这不起作用的原因是由于Chrome以一种有争议的方式[1] [2] [3] [4]解决了安全问题,阻止XML文件访问同一目录中的本地XSLT文件,而HTML文件可以访问同一目录中的.CSS文件就好了.

在上面提到的问题中,用户要求更清晰的错误消息(因为域,协议和端口确实匹配),或者至少在没有样式的情况下显示XML.Chrome开发者已忽略这些请求.

  • 虽然他们的[安全问题](https://code.google.com/p/chromium/issues/detail?id=4197#c14)有意义,但XML文件应该能够从同一目录加载XSL样式表,就像HTML文件可以从同一目录加载图像和脚本.有一个[你可以加注的问题](https://code.google.com/p/chromium/issues/detail?id=47416)但Chrome开发团队已经禁止对它发表新的评论 - 尽管他们抱怨他们无法量化用户希望放松本地文件来源的严重程度. (16认同)

Jak*_*ton 53

您可以使用Chrome的命令行标记在本地执行此操作.

具体标志是 --allow-file-access-from-files

在OS X上:从Terminal.app运行 /Applications/Google\ Chrome.app/contents/MacOS/Google\ Chrome --allow-file-access-from-files

在Windows上:从命令提示符运行 %LOCALAPPDATA%\Google\Chrome\Application\chrome.exe --allow-file-access-from-files

注意:如果当前正在运行,则可能必须退出Chrome

  • 也许你必须手动杀死windows任务管理器中chrome.exe的所有正在运行的windows进程.对我来说,这很有效. (2认同)
  • 在Windows 7上更快:窗口键+ R; "chrome --allow-file-access-from-files"; 输入. (2认同)

mor*_*eus 12

如果你想坚持OP,答案是否定(正如其他人指出的那样),但解决问题的一种方法是运行一个简单的网络服务器并通过chrome中的http打开文件.如果安装了python 2.x,则可以通过键入以下命令来运行Web服务器:

python -m SimpleHTTPServer
Run Code Online (Sandbox Code Playgroud)

或者在python 3.x中:

python3 -m http.server
Run Code Online (Sandbox Code Playgroud)

然后使用http://localhost:8000/yourfile.xmlchrome 打开文件.希望你只是想完成你的工作,而不是必须打开文件使用file://