【问题标题】:What content-type should be used for XML+XSL presentation?XML+XSL 表示应该使用什么内容类型?
【发布时间】:2011-10-06 15:27:00
【问题描述】:

我正在尝试在浏览器中呈现 XML+XSL 2.0,返回具有 application/xml 内容类型的 .xml 页面和具有 text/xml.xsl 页面。 Safari 抱怨主文档:“资源解释为文档,但使用 MIME 类型 application/xml 传输。” (但一直渲染一切都很好)。

我想摆脱这个警告信息。 XML 文档应该使用哪些内容类型?

【问题讨论】:

  • “XML+XSL 2.0”是否意味着您使用 XSLT 2.0?有没有支持 XSLT 2.0 的浏览器?
  • 不支持浏览器,但 Saxon CE (alpha) 在浏览器中提供 XSLT 2.0:saxonica.com
  • Safari 5 和 Chrome 15 可与 XSLT 2.0(在 Mac 上)一起正常工作

标签: xml xslt


【解决方案1】:

我已经成功使用 text/xml 和样式表作为 text/xsl (或者这可能是好的 text/xml 因为你有它工作)。 text/xsl 被广泛认可,但不是“官方”(据我了解)。

根据 RFC 3023:“如果一个 XML 文档,即未经处理的源 XML 文档可供普通用户阅读,text/xmlapplication/xml 更可取。MIME 用户代理(和 Web 用户代理)不明确支持 text/xml 会将其视为 text/plain,例如,通过将 XML MIME 实体显示为纯文本。当临时用户无法读取 XML MIME 实体时,application/xml 更可取。"

https://www.rfc-editor.org/rfc/rfc3023#page-16

【讨论】:

  • text/xsl 用于 XML 文档??
  • 对不起 - 样式表。以及实例文档的 text/xml。
  • 根据 RFC 3023:“如果一个 XML 文档,即未经处理的源 XML 文档可供普通用户阅读,则 text/xml 比 application/xml 更可取。MIME 用户代理(和 Web 用户没有明确支持 text/xml 的代理)会将其视为 text/plain,例如,通过将 XML MIME 实体显示为纯文本。当临时用户无法读取 XML MIME 实体时,最好使用 Application/xml。 tools.ietf.org/html/rfc3023#page-16
  • 更新答案以反映上述 cmets。
【解决方案2】:

在进行任何转换之前,我会在 PHP 中执行此操作:

header("Content-Type: application/xhtml+xml; charset=utf-8");

uft-8 的部分很重要...

【讨论】:

  • 如果他将服务器端的 XML 转换为 XHTML,这将适用,即使这样也会有问题(IE/MSHTML 不支持那种 MIME 类型)。没有“uft-8”,但您的代码中的“utf-8”只有在输出实际上是 UTF-8 编码时才是正确的。这不是 XHTML 的要求。你没有回答问题。
【解决方案3】:

查看 WebKit 源代码,很容易看出哪些 MIME 类型被认为对每种资源类型有效。这不是一个很大的列表。

“文档”支持以下 4 种 MIME 类型:

  • text/html
  • text/xml
  • text/plain
  • application/xhtml+xml

样式表只有两种有效类型:

  • text/css
  • text/xsl

显然,text/htmltext/plaintext/css 类型在这里并不适用。

如果您真的只是对消除警告感兴趣,将.xml 文档发送为text/xml 并将.xsl 文档发送为text/xsl 应该可以解决问题。

另一方面,你承认一切都很好,所以你可能会考虑“如果它没有坏,就不要修复它”策略。

【讨论】:

    【解决方案4】:

    根据官方 IANA 注册表 https://www.iana.org/assignments/media-types/media-types.xhtml 中的 https://www.w3.org/TR/2007/REC-xslt20-20070123/#media-type-registration,XSLT 的正确媒体类型实际上应该是 application/xslt+xml。这并不新鲜,注册至少可以追溯到 2007 年。但是,浏览器对 application/xslt+xml 的支持几乎不存在。

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      相关资源
      最近更新 更多