01|如果你只记得 XHTML 很严,那你会错过它最迷人的地方

今天再提 XHTML,很多前端的第一反应都差不多:

  • 教条
  • 形式主义
  • 过时
  • 一条最后没走通的老路

从结果上看,这些标签不算冤。

可如果你只记住结果,你就会把整件事看轻。

因为 XHTML 当年最可怕的地方,不是它太死板。

而是它看起来太像正路了。

第三篇真正的爆点也在这里:

它不是一条一看就要输的歪路。它是一条很多聪明人当年真的会下注的正路。

想象一下那个历史现场。

浏览器大战刚打完。

HTML 里到处是私货。

作者代码像工地。

浏览器兼容像赌运气。

这时候如果有人站出来说:

“别再这么野生下去了,我们用更严格、更清楚、更现代的 XML 体系,把 Web 拉回秩序。”

你很难不心动。

所以这一篇要讲的,不是“XHTML 为什么很好笑”。

而是:

为什么它当年真的很有吸引力,甚至像一场体面的纪律革命。


02|W3C 当时看到的,不是抽象混乱,而是一整个平台越来越像失控工地

浏览器大战那几年,HTML 表面上在扩张,底下却越来越难看。

你会看到:

  • 表现性标签越来越多
  • 浏览器各写各的
  • 作者越来越靠试错和经验拼页面
  • 规范和实现越来越像两套平行宇宙

如果你站在 W3C 或很多严肃作者的视角,这套东西确实很难让人安心。

因为它不像一门稳态语言。

它更像一片已经有人抢地盘、有人临时搭棚、有人偷偷改路的野市场。

这时候 XML 的诱惑力就上来了。

它代表的不是一个新名词。

它代表的是一整套秩序幻觉:

  • 语法更严格
  • 结构更清楚
  • 解析更确定
  • 验证更可靠
  • 扩展机制更像工业品

翻译成白话,就是:

“这回总算可以把 Web 从草台班子,往正规军带了吧?”


03|XHTML 1.0 最聪明的一招,是让所有人以为这只是一次“文明升级”

XHTML 1.0 最厉害的地方,不在技术细节。

在包装。

它没有说:

“HTML 不行了,你们全部改宗。”

它说的是:

这是 HTML 4 在 XML 1.0 下的 reformulation。

这句话非常会说话。

它不像革命。

它像整理内务。

像是在告诉作者:

  • 你熟悉的东西还在
  • 只是语法更整齐了
  • 只是规则更明确了
  • 只是语言终于长得像现代工程该有的样子了

所以很多人当时看 XHTML 1.0 的感觉,并不是“我被要求搬家”。

而是:

“终于有人开始收拾这个越来越乱的 Web 了。”

从叙事上说,XHTML 1.0 像第一阶段的纪律整风。

它不吓人。

它甚至让人觉得体面。


04|真正让这条路开始变硬的,是 Web 不是白纸,它已经住满了人

问题出在这里。

XHTML 这套理想有一个默认前提:

平台还有机会整体改造。

可 Web 到那时候,已经不是一张白纸了。

它是一个已经活着很多年、挂着无数旧页面、旧工具、旧 CMS、旧作者习惯的旧世界。

这就意味着,一旦你想推严格路线,你要求的就不只是“以后新页面写规范一点”。

你其实是在同时要求:

  • 作者改习惯
  • 工具改输出
  • 教程改口径
  • 浏览器改处理方式
  • 整个内容生产链一起换挡

这还只是表层。

更深的一刀在于:

XML 那种“出错即失败”的精神,和 Web 平台的现实职责天然冲突。

因为浏览器不只是服务写对代码的人。

它还服务:

  • 写错页面的人
  • 用老工具的人
  • 接手旧系统的人
  • 最关键的,那些只是想把页面看出来的用户

也就是说,XHTML 难的从来不只是“多写几个引号和斜杠”。

真正难的是:

它要求一个已经铺开的旧互联网,先学会守纪律,再继续活。


05|真正让很多人开始害怕的,不是 XHTML 1.0,而是把页面当 XML 真跑起来之后的现场

这条线最有戏的地方,在于纸面理想一旦碰到真实浏览器,气氛立刻就变了。

XHTML 1.0 阶段,很多人还可以把它理解成“整洁版 HTML”。

可一旦你认真进入 XML 交付模式,问题就开始变得具体而刺耳。

在 XML 世界里,良构性错误不是“浏览器帮你兜一下”。

而是:

页面可能直接以 XML 错误的方式失败。

这和 HTML 世界的默认直觉完全相反。

HTML 世界里,作者写坏标签,浏览器往往还会想办法把东西拼出来。

XML 世界里,作者写坏标签,用户看到的很可能不是“勉强能看”的页面,而是赤裸裸的错误。

这一下,抽象的路线之争突然变成了一个任何站长都能感到肉疼的问题:

你到底要一门更体面的语言,还是一张不至于因为一个细小错误就突然断电的网?

这就是 XHTML 从“很有吸引力”开始转向“有点吓人”的关键回合。


06|XHTML 2.0 一出场,事情更像“不是打扫老房子,而是准备整片拆迁”

很多人今天把 XHTML 当成一个整体来记。

其实这条线里,气氛差异很大。

XHTML 1.0 更像把 HTML 换成 XML 外衣

它更像:

把熟悉的 HTML 重新表达成 XML 形式。

XHTML 2.0 更像想按新纪律重画街区

它给人的感觉就不一样了。

它不再只是“把老房子打扫干净”。

它更像是在说:

“这套旧房子的问题太多了,我们干脆按新规重画街区吧。”

