1 起源
SGML、HTML、XML、XHTML、HTML5
从这五者的名字中,我们都可以看到 “ML” 这两个字母,所以我们先从 “ML” 说起。
“ML”即 “Markup language(置标语言)”。根据维基百科对其的解释,“Markup language” 是用标准的标记来解释纯文本文档的内容,从而提供关于文档结构或文档该如何渲染的信息。置标语言的发展可以用下图来表示:
GML 是第一代置标语言,使文档能明确将标示和内容分开,所以文件使用同样的标示方法。
SGML 在 GML 的基础上进行整理,形成了一套非常严谨的文件描述方法。它的组成包括语法定义,DTD,文件实例三部分。SGML 因太严谨规范达500多页,故而不易学、不易用、难以实现,所以在它的基础上又发展出了其他的更易用的置标语言。
HTML 是人们抽取了 SGML 的一个微小子集而提取出来的。其早期规范比较松散,但比较易学。
XML 也是 SGML 的一个子集,但使用比较严格的模式。
XHTML 的出现是因为HTML扩充性不好,内容的表现跟不上时代的变化(如无法表示某些化学符号等),以及因为性能的问题,官方逐渐趋于严格的模式,所以使用 XML 的严格规则的 XHTML 成了 W3C 计划中 HTML 的替代者。
HTML 经过一系列修订,到现在说的 HTML 一般指 HTML 4.01;而现在的 HTML 5 则是 HTML 的第五个修订版,其主要的目标是将互联网语义化,以便更好地被人类和机器阅读,并同时提供更好地支持各种媒体的嵌入。而HTML5本身并非技术,而是标准。它所使用的技术早已很成熟,国内通常所说的html5实际上是html与css3及JavaScript和api等的一个组合,大概可以用以下公式说明:HTML5≈HTML+CSS3+JavaScript+API.
2 定义和特点
(1) XML
XML是Extentsible Markup Language 可扩展标记语言
XML是用来定义其他语言的一种元语言,其前身是SGML(标准通用标记语言)。它没有标签集(tag set),也没有语法规则(grammatical rule)。但 是它有句法规则(syntax rule)。
不论什么XML文档对不论什么类型的应用以及正确的解析都必须是良构的(well-formed)。即每个打开的标签都必须有匹配的结束标签,不得含有次序颠倒的标签,而且在语句构成上应符合技术规范的要求。 XML文档能够是有效的(valid),但并不是一定要求有效。所谓有效文档是指其符合其文档类型定义(DTD)的文档。
假设一个文档符合一个模式(schema)的规定 。那么这个文档是模式有效的(schema valid)。
(2) HTML
HTML是Hypertext Markup Language超文本链接标示语言。
HTML(HyperTextMark-upLanguage)即超文本标记语言,是WWW的描写叙述语言。设计HTML语言的目的是为了能把存放在一台电脑中的文本或图形与还有一台电脑中的文本或图形方便地联系在一起,形成有机的总体,人们不用考虑详细信息是在当前电脑上还是在网络的其他电脑上。我们仅仅需使用鼠标在某一文档中点取一个图标。Internet就会立即转到与此图标相关的内容上去。而这些信息可能存放在网络的还有一台电脑中。
HTML文本是由HTML命令组成的描写叙述性文本,HTML命令能够说明文字、图形、动画、声音、表格、链接等。HTML的结构包括头部(Head)、主体(Body)两大部分,当中头部描写叙述浏览器所需的信息。而主体则包括所要说明的详细内容。另外,HTML是网络的通用语言,一种简单、通用的全置标记语言。它同意网页制作人建立文本与图片相结合的复杂页面,这些页面能够被网上不论什么其它人浏览到,不管使用的是什么类型的电脑或浏览器。
(3) XHTML
XHTML 是EXtensible HyperText Markup Language扩展超文本标签语言
作为下一代的HTML。我们能够理解XHTML是HTML的升级版。XHTML是HTML像XML的一个过渡语言。它比HTML严谨性会高点。然后基本语言都还是沿用的HTML的标签。仅仅只是废除了部分表现层的标签,同事在标准上要求高了点比方标签的严格嵌套,标签结束等等。今天的市场中存在着不同的浏览器技术。某些浏览器执行在计算机中,某些浏览器则执行在移动电话和手持设备上。而后者没有能力和手段来解释糟糕的标记语言。
因此,通过把 HTML 和 XML 各自的好处加以结合,我们得到了在如今和未来都能派上用场的标记语言 - XHTML。XHTML 能够被全部的支持 XML 的设备读取。同一时候在其余的浏览器升级至支持 XML 之前,XHTML 使我们有能力编写出拥有良好结构的文档。这些文档能够非常好地工作于全部的浏览器,而且能够向后兼容。
3 区别和对比
3.1 XML和HTML
XML和HTML的对照:
(1) XML是被设计用来描写叙述数据的,重点是:什么是数据,怎样存放数据。
(2) HTML是被设计用来显示数据的,重点是:显示数据以及怎样显示数据更好上面。
HTML与XML之间的关系:
(1) 事实上HTML与XML之间没有很必定的联系,XML不是要替换HTML,实际上XML能够视作对HTML的补充。
(2) XML和HTML 的目标不同:HTML 的设计目标是显示数据并集中于数据外观。而XML的设计目标是描写叙述数据并集中于数据的内容。
(3) 与HTML相似,XML不进行不论什么操作。尽管XML标记可用于描写叙述订单之类的项的结构,但它不包括可用于发送或处理该订单以及确保按该订单交货的不论什么代码,其它人必须编写代码来实际对XML格式的数据运行这些操作。
与 HTML 不同,XML 标记由架构或文档的作者定义,而且是无限制的。
HTML 标记则是提前定义的;HTML 作者仅仅能使用当前 HTML 标准所支持的标记。
(4) 与 HTML 不同。XML 标记由架构或文档的作者定义,而且是无限制的。HTML 标记则是提前定义的;HTML 作者仅仅能使用当前 HTML 标准所支持的标记。
3.2 HTML与XHTML
HTML与XHTML对照:
XHTML作为HTML的升级版。当然会有很多其它的规范。详细例如以下:
(1) 全部的标记都必需要有一个相应的结束标记。
曾经在HTML中。你能够打开很多标签,比如和<li>而不一定写相应的和</li>来关闭它们。但在XHTML中这是不合法的。
XHTML要求有严谨的结构,全部标签必须关闭。
假设是单独不成对的标签。在标签最后加一个"/"来关闭它。
比如:<img height="80" alt="网页设计师" src="../images/logo_w3cn_200x80.gif" width="200" />。
(2) 全部标签的元素和属性的名字都必须使用小写。
与HTML不一样,XHTML对大写和小写是敏感的。
<title>和<TITLE>是不同的标签。XHTML要求全部的标签和属性的名字都必须使用小写。比如:<BODY>必须写成<body> 。大写和小写夹杂也是不被认可的。
通常dreamweaver自己主动生成的属性名字"onMouseOver"也必须改动成"onmouseover"。
(3) 全部的XML标记都必须合理嵌套。
相同由于XHTML要求有严谨的结构。因此全部的嵌套都必须按顺序。
曾经我们这样写的代码:<p><b></p></b>必须改动为:<p><b></b></p>。
就是说。一层一层的嵌套必须是严格对称。
(4) 全部的属性必须用引號""括起来。
在HTML中。你能够不须要给属性值加引號,可是在XHTML中,它们必须被加引號。
比如:<height=80>必须改动为:<height="80">。
特殊情况,你须要在属性值里使用双引號,你能够用",单引號能够使用',
比如:<alt="say'hello'">
(5) 把全部<和&特殊符号用编码表示。
不论什么小于号(<)。不是标签的一部分,都必须被编码为& l t ;不论什么大于号(>),不是标签的一部分,都必须被编码为& g t 。不论什么与号(&),不是实体的一部分的,都必须被编码为& a m p;注:以上字符之间无空格。
(6) 给全部属性赋一个值。
XHTML规定全部属性都必须有一个值,没有值的就反复本身。
比如:<input type="checkbox" name="shirt" value="medium" checked>
必须改动为:
<input type="checkbox" name="shirt" value="medium" checked="checked" />
(7) 不要在凝视内容中使“--”。“--”仅仅能发生在XHTML凝视的开头和结束,也就是说,在内容中它们不再有效。
比如以下的代码是无效的:<!--这里是凝视-----------这里是凝视-->:用等号或者空格替换内部的虚线。
<!--这里是凝视============这里是凝视-->:以上这些规范有的看上去比較奇怪,但这一切都是为了使我们的代码有一个统一、唯一的标准,便于以后的数据再利用。
(8) 图片必须有说明文字。每一个图片标签都必须有ALT说明文字。
<img src="ball.jpg" alt="large red ball" title="large red ball"/> //为了兼容火狐和IE浏览器,对于图片标签,尽量採用 alt和title双标签,单纯的alt标签在火狐下没有图片说明。
3.3 怎样将 HTML 转换为 XHTML
加入一个 XHTML <!DOCTYPE> 到网页中。
加入 xmlns 属性到每一个页面的 html 元素中。
改动全部的元素为小写。
关闭全部的空元素。
改动全部的属性名称为小写。
全部属性值加入引號。