What are the main differences between XHTML and HTML? Which one is better in your opinion, and why? Do most browsers support both?
8 回答
XHTML is based on XML, and thus requires the source to be well-formed. Since XHTML is more strict than HTML, less pre-processing is needed by the rendering engine.
XHTML should be served as application/xhtml+xml for you to take advantage of the benefits, otherwise XHTML will be treated as ordinary HTML. Serving it as 'application/xhtml+xml' is not common on the web due to Internet Explorer, which cannot handle XHTML.
不同之处在于 XHTML 基于 XML,而 HTML 基于 SGML。
浏览器使用 SGML 解析器处理以内容类型发送的内容text/html
,使用 XML 解析器处理application/xhtml+xml
.
使用 SGML 解析器时,即使在文件中遇到语法错误,浏览器也会继续解析。这就是为什么很多人在向浏览器发送看起来像 XML 的文件时认为他们正在使用 XHTML。这实际上是一个错误,因为这会在浏览器中触发许多解析错误并减慢渲染过程。
使用 XML 解析器时,浏览器会在遇到语法错误时停止解析并显示 XML 错误。当然,这仅适用于具有用于 HTML 内容的 XML 解析器的浏览器,而对于仅下载文件而不显示它的 Internet Explorer 则不然。
那你该怎么办?
如果您需要 XML 强加的语法检查和严格的结构,您应该使用 XHTML。您应该记住,您必须以错误的内容类型将 XHTML 内容发送到 Internet Explorer,并隐含所有问题。您还应该记住,只要文件中有无效内容,您的文档就会中断,因此您必须非常小心地清理任何用户输入。
您应该将 HTML 用于其他任何事情。HTML 可以正常工作,并且是当今受到极大支持的标准。甚至下一个标准 HTML 5 也定义了基于 SGML 的语法,因此这将持续下去。
请记住,无论您选择哪种格式,验证输出始终是检测语法错误的好主意。
这不是关于哪个更好。HTML 仍在继续发展,HTML5 也正在开发中(尽管已经有很多年了:))并提供了一些新元素,以便更轻松地管理网页中的多媒体等新技术。
另一方面,XHTML 是关于 XML 的严格性,我们应该说保持干净。如果您保持 HTML 文档格式正确(关闭每个打开的元素,将内容嵌套在树形中),您将充分利用 XHTML/XML 世界,并且仍然可以使用 HTML 格式,将您的文档声明为是 HTML,但仍然保持它们“干净”(格式良好)。我认为我们不应该宣布它们中的每一个都“更好”。它们可以共存。这只是关于我们以正确的方式做事。
如前所述,XHTML 应该(理论上)是有效的 XML。理论上(但实际上并非如此)不符合标准的 XHTML 不应由浏览器呈现。
使用一个比另一个几乎没有优势,所以写你个人喜欢的任何一个 - 只要你一直这样做。将成为未来 Web 标准的 HTML5 将同时支持 XHTML 和 HTML 4.01 样式的标签(之前通过可选的“XML 序列化”),而 XHTML2 看起来将在没有供应商积极参与的情况下几乎死气沉沉支持它。
An example of a difference is the break tag.
<br>
is proper HTML, but in XHTML where the elements need to validate as XML, you must self-close the tag:
<br />