在一天结束时,为什么选择XHTML而不是HTML?

时间:2009-05-15 08:05:08

标签: html xhtml

我想知道为什么我应该使用XHTML而不是HTML。

XHTML应该是“模块化的”,但我没有看到任何服务器端语言利用其中的任何一种。

XHTML也更严格,我没有看到优势。 XHTML提供了什么,我需要这么糟糕?它如何使我的代码“更好”?

编辑:我在评论中发现的另一个问题:XHTML解析速度比HTML快吗?

EDIT2:在阅读完所有评论和链接后,我确实同意另一篇文章应该是正确的答案,所以我选择了直接链接到最佳来源的帖子。

此外,还表明人们甚至在没有阅读的情况下赞成绿色评论。

18 个答案:

答案 0 :(得分:43)

你应该阅读Beware of XHTML,这是一篇内容丰富的文章,警告XHTML对HTML的一些陷阱。

在我阅读之前,我对XHTML很满意,但它确实提出了几个有效点。包括以下内容;

  

XHTML 1.x不是“未来兼容”。目前处于起草阶段的XHTML 2与XHTML 1.x不向后兼容。 XHTML 2将对文档的编写和结构方式进行大量的重大更改,即使您已经使用XHTML 1.1编写了站点,通常也需要完整的站点重写才能将其转换为正确的XHTML 2。在大多数情况下,XSL转换是不够的,因为某些语义将无法正确转换。

     

HTML 4.01实际上更具未来兼容性。写入现代支持级别的有效HTML 4.01文档将是有效的HTML 5,HTML 5是大多数注意力来自浏览器开发人员和W3C的地方。

在处理某些项目时,未来的兼容性可能会很大。这篇文章继续提出其他一些优点,但我认为这对我来说可能是最突出的。

不要误以为该文章是针对XHTML的咆哮,作者确实谈到了XHTML的优点,但在潜入之前了解这些缺点是很好的。

答案 1 :(得分:36)

我打算将其添加为对其他帖子的评论,但它有点过大。

大多数人似乎缺少的基本点是XHTML背后的目的。开发XHTML规范的一个主要原因是在标记中不再强调与表示相关的标记,并将表示推迟到CSS。虽然可以使用纯HTML实现这种分离,但规范不会促进此行为。

分离元标记和演示是开发“可编程网络”的重要部分,不仅可以改善搜索引擎优化,访问屏幕阅读器/文本浏览器,还可以使您的网站更易于分析那些希望以编程方式访问它的人(在许多简单的情况下,这可以消除开发特定API的需要,甚至只允许客户端脚本执行诸如容易识别电话号码之类的事情)。如果您的网页符合XHTML规范,则可以使用与XML相关的工具以及XPath之类的内容轻松遍历它......这对于想要从您的网站中提取特定信息的人来说是个好消息。

XHTML并非开发用于自身,而是与各种其他技术一起使用。它在很大程度上依赖于使用CSS进行演示,并为微格式(无论你喜欢它们还是讨厌它们)等事物奠定基础,为常见的数据表示提供标准化的标记。

不要被认为XHTML微不足道的人群所愚弄,而且只是过于严格和毫无意义......它的创建目的是95%的世界似乎忽略/不知道。

一定要使用HTML,但要将它用于它的优点,并在查看XHTML时采用相同的方法。


关于解析速度,我想在XHTML和HTML之间解析实际文档时几乎没有什么区别。权衡取决于您使用可用标记描述文档的方式。由于必需的属性,正确的关闭等,XHTML标签往往更长,但是放弃了文档本身中任何表示性标记的需要。在这种情况下,我认为你在谈论比较一种类型的苹果,与一种非常不同类型的苹果...它们是不同的,但它不太可能有任何后果(在解析和渲染方面)当你想要的只是一个健康,美味的苹果。

答案 2 :(得分:17)

对于网站的访问者来说,它可能没有任何明显的区别。此外,XHTML通常更难以使用,因为至少有一个广泛使用的浏览器仍然不知道如何处理它,在这种情况下你需要将它作为text / html提供(这会产生无效的HTML)。

如果您的HTML将由自动化工具定期处理而不是由人类阅读,那么您可能希望使用XHTML,因为它更严格的结构和XML更容易解析(从应用程序的角度来看)。但是,XML本质上很容易解析。

