在一次采访中,我被问到一个我从未考虑过的问题,即“我们已经拥有了满足编写网页要求的HTML,那么XHTML有什么必要呢?”
我搜索了很多并阅读了很多文章,但我无法正确理解为什么会引入XHTML。请给我解释一下。
<ul>
<li>one
<li>two
<li>three
</ul>
HTML是正确的,但不是正确的XML。如果你想解析它,你需要知道ul
元素必须关闭,但li
不需要。
XHTML还允许您嵌入其他XML方言,如MathML、Ruby、SVG等。(如果需要,也可以将XHTML嵌入其他XML方言中。)
如果您只是“制作网页”,则不一定需要XHTML。但如果您需要以编程方式生成页面,则可能会发现用于生成XML的工具比生成HTML的工具更好。
我写这篇文章的目的是询问为什么那三篇提到浏览器一致性和格式良好的 HTML 的帖子被投票否决了?
众所周知,HTML 是一个行业标准。浏览器被实现成按照 HTML 标准描述的方式呈现标记内容。不幸的是,在 HTML 中有些地方没有被定义得很好:如果用户忘记了关闭标签会发生什么?如果引用的图像找不到该怎么办?一些浏览器使用 'alt' 标签来作为占位符文本项,而有些浏览器则将 'alt' 标签显示为工具提示。浏览器中著名的“怪癖”模式就是由此产生的。因此,同一个网页可能会在不同的浏览器上展示不同的效果。
另外,随着 HTML 的使用增长,还存在另外一个问题:它是不可扩展的,即无法添加用户自定义标签。
XHTML 解决了上述问题:
XHTML 对结构有明确的规定,这些规定可以被程序自动实施。检查各种在线的“XHTML 验证器”,它们可以告诉您您的 XHTML 是否格式良好(并突出显示问题区域)。由于这些严格的规则,您的页面几乎可以保证在实施 XHTML 的所有浏览器上看起来都是相同的。
[注意] 如果您想验证上述内容,请参考文本“Head First XHTML 和 CSS”。
来自维基百科:
XHTML文档需要严格符合标准,因此可以使用标准的XML工具进行自动化处理。这与HTML不同,后者需要一个相对复杂、宽松且通常是定制化的解析器。在许多方面上,XHTML可以被认为是HTML和XML的交集,因为它是HTML在XML中的重新表述。
使HTML符合XML标准允许更加一致地解析页面。例如,在HTML中,您可以允许标签顺序混乱,如:<b><u>test</b></u>
,但现在不行了,它们必须按照打开的顺序关闭。这样的技术使DOM解析(现在在AJAX中广泛使用)更容易。
我相信你一定遇到过来自W3的这篇文章。从那篇文章中我们可以学到很多东西。简单来说,XHTML除了拥有HTML标签集合外,还遵守了XML规则。
最重要的区别:
* XHTML elements must be properly nested
* XHTML elements must always be closed
* XHTML elements must be in lowercase
* XHTML documents must have one root element
那么,我应该使用它吗?
像往常一样,“取决于情况”。
HTML5呢?它与XHTML竞争吗?
不,它并不是这样的。HTML5有两种序列化方式,一种是HTML,另一种是XML。好处是现在两种方式都有严格的解析规则。无论你使用哪种方法,在所有浏览器中都会得到可预测的行为。然而,以HTML格式解析的HTML5具有优雅的错误处理的好处。那就是为什么我更喜欢这种方法。像往常一样,结果因人而异。XHTML的创立是出于什么原因?
XHTML取得了多大的成功?
XHTML的必要性是什么?
XHTML拥有值得称赞的目标,也许它将来能够实现。我不能推荐XHTML,因为它可能提供的未来优势,当HTML现在已经更容易使用时。你只有在之前的代码或工具强制你使用XHTML时才需要使用它。
我认为这有助于浏览器正确地显示HTML而不做任何关于标签关闭位置的假设。每当浏览器做出假设时,你就会知道会发生什么。
<tag/>
,并将其与SGML规定进行比较,或者查看SGML允许的注释内容,然后将其与浏览器实际处理HTML注释的方式进行比较。它们基本上是无法协调的。 - hobbs