您当前位置: 主页 / Dog 博客 / 存档

严格来说

2004 年 12 月 1 日星期三 (下午 2:07 GMT)

XHTML 过渡型是开发者常用的 HTML 形式。但我不太确定为什么。正如 John Oxton 最近提到的,这是否有点偏离了重点?

XHTML 过渡型就是这样——一个过渡。它旨在帮助开发者从一个技术标准(HTML 4)迁移到另一个技术标准(XHTML 1 (Strict))。如果您固守于 HTML 4 的方式,这是一个很好的学习步骤,但不应将其视为最终目标。选择切换到任何一种 XHTML 格式,本身就意味着您已经选择了要以正确的方式去做。从过渡型开始以熟悉 XHTML 语法是可以理解的,但这只是一个折衷方案。

从实际角度来看,过渡型 XHTML 和严格型 XHTML 之间的区别仅仅在于前者允许比后者更多的标签和属性。这听起来可能更好,但从长远来看并非如此。XHTML Strict 剔除了我们试图摆脱的大部分表现层面的“垃圾”——将结构与表现分离是构建更好网页的关键。通过应用 XHTML Strict,我们有助于确保标记中尽可能少地存在表现层面的“垃圾”。

开发者可能选择过渡型 XHTML 的一个越来越站不住脚的原因是,他们可能有一种异常的、扭曲的需求来兼容旧的、很少使用的浏览器。表现层面的元素可能在 Netscape 4 等浏览器中产生更好的表现,但使用这些元素将不利于您网页的效率,甚至可能不利于可访问性。

另一个原因可能是,如果您正在与其他知识水平较低的人一起工作,甚至完全将您的代码交给其他人(例如客户),而他们想随意添加/修改/篡改它。但在这些情况下,根本没有必要使用 doctype(因为无 doctype 的怪异模式本质上是为那些不知道自己在做什么的人准备的)。

但我们假设在大多数情况下,我们不会将我们的达芬奇作品交给一个拿着蜡笔的疯狂学步儿童。而且,我们假设网页设计的最佳方法是尽可能多地分离结构和表现,因为,是的,就是这样。那么,唯一的明智结论不就是严格型 XHTML 是最佳选择吗?

评论

评论1

XHTML 1.0 过渡型只是 XML 中描述的 HTML 4.01 过渡型的等价物。仅此而已。有些人(错误地)给它贴上了不同的标签,但那是另一个问题。

2004 年 12 月 1 日星期三下午 2:26 GMT,Anne 如是说。

评论2

如果由我来决定,我会将“Strict”(严格)重命名为“Regular”(常规),因为它绝不是“strict”(严格)的。它在内容/样式分离方面更严格,但这(tm)是一件好事!

2004 年 12 月 1 日星期三下午 2:39 GMT,Gabriel Mihalache 如是说。

评论3

我必须承认,我曾有一段时间使用 XHTML 过渡型。我这样做是因为我实际上是从表格布局迁移到 CSS 布局。我发现,并且我认为很多人也会发现,仅仅通过更改 doctype,您的代码通常仍然是有效的。

2004 年 12 月 1 日星期三下午 4:50 GMT,mike burnard 如是说。

评论4

观点很好。感谢这记“警钟”。我需要在所有页面上开始使用 Strict。

确实,Transitional 只是一个“清理干净”的 HTML 4。仅此而已。

Strict 绝对是最佳选择。

2004 年 12 月 1 日星期三下午 6:38 GMT,Matthom 如是说。

评论5

