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 里把这件事分得非常清楚:
XHTML作为HTML的 XML serialization,这条线还会继续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.0 是 HTML 4 在 XML 1.0 下的 reformulation、2009 年 XHTML 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 路线变化时,可以把他看作那套官方表述的一部分代表。
参考与延伸阅读
XHTML 1.0 (Second Edition)
https://www.w3.org/TR/xhtml1/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/Frequently Asked Questions (FAQ) about the future of XHTML
https://www.w3.org/2009/06/xhtml-faq.htmlXHTML 2.0 Working Group Note
https://www.w3.org/TR/xhtml2/