什么是XHTML的需要?

时间:2009-02-17 17:22:11

标签: html css xhtml

在一次采访中,我被问到一个我从未想过的问题,即“我们已经拥有满足编写网页所有要求的HTML,那么对XHTML的需求是什么?”

我搜索了很多内容并阅读了很多文章,但我无法正确理解为什么会引入XHTML。请向我解释。

16 个答案:

答案 0 :(得分:33)

因为它是有效的XML。这有很大帮助,因为你可以使用最初为XML设计的许多工具,例如XML解析器,XSLT,XPath,XQuery,......

普通HTML是一种SGML方言,如果不了解架构,则无法解析。

<ul>
    <li>one
    <li>two
    <li>three
</ul>

correct HTML但不是正确的XML。如果你想解析它,你必须知道ul - 必须关闭元素,但li不能。

答案 1 :(得分:26)

XHTML还允许您嵌入其他XML方言,如MathML,Ruby, SVG等(您也可以将XHTML嵌入其他XML方言中,如果 期望的。)

如果您只是“制作网页”,则不一定需要 XHTML。但是,如果您以编程方式生成页面,则可能 发现用于生成XML的工具比那些更好 生成HTML。

答案 2 :(得分:23)

我实际上是在写这个问题,为什么以上三篇关于浏览器一致性格式良好 html的帖子已经被拒绝了?

众所周知,HTML是行业标准。实现浏览器,以便它们呈现HTML标准中描述的标记内容。不幸的是,有些领域在HTML中没有很好地定义:如果用户忘记了结束标记会发生什么,或者如果找不到引用的图像该怎么办?某些浏览器使用'alt'标记来显示占位符文本项,而某些浏览器会将'alt'标记显示为工具提示。着名的“怪癖”浏览器模式是缺乏清晰度的结果。因此,相同的网页很可能在不同的浏览器上以不同的方式显示。

随着HTML使用量的增长,还有一个问题:它无法扩展 - 无法添加用户定义的标记。

XHTML解决了上述问题

  • 采用XML来提供可扩展标记。
  • 为网络浏览器提供“严格”标准

XHTML有关于结构的明确规则,可以以编程方式强制执行。检查各种在线“XHTML验证器”。他们将告诉您XHTML是否形成良好(并突出显示问题区域)。由于这些严格的规则,您的页面或多或少保证在实现XHTML的所有浏览器上看起来都一样。

[注意]如果您想验证上述内容,请参阅“Head First XHTML and CSS”一文

答案 3 :(得分:19)

除了约翰内斯的回答,HTML的解释和容忍度过于宽松,XHTML严格的形式化否定了这一点。

容差会导致差异,导致浏览器不兼容,从而导致黑暗面。

答案 4 :(得分:14)

来自Wiki

  

因为他们需要格式良好,   真正的XHTML文档允许   要执行的自动处理   使用标准XML工具 - 与HTML不同,   这需要相对复杂,   宽松的,通常是自定义解析器。   XHTML可以被认为是   很多HTML和XML的交集   尊重,因为这是一个重新制定   XML中的HTML。

使HTML符合XML标准,可以更加一致地解析页面。例如,在HTML中,您被允许使用无法使用的标记<b><u>test</b></u>,但是必须按照它们打开的顺序关闭它们。这样的事情使DOM解析(现在在AJAX中大量使用)更多更容易。

答案 5 :(得分:8)

我相信你肯定遇到过W3的this文章。从这篇文章中可以学到很多东西。简而言之,除了具有HTML标记集之外,XHTML还遵循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

答案 6 :(得分:6)

我在这里看到一堆上升的答案,这些答案对浏览器的工作方式做出了错误的假设。所以,让我就此问题给出2美分。

首先,为什么存在XHTML?

From the horse's mouth:

  