使用 XHTML 过渡型的一个重要原因是,如果您要将文档以“text/html”格式提供。根据 W3C 关于该主题的说明 [http://www.w3.org/TR/xhtml-media-types/],XHTML Strict 版本不应以“text/html”格式提供。当然,我认为如果您要以“text/html”格式提供,使用 HTML 而不是 XHTML 会更好。

2004 年 12 月 1 日星期三下午 6:40 GMT,Simon Jessey 如是说。

评论6

正如 Simon (Simon Jessey) 指出的那样,除非你能将 XHTML Strict 以 'application/xhtml+xml' 格式提供,否则使用 XHTML Strict 也没有多大意义。即使你能以正确的媒体类型提供,IE6 也会在遇到它时崩溃。虽然 Firefox 表现不错,但我们还没有到可以放弃支持 IE 的地步。

如果您准备放弃 IE6,我完全同意 XHTML Strict 是最佳选择。否则,为什么不编写良好、语义化的 HTML,去除表现层面的冗余,也避免 XHTML 过渡型的标签乱码呢?

2004 年 12 月 1 日星期三下午 7:51 GMT,Simon 如是说。

评论7

那么你是否会把这个网站改成 XHTML Dog?或者也许只是 Strict Dog?抱歉,我忍不住了。

2004 年 12 月 1 日星期三下午 9:23 GMT,Jim Cook 如是说。

评论8

您可以“MAY”将 XHTML 1.0 作为 text/html 提供。您“SHOULDN'T”将 XHTML 1.1 作为 text/html 提供……这是 W3C 的好文档所说的。

话虽如此,但整个内容类型讨论似乎对我来说现在相当无关紧要,因为目前没有人对内容类型做任何有趣的事情。也许如果存在任何实际差异,我会关心。在那之前,我将 XHTML 视为 HTML 的 XML 化版本。

2004 年 12 月 1 日星期三下午 10:06 GMT,Gabriel Mihalache 如是说。

评论9

我需要 noshade 属性。此外,我喜欢 Transitional,我看不出为什么一种比另一种更优越。我近期看不到自己会切换到 Strict。

2004 年 12 月 1 日星期三下午 10:42 GMT,Dante Evans 如是说。

评论10

我仍然使用 Transitional 有两个原因……<iframe> 在某些情况下非常方便,以及 <a target="_blank"> 用于某些链接…

2004 年 12 月 1 日星期三下午 10:43 GMT,k 如是说。

评论11

我很想开始使用 Strict,根据我的阅读,这似乎是更好的工作方式。当然,最终我也会做到的。这种 application text/xml/html 的东西似乎到处都有。我还没有完全研究这个问题并决定要做什么,所以现在我将坚持使用 Transitional。

2004 年 12 月 1 日星期三下午 11:24 GMT,Tom 如是说。

评论12

就评论第十条而言,您可以使用 JavaScript 重新创建 target 属性(http://www.sitepoint.com/article/standards-compliant-world/),对我来说,这似乎是一个很好的前进方向,因为它能够很好地降级,并且在 Lynx 文本浏览器等环境中也能很好地工作。至于 iFrames,可以使用 CSS 以某些方式轻松地重新创建它们,还是我错过了重点?

2004 年 12 月 1 日星期三下午 11:36 GMT,John Oxton 如是说。

评论13

>我仍然使用 Transitional 用于… <a target="_blank"> 用于某些链接…

<a target="_blank"> 就是新的 </blink>

2004 年 12 月 2 日星期四凌晨 3:21 GMT,robertm 如是说。

评论14

“确实,Transitional 只是一个‘清理干净’的 HTML 4。仅此而已。”

不。XHTML 1.0 过渡型完全对应于 HTML 4.01 过渡型。它并没有以任何方式被“清理干净”。XHTML 比相应的 HTML DTD“更严格”的神话很难消除。XHTML 1.0 仅仅是 HTML 4.01 作为 XML 应用程序的重述。它没有增加或删除任何内容。它甚至与 HTML 4.01 具有相同的三个 DTD 格式。

从过渡型 doctype 迁移到严格型 doctype,无论是 HTML 4.01 Strict 还是 XHTML 1.0 Strict,都比从一个 HTML4 doctype 迁移到相应的 XHTML1 doctype 迈出了一大步。您需要学会以完全不同的方式看待标记,即它的目的是标记文档结构——而不是控制页面如何在访问者的监视器上渲染。

我完全同意鼓励那些还没有这样做的人学习如何使用严格型 doctype,但只要 XHTML 实际上没有用(即,直到微软破产——别指望),我建议使用 HTML 4.01 Strict。这是具有合理浏览器支持的最现代的 doctype。即使是 IE6 也支持其中大部分。

2004 年 12 月 2 日星期四上午 6:50 GMT,Tommy Olsson 如是说。

评论15

另外,有时您必须使用 iframe,我知道这很糟糕,但在一个大型网站上,有许多不同的环境,这是唯一的选择。Strict 不支持 iframe,但 Transitional 支持。因此,只要有 iframe 的需求,就坚持使用 Transitional。

2004 年 12 月 2 日星期四上午 9:04 GMT,Jens Wedin 如是说。

评论16

我不得不同意 k 的观点——许多人选择使用 XHTML 1.0 Transitional 而非 Strict,因为 <a> 标签的 target 属性已被弃用。在一个有效的 XHTML Strict 文档中打开一个新窗口的链接有点麻烦……

2004 年 12 月 2 日星期四上午 9:26 GMT,Chris Rosser 如是说。

评论17

如果您必须忽略可用性最佳实践并强制在新窗口中打开链接,仍然不需要使用过渡型 doctype。正如 John 在评论 #12 中提到的,并在 A List Apart 的文章“Accessible Pop-up Links”(http://www.alistapart.com/articles/popuplinks/)中详细介绍的那样,您可以使用 JavaScript 来实现这一点。

2004 年 12 月 2 日星期四上午 11:55 GMT,Roger Johansson 如是说。

评论18

对于所有打开新窗口链接的人,我已经在我浏览器中禁用了此功能。如果这项技术被更广泛地了解(Gecko 中的隐藏属性),我想会有更多人同意。新窗口很烦人,并且会破坏标签式浏览。

我个人认为使用 XHTML 1.0 没有任何意义。只要您想具有可移植性,就使用 HTML 4.01。事实上,IE 支持它,不像 XHTML,不管有些人怎么说。如果您准备放弃 IE(就像我在我的个人网站上所做的那样),那就完全切换到 XHTML 1.1。

2004 年 12 月 2 日星期四下午 6:36 GMT,Sebastian Redl 如是说。

评论19

Gabriel Mihalache 在评论 8 中说:“您可以‘MAY’将 XHTML 1.0 作为 text/html 提供。您‘SHOULDN'T’将 XHTML 1.1 作为 text/html 提供……这是 W3C 的好文档所说的。”

该说明实际上说“text/html”仅可用于“HTML 兼容的 XHTML”。以“text/html”提供的 XHTML 不是 XHTML。它不会被当作 XHTML 处理。XHTML 应该由 XML 解析器处理,否则它会被完全不同地处理(实际上就是作为 HTML 处理)。

2004 年 12 月 2 日星期四晚上 8:40 GMT,Simon Jessey 如是说。

评论20

“Accessible Pop-up Links”的问题在于它依赖于页面完全加载后运行的 JavaScript。如果您想支持 IE,那么这似乎发生在所有图像加载之后。如果存在缓慢的资源和/或重载的服务器,用户将不得不等待很长时间才能执行 JavaScript 代码,然后他们才能单击链接并让它在新窗口中打开。我在我工作的公司写了一个轻量级的前端到我们的电子邮件系统,我使用弹出窗口来处理地址簿和文件附件等内容。保存所有数据然后转到新页面来选择地址簿项是没有意义的。这使得支持多个新备忘录或回复并保持一切同步变得非常困难。

现在,您别以为我认为在新浏览器窗口中打开“普通”链接总是合适的。我过去认为,如果它是一个指向您域之外站点的链接,您应该打开一个新窗口,但现在不再是这样了。然而,即便如此,有时也有恰当使用弹出窗口的情况。

2004 年 12 月 2 日星期四晚上 9:29 GMT,Tanny O'Haley 如是说。

评论21

回复 Sebastian Redl 的帖子,是的,打开新窗口会破坏标签式浏览。但有些网站管理员使用它来推广他们的联盟链接——通过打开一个新窗口,用户更有可能最终关闭新窗口并留在您的页面上,而不是继续浏览那个联盟页面而忽略您的页面。

2004 年 12 月 3 日星期五凌晨 3:17 GMT,hbdragon88 如是说。

评论22

我支持 Simon 和其他使用 iframe 的人!试试和 Adtech 谈谈!世界上一些大型新闻网站上的很多广告都使用 iframe 来显示广告(TheRegister ;))。
但是,没有理由不尽可能严格地编码,只在必要时才使用过渡型。

2004 年 12 月 4 日星期六上午 10:05 GMT,Claus Jacobsen 如是说。

评论23

使用 STRICT 使 IE6 以严格模式工作——这样我们就不用再处理,例如,盒模型 bug 了——它仍然存在于 IE6 的怪异模式中(使用 Transitional 时会开启)。

2004 年 12 月 4 日星期六下午 1:33 GMT,BugTomek 如是说。

评论24

抱歉,那不属实。XHTML 过渡型也会将 IE6 置于标准模式(此时盒模型工作正常)。使用 XHTML Strict 没有区别。

2004 年 12 月 5 日星期日凌晨 12:09 GMT,Chris Hester 如是说。

评论25

关于 MIME 类型和 XHTML 的话题。在我看来很清楚。我以 text/html 格式提供 HTML4.01 Strict 页面,如果(出于任何原因)我不能以 application/xhtml+xml 格式提供 XHTML 页面。

WaSP 质询 W3C
使用正确的 MIME 类型提供 XHTML
http://www.webstandards.org/learn/askw3c/sep2003.html

2004 年 12 月 9 日星期四上午 5:06 GMT,dean 如是说。

评论26

XHTML 本来就很愚蠢。我无法告诉您我看到过多少个使用 XHTML Loose 的网站,而 HTML Strict 是更可取的。

由于 XHTML 无法在所有浏览器中正确提供而不破坏缓存模型,因此它几乎毫无用处。HTML 4.01 Strict 才是王道,Patrick,您的网站应该编辑以反映这一点。

2004 年 12 月 24 日星期五凌晨 4:24 GMT,Neal 如是说。

评论27

你们都很棒!我一直在寻找一个很好的教程来学习 XHTML Strict,但所有教程都很糟糕,它们会告诉你“使用小写标签”之类的,然后又使用“”。这可能非常令人恼火。
但现在我找到了这个很棒的网站!我很高兴你们像我一样喜欢走在正确的道路上 :) 哦,写 HTML 的痛苦很快就会结束了。

