超文本标记语言英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。HTML是一种基础技术,常与CSSJavaScript一起被众多网站用于设计令人赏心悦目的网页、网页应用程序以及移动应用程序的用户界面[1]网页浏览器可以读取HTML文件,并将其渲染成可视化网页。HTML描述了一个网站的结构语义随着线索的呈现,使之成为一种标记语言而非编程语言

HTML元素是构建网站的基石。HTML允许嵌入图像与对象,并且可以用于创建交互式表单,它被用来结构化信息——例如标题、段落和列表等等,也可用来在一定程度上描述文档的外观和语义。HTML的语言形式为尖括号包围的HTML元素(如<html>),浏览器使用HTML标签和脚本来诠释网页内容,但不会将它们显示在页面上。

HTML可以嵌入如JavaScript脚本语言,它们会影响HTML网页的行为。网页浏览器也可以引用层叠样式表(CSS)来定义文本和其它元素的外观与布局。维护HTML和CSS标准的组织万维网联盟(W3C)鼓励人们使用CSS替代一些用于表现的HTML元素[2]

                    From Wikipedia


首先,介绍下.html和.html

html是当今网页文件的一种最基本的,也是使用最广泛的保存格式,是一种超文本标记语言,是WWW的描述语言,与PHP、jsp、asp之类的动态网页技术所保存的文本格式不同,页面中没有嵌入任何服务器端要执行的语句,是一种静态的页面格式,一般的浏览器都能够直接解释并显示。

关于htm,其实与html并没有本质意义上的区别,只是为了满足DOS的8+3(文件名不能超过8个字符,扩展名不能超过3个字符)的文件名名规范。因为一些老的系统(32位)不能识别4位文件扩展名,所以某些服务器要求.html的最后一个l省略。浏览器能自动识别和打开这些文件,但编写这些网页网址的时候必须是对应的,也就是说index.html和index.htm是两个不同的文件,对应着不同的地址。


其次,介绍下.shtml和.shtm

关于shtml,是一种基于SSI技术支持的文件,也就是Server Side Include--SSI服务器段的包含指令,一些Web Server如果有SSI功能的话就会对shtml文件进行特殊的招待,服务器首先会先扫描一次shtml文件看下有没有特殊的SSI指令的存在,如果有的话就按照Web Server的设定规则解释SSI指令,然后解释完后就会跟普通的HTML被浏览器解释并显示。

关于shtm,shtm与shtml的关系和htm与html的关系大致相似,这里不再赘述...


最后,html或htm与shtml或shtm的关系

html或者htm是一种静态的页面格式,也就是说不需要服务器解析其中的脚本,或者说里面没有服务器端执行的脚本,而shtml或者shtm由于是基于SSI技术,当有服务器端执行脚本时被当作一种动态语言来看待,就如PHP、JSP或者ASP一样。

当shtml或者shtm中不包含服务器端可执行脚本时其作用和html或者htm是一样的。



strict html 4.01 标准

  <html> 必须是root元素
  <head>和<body> 是 <html>中一定有且只有的元素
  <head> 必须有 <title>, <meta>和<style>可选, 他们只能在<head>里
  <body> 里只能有 block元素
  block元素不能放在inline元素里
  block元素不能放在<p>里
  <ul>和<ol>中只能有<li>元素,但<li>里可以放其他,包括block元素
  <blockquote>中只能放block元素

  xhtml 1.0 标准

  html元素需要有xml相关属性
  元素名必须是小写字母
  元素属性用"包围,不能为空值
  在内容里不能有&, 需要转义,包括其他特殊字符<>
  空元素以 />结尾



常用的 DOCTYPE 声明

HTML 5

<!DOCTYPE html>

HTML 4.01 Strict

该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

HTML 4.01 Transitional

该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

HTML 4.01 Frameset

该 DTD 等同于 HTML 4.01 Transitional,但允许框架集内容。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" 
"http://www.w3.org/TR/html4/frameset.dtd">

XHTML 1.0 Strict

该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。必须以格式正确的 XML 来编写标记。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Transitional

该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。必须以格式正确的 XML 来编写标记。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.0 Frameset

该 DTD 等同于 XHTML 1.0 Transitional,但允许框架集内容。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

XHTML 1.1

该 DTD 等同于 XHTML 1.0 Strict,但允许添加模型(例如提供对东亚语系的 ruby 支持)。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">