除此之外,我没有看到使用它的任何令人信服的理由。 XHTML是在利用HTML的XML功能的方法中创建的,基本上它归结为“HTML 4带有几个烦人的副作用”(至少恕我直言)。

答案 3 :(得分:12)

使用 HTML (HTML4严格或HTML5)。

  • HTML可以充分利用CSS,可以明确地验证和解析。在HTML4和XHTML中已经完成了结构和表示的分离,只是继续。

  • 所有浏览器都支持HTML。只有一些浏览器支持XHTML和那些支持XHTML的浏览器,它们通常具有更成熟,更好的测试和优化的HTML支持(这是由tiny fraction页面使用XML模式引起的。)

  • 如果您关心IE和Google,则必须使用XHTML规范附录C中定义的HTML或XHTML和HTML子集。后者几乎是两个世界中最糟糕的,因为这样的XHTML无法使用标准XML工具生成,不能使用XHTML新增的扩展机制,并且与单独的HTML相比具有额外的限制。

  • XHTML1.0现已超过10年,它在“Web1.0”时代设计,并且作为W3C的负责人说,in retrospect it didn't work out and better approach is needed。 W3C HTML5是在我们发言时编写的,它解决了当今使用的Web应用程序的需求,并且具有非常好的向后兼容性。

  • HTML5弥补了HTML4和XHTML1之间的许多空白(例如添加了内联SVG,MathML i RDF),清除了超出XHTML1.0和XHTML1.1所做的语言。

  • 在可预见的未来,Web浏览器不会支持XHTML2。很可能它永远不受支持(所有浏览器厂商都大力支持[X] HTML5,有些人已经声明他们不会实现XHTML2)。


XHTML1.0具有与HTML4.01相同的语义和表示与结构的分离。任何不这样做的人,hasn't read the specification。我鼓励大家阅读这个规范 - 这是令人惊讶的短暂和无趣的。

  • 样式表在HTML4.01中引入,并且在XHTML1.0中已更改。
  • 在HTML4.01中弃用了演示元素,在XHTML1.0中删除了

XHTML myths


HTML和XHTML中没有任何难以解决的差异会使解析比另一个慢得多。这取决于解析器的实现方式。

  • SGML和XML解析器都需要加载和解析整个DTD才能理解实体。仅这一点通常比解析文档本身更有用。 HTML解析器几乎总是“欺骗”并使用硬编码实体和元素信息。浏览器中的XHTML解析器也作弊。
  • 解析HTML需要处理隐含的开始和结束标记,现实世界的HTML需要额外的工作来处理错位的标记。
  • 正确解析XHTML需要跟踪XML名称空间。
  • 严格的XML规则要求检查每个字符是否都已正确编码。 HTML解析器可能会侥幸成功,但OTOH需要查找<meta>

与下载文档,构建DOM,运行脚本,应用CSS以及浏览器必须执行的所有其他操作所花费的时间相比,解析成本的总体差异很小。

答案 4 :(得分:11)

我很惊讶这里的所有答案都推荐XHTML而不是HTML。我坚决反对意见 - 在可预见的未来,你不应该使用XHTML。原因如下:

  • 没有浏览器会将XHTML 解释为 XHTML,除非您将其作为mimetype application/xhtml+xml提供。如果您只使用默认的mimetype来提供它,所有浏览器都会将其解释为HTML - 例如,接受未闭合或不正确嵌套的元素。

  • 但是,您实际上不应该执行,因为Internet Explorer无法识别application/xhtml+xml,并且无法完全呈现页面。

  • XHTML与HTML之间存在显着差异。由于目前所有所谓的XHTML页面都作为HTML提供,所有javascript代码都是使用HTML DOM编写的。如果对XHTML mimetype的支持变得足以说服人们开始使用它,那么他们的大多数javascript代码都会破坏 - 即使他们认为他们的页面验证为XHTML。

答案 5 :(得分:5)

我建议今天开始使用HTML 5,而不是继续讨论HTML 4.01 Strict vs XHTML Strict。 John Resig,jquery的作者,made a similar suggestion last year在他的博客上。

