HTML/XHTML 常见问题 =================== Flask 文档和示例应用使用 HTML5 。你可能会注意到,在许多情况下当结束标签 是可选的时候,并不使用它们,这样 HTML 会更简洁且加载更迅速。因为在开发者 中,关于 HTML 和 XHTML 有许多混淆,本文档试图回答一些主要的疑问。 XHTML 的历史 ---------------- 一段时间, XHTML 的出现欲取代 HTML 。然而,Internet 上几乎没有任何实 际的 XHTML (用 XML 规则处理的 HTML )网站。这种情况有几个主要的原因。 其一是 Internet Explorer 缺乏对 XHTML 妥善的支持。 XHTML 规范要求 XHTML 必须由 MIME 类型 `application/xhtml+xml` 来承载,但是 Internet Explorer 拒绝读取这个 MIME 类型下的文件。 虽然配置 Web 服务器来提供正确的 XHTML 相对简单,但很少有人这么做。这可能 是因为正确地使用 XHTML 会是一件痛苦的事。 痛苦的最重要的原因之一是 XML 苛刻的(严格而残忍)错误处理。当 XML 处理中 遭遇错误时,浏览器会把一个丑陋的错误消息显示给用户,而不是尝试从错误中恢 并显示出能显示的。web 上大多数的 (X)HTML 生成基于非 XML 的模板引擎(比如 Flask 所使用的 Jinja)并不会防止你偶然创建无效的 XHTML 。也有基于 XML 的 模板引擎,诸如 Kid 和 流行的 Genshi,但是它们经常具有更大的运行时开销, 并且不能直接使用,因为它们要遵守 XML 规则。 大多数用户,不管怎样,假设它们正在正确地使用 XHTML 。他们在文档的顶部写下 一个 XHTML doctype 并且闭合了所有必要闭合的标签( 在 XHTML 中 ``
`` 要 写为 ``
`` 或 ``

`` )。然而,即使文档可以正确地通过 XHTML 验证,真正决定浏览器中 XHTML/HTML 处理的是前面说到的,经常不被正确设置的 MIME 类型。所以有效的 XHTML 会被视为有效的 HTML 处理。 XHTML 也改变了使用 JavaScript 的方式。要在 XHTML 下正确地工作,程序员不得不 使用带有 XHTML 名称空间的 DOM 接口来查询 HTML 元素。 HTML5 的历史 ---------------- HTML5 规范的开发在 2004 年就以 “Web 应用1.0”之名由网页超文本技术工作小组 (Web Hypertext Application Technology Working Group),或 WHATWG(由主要 的浏览器供应商苹果、 Mozilla 以及 Opera 组成)启动了,目的是编写一个新的改 良的HTML 规范,基于现有的浏览器行为,而不是不切实际和不向后兼容的规范。 例如,在 HTML4 中 ``Hello`` 处理 得完全相同。然而,由于人们已然使用了诸如 ```` 的 XHTML-like 标签, 浏览器供应商在规范语法之上实现了 XHTML 语法。 在 2007 年,这个标准被 W3C 收入一个新的 HTML 规范,也就是 HTML5 。现在, 随着 XHTML 2 工作组解散和 HTML5 被所有主流浏览器供应商实现,XHTML 正在失去 吸引力。 HTML vs. XHTML ----------------- 下面的表格给你一个 HTML 4.01 、 XHTML 1.1 和 HTML5 中可用特性的简要综述。 (不包括 XHTML 1.0 ,因为它被 XHTML 1.1 和几乎不使用的 XHTML5 代替 ) .. tabularcolumns:: |p{9cm}|p{2cm}|p{2cm}|p{2cm}| +-----------------------------------------+----------+----------+----------+ | | HTML4.01 | XHTML1.1 | HTML5 | +=========================================+==========+==========+==========+ | ``value`` | |Y| [1]_ | |N| | |N| | +-----------------------------------------+----------+----------+----------+ | 支持 ``
`` | |N| | |Y| | |Y| [2]_ | +-----------------------------------------+----------+----------+----------+ | 支持 ``