组织了为期两天的研讨会,讨论是否需要使用XML的新版HTML。研讨会上的意见是明确的“是”:使用基于XML的HTML,其他XML语言可能包含一些XHTML,而XHTML文档可能包含其他一些标记语言。我们还可以利用重新设计来清理一些更不整洁的HTML部分,并添加一些新的功能,例如更好的表单。

简而言之,XHTML的创建有两个原因:

  • 允许在同一文档中混合使用明确格式规则的其他内容(如mathml和svg)。
  • 扩展和清理HTML。

使事情更容易验证不是设计目标,也不是必需的东西,因为HTML4验证器存在且是全面的。

XHTML是否更易于解析浏览器?

是和否。 XML比HTML标签更易于解析,但是,除非您为XHTML页面使用xhtml + xml或application / xml mime类型,否则浏览器会使用HTML解析引擎对其进行解析。但是,如果您使用xml mime类型,IE会阻塞您的内容。 IE博客上的这个behavior is explained如果您使用mime类型的text / html提供XHTML和HTML,浏览器如何处理它们没有区别!

是的,他们这样做!你撒谎!

确实他们这样做,但仅仅是因为doctype。浏览器在HTML文档的顶部使用doctypes来确定它们是应该使用标准模式还是quirks模式(= bugs模式)。所有有效的XHTML文档碰巧都包含触发标准模式的doctype。但是,在HTML中,您可以通过添加“&lt;!doctype html&gt;”获得相同的结果在页面顶部。

你是说XHTML没有用途?

完全没有。 XHTML有许多优点:

  • 可以使用XML工具进行转换,例如XSLT
  • 可以在服务器端代码中轻松解析
  • 它可以在仍然通过验证测试的同时集成自定义标记

那么,我应该使用它吗?

与往常一样,答案是“它取决于”。

  • 服务器端,可能有用。如果您希望获得XML的服务器端优势,那么您希望使用XHTML变体,无论是XHTML1(HTML4序列化为XML)还是XHTML5(HTML5序列化为XML)。
  • 客户端,没用。我强烈建议避免为用户提供XML mime类型。如果页面中有任何标记问题,XML解析不会与优雅的错误处理混合,只会产生“XML解析错误”而不是文档。除非你从不编写错误,否则你需要优雅的错误处理。

HTML5怎么样?它与XHTML竞争吗?

不,不。 HTML5有two serializations,一个用作HTML,另一个用作XML。好处是现在都有严格的解析规则。无论您使用何种方法,您都将在所有浏览器中获得可预测的行为。但是,HTML5解析为HTML具有优雅的错误处理的好处。这就是我喜欢这种方法的原因。一如既往,YMMV。

答案 7 :(得分:5)

XHTML试图鼓励开发“结构良好”的HTML。

HTML已经发展了十多年。它的实现以及解析和呈现它的浏览器的实现并不完全一致。这就是为什么跨浏览器兼容性是一个主要问题。

HTML基于SGML(标准通用标记语言).XML也是从SGML派生的,因此它们是一种类型的表兄弟。 XHTML与两者结合,提供(理论上)XML对HTML的好处。这包括一个定义良好的模式,可以可靠地验证,查询和转换。

答案 8 :(得分:3)

为什么要创建XHTML?

  • HTML不是非常可扩展的。 XHTML旨在通过引入名称空间来解决这个问题,以便可以包含内联的MathML或SVG等语言。
  • XMl比SGML(版本5之前的HTML使用的格式)解析起来要简单得多。
  • 由于绝大多数网站存在错误,浏览器会尝试纠正错误的标记。新浏览器必须尝试以相同的方式纠正它。 XHTML试图通过指定只显示结构正确的代码来提高标准。

