21

我真的不明白对 XHTML 严格的迷恋。内联 JavaScript 通常需要大量的转义符,以使其与 XHTML 兼容并与 MSIE 5 和 6 半向后兼容。然后是用户输入的强迫症不足,以确保您不会错过任何非法字符. 这似乎比它的价值更多的努力。没关系,几乎每个与我一起工作的开发人员都忘记确保从服务器返回的内容类型被重置为 XHTML 页面从 text/html 到 application/xhtml+xml。

希望我知道博主的名字,但其他人指出,大多数所谓的 XHTML 兼容网站和开源软件包实际上并不是因为最后一个问题,忘记正确设置内容类型标题。

我希望了解 XHTML 为何有用,或者构建足够多的论据以防止它在我有影响力的未来项目中被使用。

4

13 回答 13

23

XHTML1 vs HTML4 和 Strict vs Transitional 是完全正交的问题。

XML 可能不会给今天的浏览器带来任何巨大的优势,但在服务器端,使用 XML 处理文档比尝试解析老式 SGML 的混乱情况要容易一个数量级,除了不是真正的 HTML4。

将自己限制在 [X]HTML Strict 本身并没有任何意义,只是它不鼓励使用您不应该使用的旧的、不易维护的技术。

内联 javascript 通常需要大量的转义来使其与 XHTML 兼容

只要您不使用字符 < 或 &,您就可以逃脱而无需任何转义。'// < [CDATA[' 并不比 '< !--' 是在过去。

无论如何,将脚本保持在外部更易于管理;您不想内联做任何重要的事情。

然后是用户输入不够强迫症以确保您不会错过任何非法字符的问题。

带外字符在 HTML4 Transitional 中与在 XHTML1 Strict 中一样无效。

如果您接受用户提交的 HTML 并且没有使用足够的细齿梳来检查/转义它以防止格式错误,那么您遇到的问题比仅仅遵守文档类型要大得多。您将让注入黑客通过并使您的站点容易受到跨站点脚本安全漏洞的攻击。

忘记确保从服务器返回的内容类型被重置为 XHTML 页面从 text/html 到 application/html+xml。

这不是“忘记”,而是故意的:今天为 application/xhtml+xml 提供服务并没有那么大的意义。要考虑到 IE,您必须嗅探 UA,然后确保您了解在两种解析模式中弹出的 CSS 和 JavaScript 差异……您可以这样做来证明您的技术实力,但它并没有真正让您得到任何东西.

将 XHTML 用作遗留 HTML 可能并不理想,但它可以让您保留更简单、更可处理的 XML 语法(以及与其他 XML 语言(如 SVG)的潜在互操作性),同时仍然对浏览器友好。

人们抱怨格式正确的错误的挑剔,但是让这些错误立即被你修复它们比让它们静静地留在那里,准备绊倒一些未来的浏览器要好得多。

于 2008-11-10T19:22:29.813 回答
7

有一篇很棒的关于 XHTML 的使用@Beware of XHTML的帖子。

希望它有所帮助,布鲁诺·菲格雷多

于 2008-11-10T18:42:58.740 回答
5

XHTML 1.0 Strict 试图解决四个问题:

  1. XML 是 W3C 技术,而 HTML4 没有使用它。不是你的问题。

  2. 在表现主义方面,严格寻求比过渡更纯粹的理论。但这不是XHTML 与 HTML 的问题

  3. XML 解析器应该更简单。(不完全正确;处理 DTD 部分的代码相当复杂。)现在,您可以使用现成的 XML 和 HTML 解析器,所以这不是您的问题。(旁白:移动论点完全是假的。)

  4. application/xhtml+xml(虽然不是有效的 XHTML 1.0 Strict!)允许您混合其他词汇表。如果你今天想使用内联 MathML 或 SVG,这就是今天使用 application/xhtml+xml 的主要原因。然而,HTML5 工作的方向是使在 text/html 中使用 MathML 和 SVG 成为可能。

于 2008-11-11T13:01:06.633 回答
4

XHTML 很有用,因为它比 HTML 更容易创建一个简单的转换样式表或为它滚动您自己的解析器。

于 2008-11-10T18:40:36.700 回答
3

您是否必须使用程序解析您的 HTML,或者进行一些测试?然后,使用 XHTML。

对于其他一切,HTML 4.01(严格的、松散的、过渡的,等等)是完全“标准”的,而且“麻烦”更少。

于 2008-11-10T18:49:19.507 回答
2

XHTML 使您能够像 SVG(可缩放矢量图形)一样进行高级渲染,它本身是一种 XML,但可以通过 XML 命名空间扩展轻松嵌入 XHTML,而无需 <embed> 或 <object>。不幸的是,只有 Firefox 和 Safari 支持它。对不起 IE6 用户。

有关 SVG 的更多信息,请访问http://en.wikipedia.org/wiki/Svg

于 2008-11-10T20:02:24.880 回答
0

