比较/对比HTML、XHTML、XML和HTML5

28

嗯,我不太确定这些语言之间的区别。有人可以澄清一下吗?我知道XML具有用户定义标签,而HTML是预定义的,但这基本上是我的知识范围。

我知道HTML5应该取代HTML,但XML也应该这样做吧?基本上,这些语言中哪些是另一个的替代品,哪些是补充? XML是否取代XHTML?


值得注意的是,HTML不是XML的子集:https://dev59.com/5m035IYBdhLWcg3wNdLg#39560454 - Ciro Santilli OurBigBook.com
9个回答

34

HTML是一种超文本标记语言,旨在创建结构化文档并为文档提供语义含义。HTML5是HTML规范的下一个版本。

XML是可扩展标记语言,它提供了创建、构造和编码文档的规则。通常使用XML来存储数据并允许应用程序之间进行通信。它与编程语言无关-所有主要编程语言都提供读写XML文档的机制,可以作为核心部分或作为外部库。

XHTML是基于XML的HTML。它具有与XML文档相同的规则,用于处理标记的结构,但与HTML具有相同的功能。


我的一些描述可能需要改进。如果您想要,可以随意清理任何措辞。我稍后会尝试进来进行清理。 - Thomas Owens
2
那么,如果我说XHTML是HTML的继承者,而HTML5将取代XHTML,这样说就不对了吗?或者说HTML和HTML5永远不能替代XHTML? - GiH
1
@GiH 这取决于您指的是规范还是实际使用情况。我记得读过这样一篇文章,其中只有非常少量带有XHTML doctype的网站实际上提供了正确的MIME类型,因此浏览器实际上并没有将其中大部分视为XHTML。(更不用说“XHTML”本身就无法验证,并且浏览器也不会将其视为XHTML。)我认为现在可以毫不夸张地说,就规范而言,HTML5已经取代了HTML和XHTML,而实际上从一开始就没有太多真正的XHTML在运作。 - jinglesthula

11

XML是一种元语言。元语言是一种提供语法机制以创建其他语言的语言,而不通过预定义的语法限制表达。XML在SGML文档类型语言中定义。遵循XML严格的语法要求被称为良好格式,这是一种精确准确地遵循一组规定要求的实践,旨在实现对各种不同应用程序和用户代理的文档的统一处理。

SGML像XML一样是一种元语言,甚至是XML的父级。SGML提供了一种广泛的形式来定义使用语法的数据,而不提供数据类型约定。与SGML不同,XML具有严格且极其简化的语法,不容易混淆。XML还具有数据类型定义,这也不同于SGML。XML中的元素以lambda方式提供命名空间范围,而SGML不支持命名空间。

Doctype是一种基于SGML的语言,它使用与XML完全不同的语法来定义标记语言语法和广泛的数据类型约定,以区分数据元素和文本。

XML Schema是一种XML编写的语言,允许具有精确结构形式的语言语法定义以及元素、结构和属性的特定数据类型约定。由Schema编写的语言在结构上具有自我意识,不像SGML词汇表那样,因此它们知道在结构的任何不同点上它们自己的内部要求。通过引用Schema文档,由Schema定义的语言能够立即开放验证,由于其结构自我意识,而在Doctype中定义的语言需要无关软件来执行验证。

HTML 1.0是用英文文本编写的,既不是SGML也不是XML。

HTML 2-4是用SGML编写的,并具有SGML的灵活性,例如大写标签或没有匹配关闭标签的开始标签。

XHTML 1.0是HTML语言的SGML定义形式,具有一些扩展要求,以实现向XML语法的渐进兼容性。

XHTML 1.1是用XML定义的HTML语言,具有XML格式良好的要求。

与HTML 1.0一样,HTML5没有使用任何元语言进行定义。它是用英文文本编写的,并且在反对XML序列化的统一要求方面发生了根本性变化。HTML5似乎是为了可用性和媒体传递而创建的,而不考虑结构或语言层次结构。

XHTML5代表“HTML5的XML序列化”,是一种用于将DOM树序列化回HTML5时使用的XML语法(DOM树失去了区分标记混乱标记和正确标记的能力),必须遵守更严格的XML规则和命名空间。它旨在实现更轻松的机器阅读或数据交换,或者当需要比较两个HTML5文档时使用。它与HTML5标准一起指定(感谢hsivonen指出这一点)。