成功有多好?

  • XHTML广泛传播,但由于与Internet Explorer(最高版本8)不兼容,因此几乎总是使用text / html MIME类型。如果用作XML,这些页面中的许多页面实际上会中断。因此,上述三个优势都没有真正实现。
  • 许多人选择使用XHTML,因为他们认为它可以提供更好的未来兼容性。 XHTML2.0上的工作已经停止,而HTML5将有一个XHTML序列化,这似乎很少受到关注。 XHTML为可预见的未来提供了未来的兼容性优势。 MozillaSafari建议仅使用HTML。
  • 具有严格DTD的HTML已经具有更清晰的格式。 HTML5将通过删除过渡DTD,删除不必要的元素以及定义用于解析具有一定程度的向后兼容性的文档的标准方式来进一步实现此目的。浏览器仍然会更正HTML序列化的错误,而不是强制修复标记,但至少他们会以相同的方式执行此操作。那些关心正确代码的人无论如何都会使用验证器。

对XHTML有什么需求?

XHTML有着值得称赞的目标,也许它将来能够实现。我不能推荐XHTML用于可能它可能提供的未来优势,而现在HTML更容易。如果以前的代码或工具强迫您使用,那么您应该只使用XHTML。

答案 9 :(得分:2)

我认为它可以帮助浏览器正确显示html,而无需假设标签应该关闭的位置。任何时候浏览器假定你知道发生了什么。

答案 10 :(得分:2)

XHTML强制您编写更清晰的代码,这些代码更易于维护,呈现更一致,更容易挂钩到DOM。将XHTML与HTML进行比较就像将强类型的编程语言与松散类型的编程语言进行比较。

如上所述,XHTML允许您使用SVG和MathML。我想将RDFa添加到该列表中。 RDFa允许您向微格式未涵盖的内容添加语义。我个人在都柏林核心和朋友之友中做了很多。

答案 11 :(得分:1)

XHTML只是关于系统之间的通信。 HTML很难解析,因为对于形成良好的内容,可能会出现多种变化。由于XML在解释上是严格的,因此该问题已被删除。

考虑RESTful架构。如果URL是项目的永久位置,那么想要访问此项目的系统应该能够使用从访问URL返回的信息。 XHTML本身并不能实现这一点,因为系统已经可以解析HTML并检索必要的信息。 XML只是让这更容易。没有限制的预定义标记集使得难以对文档中的数据进行分类(尽管从技术上讲,您可以在HTML中执行此操作,因为浏览器会忽略它)。您可以使用任何想要分类的数据进行分类。

答案 12 :(得分:1)

简而言之:只要您想在服务器端使用基于XML的工具来操作/转换/生成HTML页面,XHTML通常只对HTML有用而且更受欢迎。

许多示例都可以在基于组件的MVC框架中找到,例如 Sun Oracle JSF,它使用Facelets作为基于XHTML的视图技术。服务器端组件在XSD中定义,页面使用SAX parser进行解析。您甚至可以在页面顶部添加<!DOCTYPE html>,让Facelets生成“纯”有效且严格的HTML5。 Microsoft ASP.NET MVC具有类似的视图技术。

当你手写HTML时,XHTML并没有带来太多好处,或者必须推迟使用(过度)炒作技术的“酷”。

另见:

答案 13 :(得分:0)

如果我想抓取您的网站并解析其内容,我只能在它是XML的情况下才能这样做。

解析HTML是一场噩梦。

答案 14 :(得分:0)

XML是一种数据交换格式 - 这非常适合构建网站,因为毕竟我们正在处理信息,而这些信息需要被计算机(例如搜索引擎)抓取和理解。

答案 15 :(得分:-2)

因为XHTML更有意义!

关键是,即使某些东西可能无法提供更多的技术可能性,如果它被重新制作只是为了更清晰和合乎逻辑,它仍然是一种改进。这就是为什么代码重构是一个好主意,即使它没有改变任何功能。这就是为什么Brainfuck不是一个好的编程语言,即使它具有Java的所有功能。

XHTML更有意义,因为标记及其属性的底层结构始终是一致的 - 不依赖于标记语义。一旦你熟悉它与HTML的区别,它更有意义的方式很明显,但是例如标签总是有序嵌套,所有标签必须关闭,名称必须小写,属性值必须有限制字符。