将页面作为 text/xml 和 application/xhtml+xml 有啥区别?

Posted

技术标签:

【中文标题】将页面作为 text/xml 和 application/xhtml+xml 有啥区别?【英文标题】:What is the difference between serving a page as text/xml and application/xhtml+xml?将页面作为 text/xml 和 application/xhtml+xml 有什么区别? 【发布时间】:2011-10-10 23:06:11 【问题描述】:

作为 text/xmlapplication/xhtml+xml 提供页面有什么区别?

【问题讨论】:

本主题推荐阅读:hixie.ch/advocacy/xhtml 【参考方案1】:

引用自specification:

“application/xhtml+xml”媒体类型 [RFC3236] 是主要媒体 XHTML 系列文档的类型。 '应用程序/xhtml+xml' 应该是 用于将 XHTML 文档提供给 XHTML 用户代理(代理 明确表明他们支持这种媒体类型)。这种媒体类型 使用 XHTML Family 文档类型编写文档时必须使用 从外部命名空间添加元素和属性,例如 XHTML+MathML [XHTML+MathML]。

因此,如果客户端支持,请使用 application/xhtml+xml 为您的 XHTML 页面提供服务,否则您可以使用 text/html

来自specification的另一句话:

    如果 Accept 标头明确包含 application/xhtml+xml(带有 没有“q”参数或正的“q”值)交付文档 使用该媒体类型。

    如果 Accept 标头明确包含 text/html(没有“q”参数或正的“q”值) 使用该媒体类型传送文档。

    如果接受标头 包含“* /*”(一些用户代理用来表示的约定 他们会接受任何东西),使用 text/html 传递文档。

换句话说,宣称他们支持 XHTML 家族的请求者 文档将接收 XHTML 媒体类型的文档,并且所有 (至少声称)支持 HTML 或“一切”的其他请求者 将使用 HTML 媒体类型接收文档。与用户打交道 不满足这些标准的代理不在范围内 这份文件。

当一个 XHTML 文档不符合这些准则时,它应该 只能作为媒体类型 application/xhtml+xml 交付。

text/xml 不应用于提供 XHTML 网页。您可以使用它来提供其他不代表 XHTML 的 XML 文档。

【讨论】:

快速问题:我们也可以将 application/xhtml+xml 写成 application/xml+xhtml 吗?换句话说,我们可以随意倾斜顺序吗? @Pacerier,不,这不是标准的。 快速提问:application/xhtml[SPACE]application/xhtml+xmlapplication[SPACE]/xhtml+ 怎么样xml[空格] @Pacerier,嗯,好问题。我不能肯定这一点。将不得不检查。我能说的是,我从未见过有人使用它。但我不确定它是否会给用户代理带来一些问题。 @Pacerier: iana.org/assignments/media-types/index.html - 我找不到任何包含空格的类型或子类型。【参考方案2】:

从技术上讲,唯一的区别是 text/xml 文档的编码应该默认为 US-ASCII(如果 HTTP 标头或源中没有指定编码),但在 application/xml 和 */*+xml 中,UTF- 8 是默认编码。我认为没有浏览器坚持这一点。

application/xhtml+xml MIME 类型应该主要用于 XHTML(对于 SVG,您应该使用 image/svg+xml)。但是,实际上,这些 MIME 类型之间没有区别,因为浏览器对所有与 XML 相关的 MIME 类型使用相同的 XML 解析器。

请记住,application/xhtml+xml 并没有说明文档的内容。您仍然需要为属于 XHTML 命名空间的元素指定 xmlns="http://www.w3.org/1999/xhtml" 属性。否则,它们将被视为通用 XML 元素。

【讨论】:

以上是关于将页面作为 text/xml 和 application/xhtml+xml 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

将xml源打印到页面

python如何向页面传xml格式的数据?

当内容类型和内容编码标头一起发送时,表达js拒绝发布请求(400错误请求)

如何将 JSON,Text,XML,CSV 数据文件导入 MySQL

Kentico 11:在 text/xml 转换中使用变量

如何将 JSON, Text, XML, CSV 数据文件导入 MySQL