XHTML和HTML有哪些主要区别?

47

XHTML和HTML之间的主要区别是什么?在您看来,哪一个更好,为什么?大多数浏览器都支持这两种标记语言吗?

8个回答

20

XHTML 基于 XML,因此需要源代码符合规范。由于XHTML比HTML更严格,因此渲染引擎需要进行的预处理更少。

要充分利用XHTML的好处,应将其作为 application/xhtml+xml 进行提供,否则XHTML将被视为普通HTML对待。由于Internet Explorer无法处理XHTML,因此在Web上将其作为 'application/xhtml+xml' 进行提供并不常见。


1
XHTML在今天(相对地)被广泛使用!将XHTML作为application/xhtml+xml提供并不常见,因为Internet Explorer 6会破坏该MIME类型。我认为在Internet Explorer 7中已经可以正常工作了。 - Christoph Schiessl
我的意思是以“application/xhtml+xml”的形式提供它并不普遍使用。 - Andy

18

这可能是我读过的关于HTML和XHTML差异以及各自优点最好的文章:

HTML与XHTML对比

我们应该使用哪种,HTML还是XHTML?为什么?

WHATWG维基上也有一份相当技术性的比较。


仅需指出,截至2017年6月,所链接的网站已不存在。 - user376845
1
@Mahouk 对我来说这两个链接都可以使用。 - Charles Roper
1
啊,没错,但是当我留下评论的时候它们已经死了。 - user376845

9
可扩展超文本标记语言(XHTML)是一种标记语言,具有与HTML相同的表达深度,但也符合XML语法。
XHTML是“HTML 4的现代版本”。
更多信息:wikipediaW3C

实际上,没有理由不生成有效的xhtml……除非你想让它更难嵌入你的工作/屏幕抓取。不过,你可能不想这样做。 - Marcin
2
“XHTML是HTML的现代版本”:我必须反对这个说法,这是完全错误的。XHTML是使用XML实现的HTML,而不是SGML。这不是现代的,这是不同的。例如,您的文档需要根据规范进行格式化,否则您的浏览器将只显示XML错误。 - Vincent Robert
1
你下结论太快了。IE根本不支持XHTML,大多数服务器端工具/模板都不够严格,无法可靠地输出XML,而且XHTML几乎没有什么HTML做不到的事情,前进的道路并不清晰。 - Kornel
1
没错,porneL。你会遇到各种不确定性,关于要将内容类型设置为什么来提供页面。它们是text/xml吗?还是text/html,但格式像XML?然后突然间,一些主流浏览器进入怪异模式,你的布局就乱了。真是个麻烦。 - conny

9
区别在于XHTML基于XML,而HTML基于SGML。
浏览器使用SGML解析器来解析使用内容类型为“text/html”的内容,并使用XML解析器来解析“application/xhtml+xml”。
当使用SGML解析器时,浏览器会在遇到文件语法错误时继续解析。这就是为什么很多人认为他们正在发送XML文件给浏览器时,实际上这是一个错误,因为这会在浏览器中触发许多解析错误并减慢呈现过程。
当使用XML解析器时,浏览器会在遇到语法错误时停止解析并显示XML错误。当然,这仅适用于具有用于HTML内容的XML解析器的浏览器,这对于只下载文件而不显示文件的Internet Explorer并不适用。
那么你应该怎么做呢?
如果需要XML强制执行的语法检查和严格结构,则应使用XHTML。请记住,您必须使用错误的内容类型将XHTML内容发送到Internet Explorer,并面临所有隐含问题。您还应该记住,您的文档将在文件中存在无效内容时中断,因此必须非常小心地清理任何用户输入。
对于其他任何内容,请使用HTML。 HTML可以正常工作,并且是今天广泛支持的标准。即使下一个标准HTML 5定义了基于SGML的语法,这也将持续存在。
请记住,无论您选择哪种格式,验证输出始终是检测语法错误的好方法。

更多信息请查看此链接 - https://www.sitepoint.com/web-foundations/differences-html-xhtml/ - Vinit Kadkol

3

这不是关于哪个更好的问题;HTML仍在发展,而HTML5已经在路上(虽然已经多年了:)),并提供了一些新元素,以便更轻松地管理Web页面中的多媒体等新技术。

另一方面,XHTML关注的是XML的严格性,应该说是保持清洁。如果您将HTML文档格式良好(关闭每个打开的元素,在树形结构中保持嵌套元素),则可以从XHTML / XML世界中获得最佳效果,并仍然使用HTML格式,声明您的文档为HTML,但仍然保持“清洁”(格式良好)。我认为我们不应该宣称其中任何一个“更好”;它们可以共存。只是让我们以正确的方式做事情。


所以浏览器兼容这两个的吗? - alsadk
xhtml 1.0 得到了很好的支持,但 xhtml 1.1 的支持不太好。html 4 和 4.01 得到了很好的支持,但应该在“严格”模式下使用,以确保在各种浏览器中几乎相似的呈现效果,html 5 的支持正在兴起(因此旧版浏览器可能会出现问题)。 - zappan
如果您想将文档作为text/html提供,则不能使用XML序列化器! CDATA块的语法不兼容,并且XML序列化器允许输出在HTML模式下中断的<br></br>或xhtml:p。这是一个大问题,因为您必须使用不可靠的标记是文本工具。 - Kornel
Internet Explorer 是个瓶颈。你不能将 XHTML 作为 XML 提供,因此它没有太多优势。 - Casebash

3

如前所述,XHTML 理论上应该是有效的 XML。理论上(但实际上不是这样),不符合规范的 XHTML 不应该被浏览器呈现。

使用 XHTML 和 HTML 之间很少有优势可言,因此请您按照自己的喜好编写代码,只要保持一致即可。HTML5 将成为未来的 Web 标准,将支持 XHTML 和 HTML 4.01 风格的标签(通过可选的“XML 序列化”方式支持前者),而 XHTML2 看起来将会非常冷门,没有任何厂商积极支持它。


1
实际上,将XHTML作为application/xhtml+xml发送将会触发错误。将XHTML作为text/html发送在实践中可以工作,因为您的XML文档将被一个非常宽容的SGML解析器解析。 - Vincent Robert

1

0

一个例子是换行标签。

<br>

在 XHTML 中,HTML 是正确的,但是由于元素需要作为 XML 进行验证,因此您必须自我关闭标记:

<br />

"自闭标签"有助于预防问题吗? - alsadk

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