XHTML5被定义在与HTML5相同的规范中,尽管规范的标题是HTML5。该定义是公开的,并且已经公开多年。 - hsivonen

9

首先,有SGML,它是HTML和XML的概念祖先,是一种

  • Standard(ISO 8879:1986),使得不同的组织和程序可以交换文档
  • Generalized,使用户可以定义新的标签
  • Markup,使文档内容可以增加描述内容的结构信息
  • Language,使得有语法定义了标记。

然后,HTML作为一组特定的SGML标记创建,用于定义Web页面的呈现方式。

XML作为SGML的简化而创建。

XHTML被创建为将HTML重新格式化为格式良好的XML(例如需要关闭标签,这在SGML和HTML中并非严格必要)。

HTML 5是当前版本的HTML。它拒绝XHTML背后的动机,并允许比XML规则更宽松的标记规范。


我想补充一点,现代的HTML5仍然是SGML,尽管HTML规范不再在标准(ISO 8879)中引用SGML标准。 SGML的遗产表现在元素名称的词汇规则中(可接受的字符,大小写折叠),在HTML的标签推断中,在与HTML相关的省略属性名称的行为中(例如<option selected>),以及许多其他细节中。这并不奇怪,因为HTML基于SGML,并且HTML5专门为向后兼容性设计而成。来源:在2017年XMLPrague发布了一篇关于此主题的论文/演讲(请参见http://sgmljs.net/blog/blog1701.html)。 - imhotap

8

XML是一种语法:它定义了你如何编写数据,但不定义你可以编写什么数据。例如:

<something otherthing="stuff">content</something>

HTML是一种词汇:它定义了你可以写哪些元素(例如BODY,P,LI等),但对于如何编写并不十分严格(参见"标记混乱 ");

XHTML是(大致上)使用(更严格的)XML语法编写的HTML词汇表。因此(由于语法更严格),它更容易被软件解析,但对于非程序员正确编写则更难。由于Internet Explorer没有正确支持它,因此它并不是很受欢迎。

HTML5是HTML的下一代版本(当前版本为HTML 4),仍处于草案阶段,尚未成为标准,部分浏览器支持(因此是实验性的)。HTML5将明确支持使用XML语法或作为标记混乱进行服务。


6
你好,以下是你需要翻译的内容:

你可以通过谷歌或维基百科获取准确的定义。我将举一个例子:

HTML:

<DIV id=header>header</div>

XHTML:

<div id="header">header</div>

HTML 5:

<header>header</header>

XML是XHTML基于的语法:

<something otherthing="stuff">content</something>

HTML同样允许小写元素名称。 - Gumbo
3
是的,但它也允许大写。这就是为什么我同时使用了“DIV”和“div”的原因。 - marcgg

4
请查看下面的图形,了解HTML5抽象语言的两种串行化方法。单击此处查看更多信息。 alt text

2

HTML是一种用于网页的标记语言,而XML是一种用于信息的标记语言。XML从未被视为HTML的直接替代品,它具有不同的范围。

HTML5只是HTML的最新版本。 "当前"的HTML版本(几乎所有使用的浏览器都支持的版本)是4.01。

XHTML是基于HTML的标准,已经调整以符合XML的更严格规则。XHTML文档也是XML文档,如果正确编写,可以通过任何XML解析器解析。


1
HTML的当前版本是4.01。 - Gumbo
@Gumbo:这就是我想说的。;) - Guffa

1

HTML是一种用于网页的标记语言。HTML5是HTML的第五个版本。

XML是另一种标记语言。XHTML是XML的一种方言,与HTML非常相似,并旨在替代它,但由于支持不佳,它基本上只是与HTML并存。


-1

所有这些语言的标准都由万维网联盟维护。

具体的差异和细微之处超出了stackoverflow问题的范围,但是w3schools.com有一些教程可以帮助您入门。

我建议您在w3schools上阅读每种语言的介绍。那应该会让您对它们的区别有一些了解。


4
确切的差异和微妙之处是stackoverflow最重要的内容。 w3schools因其不够确切和微妙而著名。 - Benxamin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接