注意:本文非常旧。当我于 2013 年年中撰写此警告时,只应使用一种 DOCTYPE,即 HTML5 的 <!DOCTYPE html>
Aaron Bazinet 最初在论坛中 发布了此问题。
我首先要说明的是,我不是这方面的专家,但我确实觉得它很有趣。我们设计的每个页面的第一行都以 DOCTYPE 开头,我感觉我们大多数人并没有真正掌握它的全部含义。
你们中懂代码的人可能会立即注意到 CSS-Tricks 使用的是XHTML 1.0 Transitional。是的,这可能不太好,原因我们稍后会提到。说实话,当我第一次编写 CSS-Tricks 的代码时,我的理解比现在少得多,我可能会很快更改它。
我认为最好的起点是 2000 年,当时 XHTML 1.0 成为 W3C 的官方推荐。它确实是作为 HTML 的继任者而设计的。所以现在 8 年多过去了。我们现在使用 XHTML 1.1(1.2 仍在开发中,2.0 还有很长的路要走)。我们仍在讨论是否应该使用它。
在 2002 年,就已经有人讨论 XHTML 如何带来 更美好的生活。然后在 2003 年,Jeffrey Zeldman 的《使用 Web 标准设计》第一版发布(现在是 2006 年的第二版)。我们中的许多人可能都拥有并阅读过这本书。说实话,现在读起来感觉有点过时了,因为示例看起来太基础了,设计看起来也很老派。但是,它可能仍然被认为是最接近“Web 标准圣经”的东西。这本书绝对充满了对 XHTML 的热爱。
所以我们这些 Zeldman、A List Apart、Happy Cog 以及整个团队的粉丝,我们喝了 Kool-Aid 并开始使用 XHTML。这是好是坏?我真的不知道。
以下是一些需要考虑的要点
- XHTML 更像 XML。这意味着您的代码必须编写得更简洁。不允许使用大写字母(在标签中)。每个标签都必须关闭。简洁的代码是好的,对吧?我认为是的。但是,不关闭标签可能会带来比 HTML 中更严重的后果,这不好,对吧?
由于 XHTML 更像 XML,因此它具有更好的扩展性。以下是文章 XHTML – 神话与现实 中的内容
…这将使作者能够表达比当今 HTML 可能的更丰富的结构和语义。实际上,XHTML 继承了支持多种语言的可能性,而不是以单一的方式扩展 HTML,XHTML 可以通过模块进行扩展,其中每个模块定义语言的特定子集。
从理论上讲,这意味着可以在无需浏览器升级的情况下扩展语言。
听起来很酷!但是……我们中有多少人会使用这种功能?0.01%?
- XHTML 并不总是被解释为 XHTML。我还没有完全理解这一点,但显然,大量浏览器根本没有利用 XHTML 可以实现的这些花哨的功能。IE 8 将是第一个支持所有这些功能的 Internet Explorer 版本。这并不意味着您的网站会崩溃,只是意味着代码将被解释为常规的 HTML。据我了解,普遍共识是,对于最广泛的支持,HTML 4.01 是最佳选择。
- 关于 CSS 的一些次要注意事项。由于这是,你知道的,从技术上讲是一个关于 CSS 的网站,因此值得一提的是,关于 CSS 和这些不同的 DOCTYPE,需要牢记的一件事。在 HTML 中,某些标签会自动应用于文档,例如
<table>
内部的<tbody>
。因此,在 CSS 中,您可以声明类似“tbody td”的内容,并确信该规则将生效,即使您在代码中省略了 tbody。在 XHTML 中并非如此。
可以肯定的是,没有明确的答案。如果我必须立即做出决定,我会说 HTML 4.01 对于大多数普通的网页设计师/网站来说更有意义。我还应该说,我已经盲目地使用 XHTML 1.0 Transitional 设计了大量的网站,它们都正常工作,我仍然活着。
所以不要对我太苛刻,但如果您了解更多信息,请随时启发我和我们其他人。
SitePoint 论坛中的绝佳参考 在此。
哦,对了,我们不是 讨论过 HTML 5 与 XHML 2 吗?哈哈。
我个人在所有我设计的网站中都使用 XHTML strict。我喜欢它的简洁代码和务实行为。自从我开始使用 XHTML 以来,HTML 4.01 对我来说看起来很丑。XHTML 的 100% 浏览器支持无关紧要——只要它能工作,为什么要修复它呢?
奇怪的评论:
IE 8 最接近什么?XHTML 1.0 还是 HTML 4.01 strict?我听说过各种关于 IE8“符合标准”的评论,但这到底是什么意思?
自从我意识到 XHTML Strict 的存在以来,我一直都在使用它。顺便说一句,这是唯一一个将 IE6 切换到严格模式的 doctype,因此您不必围绕其糟糕的盒子模型实现进行操作。
IE8 在标准合规性方面将落后于其他所有浏览器 10 年,并将继续成为地球上最糟糕的浏览器。
顺便说一句,没有人应该使用 XHTML 1.1,因为它必须作为 application/xml 提供服务,而这里没有人这样做,我敢肯定。当然,这就是为什么没有人应该费心使用 XHTML 的原因,因为这里没有人提供它,而且只有现代浏览器(不是 IE)才能理解它。
我最近一直在思考我想用什么来做事情,我想我仍然会坚持使用 XHTML(strict)。我无法真正接受 HTML,也从未接受过。实际上:如果我有一天成为国王,我会将标记方面的事情推向 HAML 的方向。越干净越简单越好。
——trice
我坚持使用 HTML 4.01 Strict,因为除非您将服务器配置为将 XHTML 作为 application/XML 提供服务,否则浏览器会将 XHTML 视为普通的 text/HTML。此外,我想我早就过了“x”听起来很酷的时候了。:)
说实话……谁在乎呢?恕我直言,只要代码在大多数现代浏览器中都能正常工作并显示(去死吧,IE6),那么您就可以继续前进。验证是我认为很麻烦的事情之一,但它几乎是必要的,尤其是在您销售网页设计时。我尝试将我的所有代码都保持在 XHTML 1.1 Transitional 中,并且我很快可能会尝试使用 strict :P
在工作/个人使用中使用 XHTML Strict 1.0,如果我能够做到的话。
有时工作会迫使您使用更严格的(1.1)或更宽松的标记(甚至 Transitional 4.01!),具体取决于您使用的后端系统以及目标用户是谁(例如,为您和一些同事创建的 Web 工具不必进行验证,只要它能工作即可)。
最重要的是向客户指出这一点,并告诉他们 DOCTYPE 的差异意味着什么。如果客户不在乎 Web 标准,您应该尝试说服他们应该在乎,因为它会改善他们的外部质量。
许多人甚至不知道盲人也使用互联网,而且他们(人们,而不是盲人)根本不在乎无障碍性。
正如 Rob 和 Jesse 所述,XHTML 的问题在于其提供服务的方式。XHTML 文档应该使用 **application/xhtml+xml** MIME 类型提供服务。大多数人不知道这一点,他们在文档中添加了 XHTML doctype 然后就完事了。尽管有该 doctype,但您的网站仍会被浏览器解析为普通的 HTML 4.01,**而不是** XHTML。
IE 目前不支持 XHTML 的 MIME 类型,因此它不会正确呈现 XHTML 文档。Firefox 等浏览器可以,因此您需要将 **text/html** 提供给 IE 和任何其他不支持 XHTML 的浏览器,并将 **application/xhtml+xml** 提供给支持它的浏览器。
大多数使用 XHTML 的人将其用作 HTML。没有什么可以阻止您在 HTML 中正确嵌套标签、引用属性、坚持使用小写字母等。无论如何您都应该这样做。因此,我会说,除非您能找到真正需要使用正确提供服务的 XHTML 的理由,否则只需坚持使用 HTML 4.01 即可。
很棒的话题,而且我很少看到有人讨论它。我个人在设计的每个网站中都使用 XHTML transitional。为什么?我想因为这是我学习编写的。我对代码非常细致,所以 XHTML 对我来说非常有效。
在阅读了类似这样的文章之后,我确实意识到我还有很多东西需要学习和理解。
IE 6 和 IE7 实际上支持 XHTML。你只需要通过 application/xml 和一个 xsl 文件来“欺骗”它们使其支持。 请看我的演示了解如何操作。
无论如何,我仍然只使用 HTML 4.01 严格模式,因为 XHTML 给我的感觉很糟糕。
使用 HTML 4 的理由
易于编写
易于验证
使用 XHTML 的理由
较新的推荐标准
通过 XML 命名空间支持新技术
鼓励编写高质量页面(结构和表现的分离)
鼓励强类型(小写字母、闭合标签等)
可以作为 XML 解析并在其他地方使用
新技术例如 RDFa 和 ARIA。
实际上,这就是我的看法,我意识到没有理由以过时的格式创建网站——如果这是一个问题,XHTML 是向后兼容的。
在过去的几年里,我一直在深入研究这个话题。截至目前,使用 XHTML 的好处非常少。正如其他人提到的,IE(即使是 IE8)也不支持 application/xhtml+xml。此外,即使对于确实支持 XHTML 作为正确 MIME 类型的浏览器,验证为 xhtml+text 的内容也不一定能验证为 xhtml+xml。
我仍然使用 XHTML Strict 文档类型。间接的好处是它让我保持编写规范代码的习惯。仅此而已。
我同意 Jin 的观点。
该 XHTML 与 HTML 常见问题解答 清晰地涵盖了该主题。Internet Explorer 目前根本不支持任何 XHTML。
这意味着,如果您将代码编写为 XHTML,则无法利用 XHTML 的任何优势,因为您必须确保您编写的所有 XHTML 代码也可以理解为 HTML 4,以便 IE 也能理解。
由于此限制,最好坚持使用 HTML 4(同时牢记 XHTML 的编码实践),直到 IE 用户也能享受到 XHTML 的好处。
嗯……我对此思考了很久很久。从最初学习到现在 3 年的开发过程中。
我实际上很想编写 XHTML 1.1!!我曾经出于兴趣编写过。代码看起来非常漂亮,做起来并不难,而且思考如何正确使用模块化很有趣。
另一方面,如果您想生成可以在包括移动设备等各种设备上正确查看的页面,那么 HTML 4.1 是更好的选择。尽管如此,由于 XHTML 可以作为 HTML 提供服务,我更喜欢这样做。我不会过于松懈,我可以确保 IE 显示代码(即使在版本 5 中,据我测试),并且如果我编写更复杂的页面(例如在 CMS 中),可以更容易地将页面转换为真正的 XHTML。
由于我在日本生活和工作,国际化也是一个问题(参见 ALA → http://www.alistapart.com/articles/worldgrowssmall/,我发现这篇文章很有启发性,还有 → http://www.alistapart.com/articles/understandingprogressiveenhancement)。
最终,这是一个个人决定,但我相信也是一个商业决定。我工作的公司使用一个用 HTML 4.01 构建的系统,无法更改,也无法编写规范代码(出于商业原因)。我个人总是编写 XHMTL 1.0 转化版本,这样我就可以将其作为 HTML 提供服务,而不会感到内疚。
好吧,做出自己的决定吧 ^-^
自从我意识到验证和编写规范代码的重要性以来,我一直使用 XHTML 1.0 Strict(这有点令人尴尬,因为时间并不长,所以我仍在改造一些我的网站)。
我认为现在并没有什么区别,只要您编写漂亮的代码。:) 但是,我认为 XHTML 将成为未来的标准,因此在构建网站时展望未来并没有坏处,尤其是在 Joshua 上面所说的,XHTML 是向后兼容的。
我必须说,我仍然发现这些文档类型有点令人困惑。我们的后端服务使用 HTML 4.01 过渡版,但前端客户端站点是 XHTML 1.0。我们的后端站点使用 iframe,所以据我了解,HTML 4.01 过渡版是允许使用 iframe 的最佳选择?
@Jason,
你说得对,XHTML 有一天可能会消失。认真看看 HTML 5 是个好主意,即使我认为它的文档类型很丑陋—— (<!DOCTYPE html>)
^-^
在这些评论中,没有人知道他们在说什么。所有说“哦,XHTML 因为它更简洁,更新”的人都不懂。您可以像 XHTML 一样编写 HTML 4.1(无需使用 />,工作量更少!)。
只有 Felix Jimenez 知道自己在说什么。
始终使用 XHTML 严格模式。
使用 XHTML 的好处究竟是什么?谁能用非技术语言解释一下?
我正在考虑出于所有不使用 XHTML 1.0 的技术原因而回到 HTML 4.01。在我学习 Web 开发时,XHTML 1.0 风靡一时。W3C 甚至表示永远不会有新的 HTML 版本,并且 XML 将成为未来。所以我一开始是用 HTML 4 编码,然后在 XHTML 严格模式成为新事物时迅速切换到它。
现在我们有了 HTML 5 和 XHTML 2。
但 XHTML 我喜欢的一点是它强制开发人员关闭标签,并且语法规则更简单、更一致。但是,这些是支持 XHTML 1.0 的唯一原因,因为如果它作为 XML 而不是 HTML 提供服务,实际上没有人会看到它(感谢 IE)。
是否有关于如何为每种文档类型编写代码的资源?我必须承认,我刚刚玩过文档类型,从未真正理解一种文档类型与另一种文档类型有何区别。听起来,如果 XHTML 是向后兼容的,并且是事物发展方向,那么我们是否应该只学习它,并在 HTML 最终消失时让它消失?
如前所述,Internet Explorer 甚至没有将 XHTML 作为 XHTML 解析,而且大多数人甚至没有利用其相对于 HTML 的优势。99% 用 XHTML 编写的网站可以用 HTML 4.01 编写并仍然可以工作。
重申一下,Internet Explorer 不支持 XHTML!!!(它不支持“application/xhtml+xml” MIME 类型)。
大多数人忽略了一个简单的事实,即 XHTML 是 XML,HTML 不是——人们认为 HTML 是 XML,因为它看起来很相似……他们错了!
除了语法上的明显差异外,使用 XHTML 提供的唯一真正好处是可能集成其他 XML 命名空间——由于 IE6/IE7 中缺乏对 XHTML 的大量支持,因此没有人真正利用这一点。
XHTML 1.0 是 W3C 的官方推荐——使用 XHTML 1.1 毫无意义——它提供的只是语法方面的一些细微变化。(哦,它还有 ruby 注解……没有人使用这些!)
事实上,如果不是每个人都加入潮流,XHTML 1.0 现在会不受欢迎得多。HTML 4.01 仍然完美无缺,我更喜欢用它编码……我的个人网站使用 XHTML,因为我懒得删除 WP CMS 中的所有自闭合标签!
大多数认为自己正在使用 XHTML 的人实际上并没有。由于他们将页面作为“text/html”提供服务,因此它们将以这种方式解析……
@Chris——你在哪里听说 IE8 支持 XHTML?据我所知,它与 IE7 相同,不支持“application/xhtml+xml” MIME 类型。
如果有人真的相信在日常网站创建中使用 XHTML 1.0 比 HTML 4.01 更好,那么我很乐意听听你的论点……我很感兴趣!
如果您将 XHTML 作为 Text/HTML 而不是 XHML 提供服务(请检查您的代码),那么您不妨使用 HTML 4.01。虽然使用正确的 XHTML 有好处,但将 XHTML 作为 Text/HTML 使用绝对没有任何好处……事实上,我认为它是不合法的 HTML 4.01!
顺便说一句,我曾经用 XHTML 1.0 Strict 作为真正的 XML 来标记我的网站,但是严格的错误处理(我可以处理,但客户和其他开发人员无法处理)以及 IE 的缺乏支持让我回到了更合适的 HTML 4.01。
哦,顺便说一句,它是 HTML 4.01 严格模式,而不是什么过渡版。
@John @Jason
我想知道使用 XHTML Strict(作为 text/html)如何帮助您编写正确的标记?您完全没有理由不能使用 HTML 4.01 严格模式编写干净、有效且语义化的标记……一点都没有。正如我上面提到的,如果您将 XHTML 作为 text/html 提供服务,那么您实际上是在创建具有无效 HTML 4.01 的网站。
在 链接文本,我们使用 XHTML 1.1,并使用正确的 CSS,我们的网站与 IE6/7、Firefox 3 和 Safari 3 兼容。我们喜欢干净的代码。