我不知道为什么我应该使用XHTML而不是HTML。
XHTML应该是“模块化的”,但是我还没有看到任何服务器端语言可以利用其中的任何一种。
XHTML也更加严格,我看不出它的优势。XHTML提供了我急需的什么功能?它如何使我的代码“更好”?
编辑:我在评论中发现的另一个问题:XHTML解析比HTML快吗?
EDIT2:在阅读了所有评论和链接之后,我确实同意另一篇文章应该是正确的答案,因此我选择了直接链接到最佳来源的文章。
此外,这表明人们甚至没有阅读绿色评论就对它发表了评论。
我不知道为什么我应该使用XHTML而不是HTML。
XHTML应该是“模块化的”,但是我还没有看到任何服务器端语言可以利用其中的任何一种。
XHTML也更加严格,我看不出它的优势。XHTML提供了我急需的什么功能?它如何使我的代码“更好”?
编辑:我在评论中发现的另一个问题:XHTML解析比HTML快吗?
EDIT2:在阅读了所有评论和链接之后,我确实同意另一篇文章应该是正确的答案,因此我选择了直接链接到最佳来源的文章。
此外,这表明人们甚至没有阅读绿色评论就对它发表了评论。
Answers:
您应该阅读“当心XHTML”,这是一篇内容丰富的文章,警告有关XHTML优于HTML的陷阱。
在阅读XHTML之前,我对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的优点,但是在您深入之前要意识到这些缺点是一件好事。
和é
。因此,我将所有XHTML文件都保留在XHTML 1.1中。
我打算将其添加为其他帖子之一的评论,但是它变得太大了。
大多数人似乎缺少的基本点是XHTML的目的。开发XHTML规范的主要原因之一是在标记中不强调与表示相关的标签,并将表示推迟到CSS。虽然可以使用纯HTML来实现这种分离,但规范并未促进这种行为。
分开元标记和表示形式是开发“可编程网络”的重要组成部分,不仅会改善SEO,并改善屏幕阅读器/文本浏览器的访问权限,而且还会使那些希望以编程方式访问它(在许多简单情况下,这可以消除开发特定API的需要,甚至可以只允许客户端脚本执行诸如轻松识别电话号码之类的操作)。如果您的网页符合XHTML规范,则可以使用与XML相关的工具轻松地遍历该网页,诸如XPath之类的东西对那些希望从您的网站中提取特定信息的人来说是个好消息。
XHTML不是为使用而开发的,而是与其他各种技术一起使用的。它在很大程度上依赖于CSS的表示形式,并为诸如Microformats(无论您是喜欢还是讨厌它们)之类的东西奠定了基础,从而为通用数据表示提供了标准化的标记。
不要被认为XHTML无关紧要,过于严格和毫无意义的人群愚弄……它的创建目的是让全世界95%的人似乎忽略/不知道。
一定要使用HTML,但是要使用HTML来实现其优点,并且在查看XHTML时应采用相同的方法。
关于解析速度,我认为XHTML和HTML之间的实际文档解析几乎没有差异。权衡将完全取决于您如何使用可用的标记来描述文档。由于必需的属性,适当的关闭等原因,XHTML标记往往会更长一些,但是会放弃对文档本身中任何表示性标记的需求。在这种情况下,我认为您正在谈论的是将一种类型的苹果与类型稍有不同的苹果进行比较...它们是不同的,但不会有任何后果(就解析和渲染而言) ),那么您想要的只是一个健康美味的苹果。
对于网站的访问者来说,它可能没有任何明显的不同。此外,XHTML通常更难以使用,因为至少一个广泛使用的浏览器仍然不知道如何处理它,在这种情况下,您需要将其用作text / html(产生无效的HTML)。
如果您的HTML将由自动化工具定期处理,而不是由人类阅读,那么您可能希望使用XHTML,因为它的结构更严格并且是XML,从应用程序的角度来看,解析起来更容易。不是说XML是但本质上很容易解析)。
除此之外,我看不出有任何令人信服的理由使用它。XHTML的创建方法是利用XML的XML功能,基本上可以归结为“具有一些烦人的副作用的HTML 4”(至少是IMHO)。
使用HTML(严格的HTML4或HTML5)。
HTML可以充分利用CSS,可以明确地进行验证和解析。在HTML4中已经完成了结构和表示的分离,而XHTML只是在继续。
所有浏览器都支持HTML。只有某些浏览器支持XHTML,而那些浏览器通常支持XHTML,并且它们对HTML的支持更加成熟,经过了更好的测试和优化(这是因为一小部分页面使用XML模式)。
如果您关心IE和Google,则必须使用HTML或XHTML的子集以及XHTML规范的附录C中定义的HTML。后者几乎是两全其美,因为无法使用标准XML工具生成此类XHTML,不能使用XHTML的新扩展机制,并且仅HTML就有其他限制。
XHTML1.0现在已有10多年的历史了,它是在Web1.0时代设计的,正如W3C负责人所说,回想起来它没有奏效,需要更好的方法。W3C HTML5是在我们撰写本文时编写的,旨在解决当今使用的Web应用程序的需求,并且具有很好的向后兼容性。
HTML5弥补了HTML4和XHTML1之间的许多空白(例如,添加了内联SVG,MathML i RDF),清除了XHTML1.0和XHTML1.1中所没有的语言。
在可见的将来,Web浏览器将不支持XHTML2。可能永远不会支持它(所有浏览器供应商都大力支持[X] HTML5,有些已经声明他们不会实现XHTML2)。
XHTML1.0具有恰好相同的语义,并从结构呈现为HTML4.01的分离。否则,任何人都没有阅读规范。我鼓励所有人阅读该规范–令人惊讶的简短而无趣。
HTML和XHTML中没有难以解决的差异,它们之间的解析比另一种解析要慢得多。这取决于解析器的实现方式。
<meta>
。与下载文档,构建DOM,运行脚本,应用CSS和浏览器必须完成的所有其他工作相比,解析成本的总体差异很小。
我很惊讶这里所有的答案都推荐XHTML over HTML。我坚决持有相反的意见-在可预见的将来,您不应使用XHTML。原因如下:
除非您将其用作mimetype,否则没有浏览器会将XHTML解释为XHTML application/xhtml+xml
。如果仅使用默认的模仿类型提供服务,则所有浏览器都会将其解释为HTML-例如,接受未闭合或嵌套不正确的元素。
但是,您绝对不应该这样做,因为Internet Explorer无法识别application/xhtml+xml
,并且将无法完全呈现页面。
XHTML和HTML之间的DOM有显着差异。由于目前所有所谓的XHTML页面都将用作HTML,因此所有JavaScript代码都是使用HTML DOM编写的。如果对XHTML模仿类型的支持变得足够重要,足以说服人们开始使用它,那么他们的大多数javascript代码都会中断-即使他们认为自己的页面可以验证为XHTML。
我不建议继续讨论HTML 4.01 Strict与XHTML Strict,而是建议立即开始使用HTML 5。jQuery的作者John Resig去年在他的博客上提出了类似的建议。
HTML 5 doctype以其精美的简洁性将在所有浏览器(包括IE6)中触发标准模式。
<!DOCTYPE html>
而已。
HTML 5提供了一些令人兴奋的新功能,例如<canvas>
标记,可以将javascript应用程序开发推向新的高度。HTML 5还以<video>
和<audio>
标记的形式对媒体提供了适当的支持(如今,媒体是Web上相当重要的一部分!)。
如果您喜欢XHTML的语法,即关闭诸如<br />
HTML之类的“空”标记,则HTML 5完全支持。从W3C的帖子的Karl Dubost学习如何编写HTML 5:
自动关闭标签是允许的,并且与HTML 5一致。
与HTML 5相比,XHTML2受到的关注相对较少。越来越清楚的是HTML 5是Web标记的未来。微软最新的浏览器IE8仍将XHTML作为text / xml呈现为text / html。
Microsoft是W3C HTML工作组的联合主席,并且隐含了对HTML 5的支持。所有浏览器供应商都公开宣布支持HTML 5。
归根结底,即使XHTML2重新获得了业界的支持,与过去一样,拥有两个相互竞争的标准也不会是一个重大问题。两种语言都支持XML名称空间(在HTML 5的情况下,HTML的序列化即DOCTYPE切换)。
看看http://www.w3.org/MarkUp/2004/xhtml-faq#need。除了模块化之外,还有一些很好的理由。
我赞成XHTML,因为它更严格且布局更清晰。HTML很古怪,浏览器必须接受<b><i>sadasd</b></i>
。尽管这是一个非常简单的示例,但它也可能引起更多混乱,并且不同的浏览器可能会以不同的方式布置事物。
我也认为XHTML必须“更快”,因为浏览器不必进行这种“赔偿”。
一些区别是:
<br>
在XHTML中使用标签必须具有关闭标签<br />
或<br></br>
在XHTML中使用)这里有一些链接
作为程序员,您应该非常担心自己的代码。HTML很丑陋,并且遵循一些规则。
另一方面,XHTML遵循严格的结构和语法规则,将HTML转换为适当的语言。
XHTML对每个人都更好,因为它将帮助将网络移动到每个人(所有浏览器)都可以就如何显示网页达成一致的地步。
XHTML是XML的后代,在为分析语法上合理的XML文档而构建的解析器中,XHTML更加容易。
如果您看不到XHTML的好处,则不妨使用MS Word创建HTML文档。
XHTML允许使用所有为XML设计的工具。其中包括XSLT,嵌入SVG等。
有趣的发展:XHTML 2工作组有望在2009年底停止工作,W3C将增加HTML 5的资源
2009年7月2日:今天,主管宣布,当XHTML 2工作组章程于2009年底按期到期时,该章程将不会续签。通过这样做以及通过增加工作组中的资源,W3C希望加快HTML 5的进度,并阐明W3C在HTML的未来方面的立场。FAQ回答了有关XHTML 2工作组的可交付成果的未来以及与HTML相关的各种讨论的现状的问题。了解有关HTML活动的更多信息。
好吧,我想这很清楚HTML的未来。
XHTML迫使您保持整洁。
例如,在HTML中,您可以编写:
<img src="image.jpg">
这不是很合逻辑,因为img
标签永远不会关闭。但是,在XHTML中,您被迫整齐地关闭标签,如下所示:
<img src="image.jpg" />
我喜欢使用强迫我保持整洁的东西。
史蒂夫
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。
将XHTML与正确的DocType一起使用将迫使浏览器以更符合标准(严格)的模式呈现内容。这使得不同的浏览器表现得更好,最重要的是,彼此之间更相似。这使您作为Web开发人员的工作变得更加轻松,因为它减少了使所有浏览器中的内容看起来相同所需的特定于浏览器的调整量。
Quirksmode.org在此主题上有很多不错的信息。
我认为严格性至少在理论上是一件好事,因为在HTML中,您不需要严格,并且由于这样和HTML5垃圾,浏览器具有先进的纠错算法,可以最大限度地提高性能。坏掉的HTML。问题是,算法不完全相同,并且会导致您无法预测的异常行为。另一方面,使用XHTML时,您通常拥有良好的有效XHTML,因此不需要纠错算法,即整个浏览器行为都是可预测的。另外,严格的代码使您的工具更易于使用代码。因此,使用XHTML实际上并没有什么损失,但是仍有一些潜在的收获。当HTML5最终发布并“接受您所接受的东西”时,使用纯HTML会使情况变得更糟。将导致所描述的奇怪行为。但这至少是一种标准化的奇怪行为。叹。
另一方面,如果您使用像Visual Studio这样的优秀IDE,则几乎不可能生成损坏的HTML代码,因此结果是相同的。
XHTMl是一个很好的使用立足点,因为如果您想要有效的代码,则由于屏幕阅读器需要image和link标签的alt和title部分,您将需要向残疾人社区提供某些方面的帮助。解析到一定程度必须更快,因为与HTML不同,解析器无需检查标记是否未正确关闭,是否正确嵌套等。使用它也是更好的选择,因为它是严格的但是在学习编程语言方面,它可以帮助您(在我看来)更理性地思考。
我相信XHTML解析(或应该更快)。有效的XHTML文档必须按照更严格的规范编写,因为解析时错误是致命的,而HTML的宽容性更大,并允许在我的注释之前提到奇怪的内容,例如混乱的结束标记等。我发现这有助于发现HTML和XHTML解析之间的差异:
http://wiki.whatwg.org/wiki/HTML_vs._XHTML#解析
之所以可能会使用XHTML而不是HTML,可能是因为您打算让移动用户成为受众的一部分。如果我还记得的话,许多电话使用的只是XML解析器,而不是HTML解析器。如果您是为台式机浏览器编写的,则HTML可能是可以接受的。
就是说,如果您仍然要以text / html形式提供数据,则应该使用HTML: