Chrome 39 XML/XSLT呈现空白页面 [英] Chrome 39 XML/XSLT Renders Blank Page
问题描述
我有2011年的旧代码,一直运行正常。这是在Chrome 39之前。在绞尽脑汁试图诊断后,我确定它在IE、Firefox和Chrome<;=Version 38上运行良好。从Chrome版本39开始,仅显示空白页面。
似乎在处理xsl/xslt或XML方面发生了更改,不允许页面正确呈现。
是否有任何已知的Chrome更改会导致此问题?是否有任何修复或解决办法?
谢谢!
示例:
http://redemption.armory点永恒-wow.com斜杠arena-ladder.xml?ts=2&;b=永恒-WOW%21 http://eternal-wow.com推荐答案
该链接在火狐中有效,但在Chrome中显示为空白页面。我查看了WebDev工具,注意到Chrome以Firefox的身份从不同的url加载xsl文件,例如.._layout/arena/language.xsl
(404),而不是../_layout/language.xsl
(Ok)。此外,在Chrome中,我收到错误消息"资源解释为样式表,但使用MIME类型应用程序/XSLT+XML传输:"http://redemption.armory.eternal-wow.com/_layout/arena/ladder.xsl"。
有关此问题,请检查Chrome says: Resource interpreted as Stylesheet but transferred with MIME type application/xml
主要问题似乎是被误解的xsl:import
和xsl:include
语句,这似乎是Chrome/Webkit错误-参见https://code.google.com/p/chromium/issues/detail?id=8441或Google中的"xsl导入相对路径Chrome"。ladder.xsl
中的第一个导入:<xsl:import href="../includes.xsl" />
(从../_layout/includes.xsl
加载)。includes.xsl
中的<xsl:import href="language.xsl"/>
在Chrome中失败-它被解析为../_layout/arena/language.xsl
,而不是../_layout/language.xsl
。同样适用于xsl:includes
,例如在language.xsl-中。<xsl:include href="nav/menu.xsl" />
尝试包含来自../_layout/arena/nav/menu.xsl
而不是../_layout/nav/menu.xsl
。
由于它似乎是一个Chrome Bug,您可以尝试只将XSL文件复制到Chrome正在查找它们的位置,或者尝试调整包含/导入路径,因为Chrome似乎基于主模板解释位置-因为"../includes.xsl"
作为Arena目录中ladder.xsl
的导入,但includes.xsl
中的<xsl:import href="language.xsl"/>
不是相对于language.xsl
解析的,而是相对于ladder.xsl
的。更改为<xsl:import href="../language.xsl"/>
可能适用于Chrome(但可能不适用于其他浏览器,所以我不建议这样做)。有两个建议-要么将导入/包含加倍,保留当前的导入/包含并使用相对于ladder.xsl
的路径添加每个导入/包含;要么检查是否可以将所有导入和包含移动到ladder.xsl并相应地调整路径。
这篇关于Chrome 39 XML/XSLT呈现空白页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!