XHTML5(HTML5的XML序列化)的文档类型是什么?

3

用于HTML5的XML序列化应指定什么文档类型?

保持文件扩展名为html,我能告诉浏览器内容是XHTML5吗?


这听起来像是一个 XY 问题:你有一个问题,而你正在尝试通过将一些文件作为 XHTML 提供来解决它。这会带来新的问题。那么,你最初想要解决的问题是什么?让我们先看看那个问题。 - Mr Lister
3个回答

5

XHTML5的"doctype"是<!DOCTYPE html>

严格来说,HTML5没有doctype。它只有一个"看我,我是HTML5文档"的标记,它恰好像doctype声明一样用于在Web浏览器中触发标准模式。由于XHTML5仅是HTML5的XML序列化,因此它的"doctype"与HTML5相同。

如果您问的是,则通常为application/xhtml+xml,与XHTML文档一样。doctype对于文档是作为HTML标记语言还是作为XML格式没有任何影响。


由于验证问题,我才提出这个问题。例如,空元素具有单独的关闭标记,这在xml中是有效的,但会导致验证错误。 - Nitesh
有些HTML文件可能是HTML5,但其他的是XHtml5,所以我不能只指定MIME类型。那么XHTML扩展名是最好的选择吗? - Nitesh
2
@Nitesh:你的第一个错误在于将你的网站部分作为HTML和部分作为XHTML提供。 没有人会这样做。 如果你之所以这样做是因为无法决定要选择哪种类型,那我会为你做出决定:选择HTML。 - BoltClock

1

如何为HTML5的XML序列化指定文档类型?

文档中可以得知:

XML文档可以包含DOCTYPE,但不需要遵循此规范。此规范未定义公共或系统标识符,也未提供正式DTD。

因此,它没有标准的DTD,所以您不应提供任何Doctype(除非您首先编写DTD)。


保留文件扩展名为html,我能否告诉浏览器内容是XHTML5?
在互联网上,文件扩展名并不相关。HTTP响应头中的Content-Type应该是“ application/xhtml+xml ”。

当从本地文件系统打开文件时,扩展名确实很重要。更重要的是,由于验证问题,我才提出了这个问题。存在验证错误,例如空元素具有单独的关闭标记,在xml中否则是有效的。 - Nitesh
打开本地文件系统中的文件时,扩展名确实很重要。这是 XHTML 的一个非典型用法,因为您在问题中没有提到它,所以可以合理地假设您谈论的是互联网。软件使用文件扩展名来确定本地系统上的文件类型,因此不要给它们 .html 文件扩展名。 - Quentin
由于空元素具有单独的结束标记,这在 XML 中是有效的,但会导致验证错误。这是您没有提到的另一件事。您需要找到一个了解 XHTML 的验证器。如果您编写了 XHTML 的 DTD,则可以使用标准的 XML 验证器进行验证。XHTML 没有标准的 DTD。 - Quentin
有些HTML文件可能是HTML5,但其他的可能是XHtml5,所以我不能只指定MIME类型。 - Nitesh

0
任何使用XHTML都应意味着它现在是一个XML文档。这是XHTML的唯一要求,尽管许多网站将XHTML作为"text/html" MIME类型(由Web服务器设置)提供,但它应该是"application/xhtml+xml"。因此,您的Web服务器应配置为将XHTML作为XML传递。一旦它被传递为XML文档类型,如果它不是完全格式化和验证的XML,您的Web页面将无法在Web浏览器中解析。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接