HTML 5 doctype,其简洁美观将触发所有浏览器(包括IE6)的标准模式。

<!DOCTYPE html>

就是这样。

HTML 5提供了一些令人兴奋的新功能,例如<canvas>标记,可能会将javascript应用程序开发推向更高级别。 HTML 5还以<video><audio>标签的形式为媒体提供了适当的支持(而媒体是网络的一个相当重要的方面!)。

如果您喜欢XHTML的语法,即关闭“空”标记,例如<br />,则完全支持HTML 5.来自W3C帖子的{Karl Dubost Learn How To Write HTML 5

  

自动关闭标记是允许的,并且符合HTML 5。

与HTML 5相比,XHTML2受到的关注相对较少。人们越来越清楚HTML 5是Web上标记的未来。微软最新的浏览器IE8 仍然呈现XHTML作为text / html的text / xml。

微软在W3C HTML工作组上有一位联合主席,他们对HTML 5提供了隐含的支持。所有浏览器供应商都公开宣布他们支持HTML 5.

在一天结束时,即使XHTML2重新获得业界的支持,也不会像过去那样拥有两个相互竞争的标准。两种语言都支持XML命名空间(在HTML 5的情况下,HTML的序列化,即DOCTYPE切换)。

答案 6 :(得分:4)

看看http://www.w3.org/MarkUp/2004/xhtml-faq#need。除了模块化之外,还有一些很好的理由。

我赞成XHTML,因为它更严格,更清晰。 HTML很古怪,浏览器必须接受<b><i>sadasd</b></i>之类的东西。 虽然这是一个非常简单的例子,但它也可能变得更加混乱,不同的浏览器可能会以不同的方式布局。

此外,我认为XHTML必须“更快”,因为浏览器不必进行那种“赔偿”。

答案 7 :(得分:3)

有些不同之处:

  • XHTML标记必须正确嵌套
  • 文档必须有一个根元素
  • XHTML标记始终为小写
  • 必须始终关闭代码(例如,使用XHTML中的<br>代码必须在XHTML中包含结束标记<br /><br></br>

以下是一些链接

wiki XHTML

wiki HTML vs XHTML

答案 8 :(得分:2)

有趣的发展:XHTML 2 Working Group Expected to Stop Work End of 2009, W3C to Increase Resources on HTML 5

2009-07-02:今天主任宣布,当XHTML 2工作组章程按计划于2009年底到期时,章程将不会续签。通过这样做,并通过增加工作组的资源,W3C希望加快HTML 5的进展并澄清W3C对HTML未来的立场。常见问题解答回答有关XHTML 2工作组可交付成果未来的问题,以及与HTML相关的各种讨论的状态。详细了解HTML活动。

嗯,我想这会让HTML的未来变得非常清晰。

答案 9 :(得分:2)

XHTML允许使用为XML设计的所有工具。其中,有XSLT,嵌入SVG等......

答案 10 :(得分:2)

作为程序员,您应该非常关注您的代码。 HTML很难看,遵循的规则很少。

另一方面,

XHTML将HTML转换为适当的语言,遵循严格的结构和句法规则。

XHTML对每个人都更好,因为它有助于将网络移动到每个人(所有浏览器)都能就如何显示网页达成一致的程度。

XHTML是一个XML后代,对于为分析语法合理的XML文档而构建的解析器来说,我们就这么容易了。

如果您看不到XHTML的好处,您也可以使用MS Word创建HTML文档。

答案 11 :(得分:1)

使用具有正确DocType的XHTML将强制浏览器以更符合标准(严格)模式呈现内容。这使得不同的浏览器表现得更好,最重要的是,彼此更像。这使得您作为web开发人员的工作变得更加容易,因为它减少了在所有浏览器中使内容看起来相同所需的浏览器特定调整量。

Quirksmode.org有很多关于这个主题的好消息。

答案 12 :(得分:1)

XHTML 1.0建议的副标题:

  

XML 1.0中HTML 4的重新制定

目前存在许多处理XML的工具。通过使用XHTML,您可以在页面上运行大量工具并以编程方式提取信息。

如果你要使用HTML,这也是可能的。现有的工具可以解析HTML DOM树。但是,这些工具通常比XML的工具更专业。您可能找不到与HTML兼容的最喜欢的XML数据处理工具。此外,现在XML有如此多的用途,您可能正在将XML用于应用程序的其他部分;为什么不使用相同的XML解析器来解析您的网页?这是XHTML背后的动机。

如果您已经熟悉并熟悉HTML 4.01,那么您已经建立了一个使用HTML 4的项目,而且您没有大量的业余时间,只需使用HTML 4.01即可。如果你有空闲时间,无论如何都要学习XHTML 1.1,并在XHTML 1.1中开始你的新项目 - 这样做没有坏处。如果您使用的不是HTML 4.01,或者对HTML 4非常不熟悉,那么只需学习XHTML 1.1。

答案 13 :(得分:1)

XHTML迫使你整洁。

例如,在HTML中,您可以编写:

<img src="image.jpg">

这不合逻辑,因为img标记永远不会被关闭。但是,在XHTML中,您必须整齐地关闭标记,如下所示:

<img src="image.jpg" />

我喜欢使用能让我整洁的东西。

史蒂夫

答案 14 :(得分:0)

使用XHTML

  • 快速失败。如果在验证过程中发现任何不一致的地方。
  • 通过将语义标记与表示等分开来鼓励更好的设计
  • 它是结构化的,这意味着您可以将其视为数据对象并针对它运行各种查询。例如,您可以在您的网站中找到所有地址或引文。
  • 您可以执行构建时优化。由于它是格式良好的XML,因此您可以在构建期间轻松查找/替换操作。或任何文件管理和操纵。
  • 您可以编写XSLT或其他转换脚本,以编程方式将XHTML转换为其他平台。例如,您可以使用iPhone的XSLT来转换所有XHTML以使其与iPhone兼容或更加用户友好
  • 您自己面向未来。使用转换,将XHTML转换为更新的语义也非常容易。
  • 搜索引擎将继续发展,以收集更多语义信息,作​​为可编程网络的一部分。
  • DOM操作因其结构化而更可靠。
  • 从算法的角度来看,它产生更容易和更快的解析

答案 15 :(得分:0)

XHTMl是一个很好的使用点,因为如果你想要有效的代码,你需要为残疾人社区提供一些帮助,因为屏幕阅读器需要图像和链接标签的alt和title部分。 解析到某个程度必须更快,因为与HTML不同,解析器不需要检查标签是否未正确关闭,是否正确嵌套等。 此外,最好使用它,因为它是严格的,但它可以帮助您在学习编程语言时更合乎逻辑地思考(在我看来)。

答案 16 :(得分:0)

我相信XHTML(或应该)更快解析。一个有效的XHTML文档必须写成更严格的规范,因为在解析时错误是致命的,而HTML则更宽松,允许在我的评论之前提到的奇怪之处,如乱序关闭标记等。我发现这有助于揭示HTML和XHTML解析之间的差异:

http://wiki.whatwg.org/wiki/HTML_vs._XHTML#Parsing

如果您打算将移动用户作为受众群体的一部分,那么您可能会使用XHTML而不是HTML。如果我记得,许多手机使用更多的XML解析器,而不是HTML来显示网络。如果您是为桌面浏览器编写的,那么HTML可能是可以接受的。

那就是说,如果你打算以text / html的形式提供数据,你应该使用HTML:

http://www.hixie.ch/advocacy/xhtml

答案 17 :(得分:0)

在我看来,严格性至少在理论上是一件好事,因为在HTML中,你不需要严格,因为这和HTML5垃圾,浏览器有先进的纠错算法,充分利用破碎的HTML。问题是,算法并不完全相同,会导致您无法预测的奇怪行为。另一方面,使用XHTML,您通常拥有精细,有效的XHTML,因此不需要纠错算法,即整个浏览器行为是可预测的。此外,严格的代码使您的工具更容易使用代码。所以你使用XHTML实际上没什么可失去的,但是有一些潜在的好处。当HTML5终于出来时,用简单的HTML会变得更糟,并且“在你接受的内容中打开”会导致所描述的奇怪行为。但至少那时它是一种标准化的奇怪行为。叹息。

另一方面,如果你使用像Visual Studio这样的好IDE,那么几乎不可能产生破碎的HTML代码,所以结果是一样的。