2004 年 12 月 27 日星期一凌晨 2:12 GMT,lupinehunter 如是说。

评论28

我为我上一条评论中空的“ ”道歉。它本应该是“<body bgcolor="...">”。显然过滤器将其吞掉了:)

2004 年 12 月 27 日星期一凌晨 2:15 GMT,lupinehunter 如是说。

评论29

为这次辩论增加几点…

首先,即使 XHTML 过渡型支持与 HTML 相同的大多数标签,XHTML 作为一个整体也是 HTML 作为 XML 的重述,无论是 Strict 还是 Transitional,这意味着它现在是 XML,是一个全新的领域,需要更干净的标记实践,以便 XML 得到支持。这意味着,所有那些专有的微软 HTML 东西和其他浏览器东西在你迁移到 XHTML 时都不会让你通过验证或符合标准,如果那些元素或属性不是该标准的一部分。Transitional 只是比 Strict 支持更多的“HTML 东西”。但如果你要验证你的代码,两者都是一个重大的进步。

此外,尽管 W3C 推荐,但大多数浏览器支持以 HTML 标头(MIME)发送的网页的“标准视图”,这些标头分配给 text/html 或 XHTML MIME('application/xhtml+xml')以过渡型。然而,使用 xhtml MIME 和 doctype 意味着您的页面作为 xhtml 正常运行,因此会触发 Mozilla 和其他符合标准的代理中的讨厌的符合性错误,并且在您修复所有内容之前只会显示符合性错误(没有 MIME,您将看不到它)。这对于 Internet Explorer 尤其关键,因为它在收到正确的 XHTML MIME('application/xhtml+xml')时会崩溃,无论是 Strict 还是 Transitional。我在我的网站上为 ASP 用户提供了一个 hack,可以让你检测支持的 MIME,并在支持时回传 xhtml MIME。不要将其与 XHTML DOCTYPE 或元标签标记内容类型混淆,因为那些只支持服务器发送的内容类型,而服务器默认情况下通常是 text/html,所以你的页面在浏览器中永远无法真正作为真正的 xhtml 进行验证。Strict 格式也做同样的事情,非常相似,但确实需要 xhtml MIME 作为 xhtml。但同样,IE 6 在你发送 text/html 标头时会模拟该支持,尽管它在浏览器中不像 Mozilla 和其他代理那样作为 xhtml 进行验证。如果你将页面发送到 Mozilla(符合标准的代理),使用过渡型 doctype 然后是 Strict 格式,两者都使用正确的 xhtml MIME 标头和 doctypes,你会首先看到两者同样挑剔和严格,确保两种格式的 xhtml 都格式良好并作为 XML 文档进行验证。Strict 格式还会迫使你放弃很多 sloppy 的 HTML 实践,但也有一些已弃用的属性会导致你的页面在旧的代理中无法正常工作。我见过表单中“name”属性的丢失,页面锚点(哈希名称有问题),当然还有链接中的 target 问题。我个人认为任何 JavaScript 修复都是“修复”任何东西的糟糕选择,因为它们越来越多地被浏览器中的许多安全功能阻止和关闭。因此,我推荐并为我的项目使用过渡型 XHTML,因为浏览器尚未成熟,旧版本尚未“死亡”到可以迁移到 Strict 格式而不给各种在线受众带来一些问题。对我来说,Strict 目前弃用了太多关键的 HTML“东西”。而且,我们大多数在商界的人都知道,一天的时间或资金不足以让一群不了解情况的设计师花费必要的时间来将复杂的基于表格的设计迁移到非常严格的 xhtml 结构。目前这并不划算,因为可以更容易地迁移到另一种 xhtml 格式,并且仍然使用熟悉的 HTML。

2004 年 12 月 28 日星期二上午 9:31 GMT,Mitchell 如是说。

另请参阅

^ 顶部

SiteGround: Fast, reliable, recommended hosting.