【问题标题】:Chrome 39 XML/XSLT Renders Blank PageChrome 39 XML/XSLT 呈现空白页
【发布时间】:2014-11-22 22:45:50
【问题描述】:

我有 2011 年的旧代码,它一直都能正常工作。直到 Chrome 39。在尝试诊断一段时间后,我确定它在 IE、Firefox 和 Chrome

似乎在处理 xsl/xslt 或 xml 方面发生了变化,导致页面无法正确呈现。

Chrome 是否有任何已知的更改会导致此问题?任何修复或解决方法?

谢谢!

例子:

http://redemption.armoryDOT forever-wow.com SLASH arena-ladder.xml?ts=2&b=Eternal-WoW%21 http://eternal-wow.com

【问题讨论】:

  • 您的第一个链接是 404 错误 - 您应该在此处发布代码 sn-ps 以帮助其他人帮助您,而不仅仅是依赖链接。请参阅本指南:stackoverflow.com/help/how-to-ask
  • 这不是 404。工作正常。因为我不知道问题出在哪里,所以要粘贴的代码太多了。
  • 不——不适合我,redemption.armory.eternal-wow.com/… 的 302 是 404 错误
  • 测试时的行为与我所描述的相同:web-sniffer.net
  • 您只是对登录重定向感到困惑。我删除了第一个链接,所以你不要继续尝试。使用不需要登录的剩余链接。

标签: xml google-chrome xslt xslt-1.0


【解决方案1】:

该链接在 Firefox 中有效,但在 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:importxsl:include 语句,这似乎是 Chrome/Webkit 错误 - 参见例如https://code.google.com/p/chromium/issues/detail?id=8441 或谷歌“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 错误,您可以尝试将 xsl 文件复制到 Chrome 正在查找它们的位置,或者尝试调整包含/导入路径,因为 Chrome 似乎根据主模板解释位置 -因为"../includes.xsl" 是从 arena-directory 中的ladder.xsl 导入,但includes.xsl 中的<xsl:import href="language.xsl"/> 相对于language.xsl 没有解析,而是相对于ladder.xsl,更改为@987654345 @ 可能适用于 Chrome(但可能不适用于其他浏览器,所以我不会推荐)。两个建议 - 要么将导入/包含加倍,保留当前的导入/包含,并使用相对于 ladder.xsl 的路径添加每个导入/包含,或者,这将是一个更清洁的解决方案,您检查是否可以移动所有导入和包括到 ladder.xsl 并相应地调整路径。

【讨论】:

  • 你说得对。我起初尝试使用符号链接来解决这个问题,但没有奏效。所以我将所有包含的文件更改为绝对路径而不是相对路径,这解决了这个问题。这是一种肮脏的修复,需要进行数百次更改才能影响整个站点。我确信有更好的方法,可能使用 .htaccess 或其他东西,但我不确定是什么。
  • 没关系,它对其他浏览器有点破坏。这根本行不通。
  • 我再次尝试了符号链接,但之前错过了一些。如果我得到每个链接,它实际上是有效的。它只是非常混乱,让我发疯。
  • @Derek 虽然这也是一种肮脏的修复 - 只是将 xsls 保留在它为非 webkit 浏览器工作的当前位置并将它们复制到 Chrome 尝试加载的位置不是一个选项?只是因为那不应该需要这么多的改变。但是,如果符号链接方法有效,那么它当然是更好的解决方案,因为它更干净。
  • 感谢您的帮助。我现在将使用这种符号链接方法。这比重复文件要好得多。我已将您的答案标记为答案,但如果有人知道更好的方法或解决方法,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2022-11-07
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 2013-01-25
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多