XHTML 使 HTML 与我们世界中所有其他基于 xml 的结构正交,这有两个主要好处。

我们在处理 xml 时使用的设计模式可以应用于 html。

软件工具同上。

于 2008-11-10T18:41:37.510 回答
0

XHTML 具有 xml 的优点。但是为什么是严格的变体呢?

我看到与不推荐使用的功能有一些相似之处。您仍然可以在这个版本中使用它们,但它们可能会在下一个版本中被删除。所以我认为过渡版本已被弃用。它仍然有效,并且适用于几个版本,但如果您想为未来构建,请使用严格版本。

于 2008-11-10T18:50:12.267 回答
0

Strict 旨在通过使两者更难混合来形式化内容和样式之间的分离。Elliotte Rusty Harold 在他的一本书中对 XHTML 有很好的论述,这里是关于“ Why XHTML ”的相关摘录。

于 2008-11-10T18:50:47.303 回答
0

我看到 XHTML 解决的唯一问题是用户使用 Safari 的“问题”:我不知道这个 bug 是否仍然存在,但是当我们最后一次被要求用 XHTML 编写时,我们遇到了一个导致XHTML 无法与 Safari 一起使用。在 XHTML 中,锚标记中不允许使用以下 URL,因为与符号没有转义:

http://www.example.com/page.php?arg1=val1&arg2=val2

所以你要做的就是用 & 替换它 像这样:

http://www.example.com/page.php?arg1=val1&amp;arg2=val2

但 Safari 转换 & 到 & 所以你得到这个网址:

http://www.example.com/page.php?arg1=val1&#38;arg2=val2

...就 PHP 而言,井号结束 URL。我知道有一些丑陋的 hack 允许您以其他方式传递两个变量,但是如果 XHTML 会迫使您使用丑陋的 hack,那么您最好没有它。

于 2008-11-11T09:13:06.610 回答
0

就个人而言,我喜欢 XHTML 的概念:比我们看到的大多数 HTML 更干净,更易于解析和验证。和大家一样,我开始编写 XHTML 页面。顺便说一句,我认为内联 JavaScript 没有问题,如果您将代码放在 CDATA 中,则无需转义。幸运的是 IE5 有点脱离了浏览器领域,就像 Netscape 4 迫使我们写/ >而不是/>,有时我仍然会在纯 XML 中看到...

现在,我已经阅读了许多文章,例如 Bruno 所链接的一篇文章,其中有很多很好的论据反对它在大多数情况下的使用。基本上,它说大多数浏览器不仅为严格的 XHTML(作为 XML 服务)做好了准备,将 XHTML 作为 HTML 服务没有多大意义,而且无论如何它在大多数站点中都不是很有用。

看看上面的论点:它们是完全有效的,能够将 MathML 或 SVG 直接放在页面中,用 XSLT 解析器转换 XML,用 XML 解析器处理页面,这真是太好了。

但你多久这样做一次?解析页面是最终用户最常遇到的问题,可以使用好的 HTML 解析器。鉴于能够管理 MathML、SVG 或 XSLT 的浏览器数量众多,与庞大的 Internet 相比,对 Intranet 的需求更大。

您可以拥有一个电子商务、博客或论坛,它们会输出良好的 XHTML 页面。写描述、文章或消息的人插入<p><p><p>跳过一些行,当它不是<p/>或其他一些异国情调的结构时......

我相信 XHTML,但我认为我不会再将它用于我为我的站点所做的小页面。我将使用 HTML 4 和编写良好的代码(引用的属性、关闭标签,即使是可选的,等等)。
毕竟,如果 W3C 在 HTML 5 中工作,那是有原因的:HTML 仍然有前途,否则它就会被 XHTML 2 淘汰。

于 2008-11-11T09:22:24.953 回答
-1

XHTML 根据定义是 XML,与 HTML 不同。

这意味着您可以用它做一些时髦有用的事情,例如轻松验证和解析它(因为您知道它是 XML,因此可以使用无数可用的工具)。

此外,极客喜欢让事情“更正确”;-)

于 2008-11-10T18:42:43.077 回答
-1

这是一个全球标准问题

这不仅仅是关于 xHTML,而是关于世界上所有的标准。你需要让事情更清楚,从一个版本到另一个版本。

xHTML 是方形的,它促使编码人员为代码添加语义价值。它完全兼容 XML,因此更易于解析、样式化等。

请记住,代码不仅适用于编码员,机器人也适用于机器。在 10 年内,创建浏览器或库的人不会希望为旧的 HTML 处理实现相同的复杂规则,而是希望得到尽可能干净的东西。

搜索引擎需要依靠一些东西来建立价值之间的语义联系,因此最好只有一种简单的方法来做到这一点。

而且我不是在谈论屏幕阅读器......

标准,首先是关于走向一种适合每个人需要的独特开放解决方案。不仅仅是添加新的闪亮功能。

于 2008-11-10T18:51:20.000 回答