HTML, XHTML, XML之间的区别

  • XML
  • HTML
  • XTHML
  • 其他
      • SGML
      • Doctype
      • XML Schema(不确定是什么)

XML

XML 是 可扩展标记语言(Extensible Markup Language), 为文档的创建,结构化存储和编码提供了规则。你经常会看到XML 被用于存储数据以实现应用程序之间的通信,它是编程语言无关的(programming language-agnostic) - 所有主要的编程语言全部提供了用于读写 XML 文档的机制,要么这种机制是内核的一部分,要么由外部库提供。

XML 是一种元语言(meta language),所谓元语言是指为创造其他语言提供了语法机制,同时不会通过预定义的语法限制表达式的一种语言。XML定义在SGML文档类型语言中。如果遵守XML严格的语法要求则称为形式良好(well-formedness), 如果满足形式良好的要求,跨应用程序和不同用户代理的文档就能获得精确而准确的统一处理。

XML是一种语法:它定义了如何写数据,而不是要写什么数据。例如:

<something otherthing="stuff">contentsomething>

HTML

HTML 是超文本标记语言(HyperText Markup Language),设计 HTML 的目的是创建结构化的文档,提供文档的语义。

HTML是一个词汇表: 它定义了你能写的元素类型 (例如: BODY, P, LI, etc.) 但是并不严格限制你怎么写 (see “Tag soup”);

HTML 1.0 用英语写成(言外之意,只是用英语描述了一下,没有用到其他编程语言),既非 SGML 也非 XML。

HTML 2 - 4 用SGML写成,具有SGML的灵活性,例如大写的标签,或没有匹配结尾标签的起始标签。

HTML 5 是 HTML 的下一代版本 (当前版本 HTML 4), 仍在起草中,还没有成为一种标准, 一些实验性的浏览器部分地支持。HTML 5 将显式支持XML语法和tag soup。HTML 5与HTML 1.0一样,没有使用任何元语言来定义,用英文文本编写,并与XML序列化的统一要求完全相反,HTML 5看起来是为了可用性和媒体传输(media delivery)而创建的,结构或语言层次结构则没有考虑。

XTHML

XHTML 是基于XML的 HTML, 作用与HTML相同,确定文档结构的markup规则与XML相同。除了使用(更严格的)XML语法编写外,XHTML(大约)是HTML词汇表。 因此它(因为语法更严格)更易于其他软件对其进行解析,但非程序员难以正确写出XHTML。 它不是非常流行,因为Internet Explorer不能正确支持它。

XHTML 1.0 是一种SGML定义的HTML语言形式,它具有一些扩展的需求,以便逐渐兼容XML语法。

XHTML 1.1是一种用XML定义的,具备XML形式良好(well-formedness)要求的一种HTML语言。

XHTML 5代表“HTML 5的XML序列化”,是一种HTML5的XML语法,可以在将DOM树序列化回(serializing back into)HTML5时使用(DOM树无法区分标签,soup tag 和正确标签)[不知道soup tag 是什么???],并且必须遵守更加严格的XML规则和名称空间。设计 XHTML 5的目的是为了让机器的阅读或数据交换更容易,或者便于比较两个HTML 5文档。 它是与HTML 5标准一起指定的。

其他

SGML

SGML( Standard Generalized Markup language 即标准通用标记语言)是一种类XML的语言,甚至是XML的父语言。 SGML通过没有数据类型约定的语法为定义数据提供了一种十分广泛的形式。不同于SGML,XML具有严格且极端简化的语法,且十分易懂。 与SGML不同,XML也具有数据类型定义的特征。 XML中的元素以lambda方式提供名字空间范围,而SGML不支持名称空间。

Doctype

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

XML Schema(不确定是什么)

XML Schema是一种用XML写的语言,除了元素,结构和属性的特定数据类型约定外,还允许使用精确的结构形式进行语言的语法定义。 与SGML词汇表不同,用Schema写的语言在结构上具有自我意识(structurally self-aware),因此这种语言在结构中的任意不同点都了解自己的内部需求。 由于结构性自我意识(structural self-awareness),由schema定义的语言能够立即通过Schema文档的引用进行验证,而在Doctype中定义的语言则需要有具有静态定义的无关的软件才能执行验证。


[1] https://stackoverflow.com/questions/1429065/compare-contrast-html-xhtml-xml-and-html5

你可能感兴趣的:(Other)