这时候平台的警觉就上来了。

因为 Web 最害怕的,不是局部翻新。

它最害怕的是整体迁移。

尤其当这个平台上已经有太多东西在跑、太多人靠它吃饭、太多工具链已经把旧写法写死时,任何“请大家集体切换纪律”的提案,都会立刻变成政治问题。

作者会问:

  • 我现有页面怎么办
  • 我现有工具怎么办
  • 我现有部署链怎么办
  • 如果我写错一个地方,用户是不是就直接看不到了

所以 XHTML 2.0 真正碰到的平台底线,不是审美。

是迁移成本。


07|2009 年那纸 FAQ 很像一封认输信:XML 化的表达可以留,XHTML 2 这条路不走了

2009 年,这场路线之争终于出现了一个非常明确的组织动作。

W3C 在 FAQ 和公告里基本把话说透了:

XHTML 2 Working Group 的 charter 到年底不再续。

如果只看这一句,你会以为这只是组织收尾。

其实不是。

这是一场路线上公开收口。

更要命的是,W3C 在 FAQ 里把这件事分得非常清楚:

  1. XHTML 作为 HTML 的 XML serialization,这条线还会继续
  2. XHTML 2 作为 Recommendation-track 路线,这条线停

这段区分特别值得反复咂摸。

因为它等于在官方文字里承认了:

XML 化的表达方式可以保留,但“用 XHTML 2 带领 Web 进入下一阶段”这件事,现实已经不买单了。

这不是因为理念突然错了。

而是因为现实投票了。

浏览器在做什么?

在做更现实、更兼容、更贴着 HTML 旧世界长出来的东西。

开发者在依赖什么?

在依赖能在主流浏览器里共同跑起来的东西。

平台在往哪里长?

在往 Web applications 的方向长。

到这个时候,路线能不能活,已经不只看它是否优美。

还看它有没有现实实现、现实迁移路径和现实生态接应。


08|所以 XHTML 输掉的,不只是一条路线,而是一种治理方式

如果你只总结成:

“XHTML 太严格,所以输了。”

那你还是把这场戏看轻了。

更深的一层是:

它输掉的是一种治理哲学。

那套哲学可以概括成一句话:

先把纪律立起来,再要求现实尽量跟上。

这套思路在很多系统里很好用。

可在 Web 这种开放平台上,它成本太高了。

因为 Web 不是封闭生态。

你没法靠一纸命令推动整体升级。

你只能在这些东西之间不断讨价还价:

  • 老页面
  • 老浏览器
  • 老工具
  • 新需求
  • 多家实现者
  • 还在继续访问这些页面的用户

从这个角度看,XHTML 的失败并不丢人。

它是一次很认真的理想主义实验。

它认真地相信:

  • 结构应该更清楚
  • 语法应该更严格
  • 错误应该更明确
  • Web 应该长出更强的秩序

这些愿望一点都不低级。

问题只是,开放 Web 这台机器现实太重。

它重到:

正确的理念如果找不到现实迁移路径,也一样很难活。


09|W3C 想救的是秩序,可开放 Web 早已不是白纸

W3C 当年不是犯傻。

它是真的想把 Web 从浏览器大战留下的脏现实里拉回秩序,想让 HTML 这套东西更像一门有纪律、可验证、可持续演进的现代语言。

这套冲动一点都不荒唐。

问题只是,开放 Web 到那个时候,已经不是一张还能整体重画的白纸了。

它是一座已经住满人的旧城。

你当然可以画出一套更整齐的新城规划。

可如果那套规划默认旧城最好整片推倒、住户最好集体搬迁、所有人最好从明天开始严格守新规,那它就很难真的落地。

所以 XHTML 的失败,归根结底不是因为它不够好。

而是因为它太相信:

只要纪律足够正确,现实最终会愿意跟上。

而开放 Web 后来给出的答案却是:

很多时候,你得先承认现实活着,理想才有资格谈下一步。


编者注(事实核对):文中关于 XHTML 1.0HTML 4XML 1.0 下的 reformulation、2009XHTML 2 Working Group 停止续 charter、以及 W3C 对“XML serialization of HTML”与“XHTML 2 路线”做明确切分,主要依据 XHTML 1.0 规范、W3C 2009 年 FAQ 与停更公告。正文对“严格 XML 交付与 Web 容错习惯冲突”的描述,是对这组材料在浏览器现实中的直接推论。


关键人物速览

  • Tim Berners-Lee:虽然第三篇不是围着他展开,但 W3C 想把 Web 拉回更强秩序时,始终绕不开他所代表的那套“Web 应该如何演进”的原始权威。
  • Philippe Le Hegaret:W3C 管理层长期关键人物之一。2009 年关于 XHTML 未来的 FAQ 和路线收口,背后就有他这一侧的组织动作。
  • Ian Jacobs:W3C 公共沟通与标准推进中的重要人物之一。理解 W3C 当年如何向社区解释 XHTML 与 HTML 5 路线变化时,可以把他看作那套官方表述的一部分代表。

参考与延伸阅读

  1. XHTML 1.0 (Second Edition)
    https://www.w3.org/TR/xhtml1/

  2. XHTML 2 Working Group Expected to Stop Work End of 2009
    https://www.w3.org/news/2009/xhtml-2-working-group-expected-to-stop-work-end-of-2009-w3c-to-increase-resources-on-html-5/

  3. Frequently Asked Questions (FAQ) about the future of XHTML
    https://www.w3.org/2009/06/xhtml-faq.html

  4. XHTML 2.0 Working Group Note
    https://www.w3.org/TR/xhtml2/