【发布时间】:2011-10-10 23:06:11
【问题描述】:
作为 text/xml 和 application/xhtml+xml 提供页面有什么区别?
【问题讨论】:
-
本主题推荐阅读:hixie.ch/advocacy/xhtml
标签: php javascript asp.net html
作为 text/xml 和 application/xhtml+xml 提供页面有什么区别?
【问题讨论】:
标签: php javascript asp.net html
引用自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 文档。
【讨论】:
从技术上讲,唯一的区别是 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 元素。
【讨论】: