> For the complete documentation index, see [llms.txt](https://yangsx95.gitbook.io/notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yangsx95.gitbook.io/notes/front-end/html/doctype-biao-qian-xhtml-yu-html-de-qu-bie.md).

# DOCTYPE标签、XHTML与HTML的区别

### HTML `<DOCTYPE>`

经常在html文档头部看到类似下面的声明，一直很疑惑，不清楚它的意思，也不清楚和html和xhtml有什么区别…

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

`<!DOCTYPE>` DocType Decaration声明头。这个标签告诉了浏览器文档使用了哪种HTML 或 XHTML规范

说起HTML规范，同样有一个疑惑在我这里——为什么没有HTML1、2、3,而直接跳到4了？经过度娘后发现，当时因为html并不是太标准，加之浏览器匮乏，所以一直没有被推广，HTML真正被推广是在HTML4.01的时候。HTML4.01也是现阶段最常用的版本，并且HTML4.01是在IE6开始兼容的，而HTML5实在IE9开始兼容的。为了保证兼容性，所以，大部分网页都是使用HTML4.01标准，而移动端可以使用HTML5标准。

### XHTML

那么什么是XHTML呢？XHTML中的X代表严格的意思。顾名思义，XHTML是HTML4.01的一个小类，一些人认为HTML4.01的标准版的语法规则太过随意（比如：可以随意使用大小写，属性值可以不加引号），所以又定制了XHTML，用来规范语法问题。所以，就此将HTML4.01分为了两个大类：HTML与XHTML

每种又分为三种，分别是strict、transitional、frameset，所以一共有6中HTML4.01

strict：语法上更为严格，比如：html中u标签表示下划线，但是html只表示文字的语义，不表示文字的样式，所以在此类中，是不可以使用 `<u>` 标签的

transtional：普通的

frameset：用于带有框架的文档

### 声明文档使用的规范

既然种类如此繁多，那么就要有一种方式来告诉浏览器，当前文档使用了哪一个标准：

注：DTD，DocType Decaration

HTML Strict DTD：

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

HTML Transitional DTD：

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

HTML Frameset DTD：

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

XHTML Strict DTD：

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

XHTML Transitional DTD：

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

XHTML Frameset DTD：

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

这样我们再看 `<!DOCTYPE>` 就很清楚了。

HTML5的DOCTYPE就很简单了：

```
<!DOCTYPE html>
```
