在推广Web标准的今天,那些崇尚Web标准的人经常说XHTML比HTML更加严格,当然从某种意义上说是的,比如它要求所有的标签关闭并且所有
的属性都用引号。但其实XHTML 1.0还分两种(加上Frameset
DOCTYPE的话算三种,本文不讨论),Transitional(过渡型)和Strict(严格)DOCTYPEs。并且HTML
4.01也有同样的文档声明。
从字面上就可以看出来意思:Transitional DOCTYPEs只是为了实现从旧时代到新时代的过渡,而且Strict DOCTYPEs是默认的文档声明, 对构造HTML 4.01和XHTML 1.0都适用。
使用Transitional DOCTYPE一般是由于代码中含有过多陈旧的写法,并且一下子很难完全转换到Strict
DOCTYPE来。但是Strict DOCTYPE才应该是你的目标。它鼓励甚至有时是强迫你把结构与表现区分开来,把表现层的代码都写在CSS里。HTML 4 Document Type Definition
:
本HTML 4.01 Strict DTD不包括表现层属性和标签,W3C将逐渐淘汰这些属性和标签,您完全可以使用样式表来实现。您应该使用Strict DTD,如需获得表现层属性和标签的支持,请使用Transitional DTD。
用Strict DOCTYPE还有一个好处,即可以让浏览器使用它们最严格、(一定程度上)最符合标准的模式来渲染页面。
Tommy Olsson在Web Standards Group的Ten questions for Tommy Olsson
一文中很好的阐述了使用Strict的好处:
我觉得,使用Strict DTD,无论是HTML 4.01 Strict还是XHTML 1.0 Strict,远比讨论是用HTML还是XHTML重要的多。它代表了未来互联网的质量。它将结构和表现分开,使得维护一个站点非常容易。
对于刚开始接触web standards和正确的、语义化的结构的人,认清Transitional和Strict DOCTYPEs的区别非常重要。更多详细列表请参考:XHTML: Differences between Strict & Transitional
、Comparison of Strict and Transitional XHTML
和XHTML1.0 Element Attributes by DTD
。
对于准备向Strict进发的人来说,两者的有些区别很可能会使开发者犯错误,接下来我将会谈到。
在Strict DOCTYPEs下不支持的标签
- center
- font
- iframe
- srike
- u
在Strict DOCTYPEs下不支持的属性
- align (表格相关的支持:col, colgroup, tbody, td, tfoot, th, thead, and tr)
- language
- background
- bgcolor
- border (table支持)
- height (img和object支持)
- hspace
- name (在HTML 4.01 Strict中支持,XHTML 1.0 Strict中的form和img不支持)
- noshade
- nowrap
- target
- text, link, vlink, 和alink
- vspace
- width (img, object, table, col, 和 colgroup都支持)
内容模型的区别
元素类型的内容模型描述了什么样的元素类型实例可以被包含。这一点上,两种文档声明的最大区别在于blockquote, body, 和form元素仅能够包含块级元素,如:
- 文本和图像不允许直接包含在body中,必须被p或者div等块级元素包含
- input元素不能直接是form元素的下一层
- blockquote元素内的文本,必须被p或者div等块级元素包含
将所有的表现都交给CSS,恪守Strict标准
在向Strict DOCTYPEs过渡的过程中,了解每个元素是做什么的比知道每个元素长啥样有效的多。
首先考虑结构和语义,然后再担心表现。
英文原文:Transitional vs. Strict Markup
分享到:
相关推荐
DOCTYPE>标签的定义和用法。 准确的说,<!DOCTYPE>并不是HTML标签,它声明web浏览器关于页面使用哪个 HTML 版本进行编写的指令。 在 HTML 4.01 中,<!DOCTYPE> 声明引用 DTD,因为 HTML 4.01 基于 SGML。DTD 规定了...
NULL 博文链接:https://liuzidong.iteye.com/blog/850929
其实XHTML 1.0还分两种(加上Frameset DOCTYPE的话算三种,本文不讨论),Transitional(过渡型)和Strict(严格)DOCTYPEs。并且HTML 4.01也有同样的文档声明。 在推广Web标准的今天,那些崇尚Web标准的人经常说...
经常会用到DOCTYPE,常用的有xhtml 1.0和html 4.01,总结了下他们之间的区别
要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个...DOCTYPE声明包括:过渡型(Transitional),严格型(Strict)和框架型(Frameset)。接下来就看一下这三种类型对不同浏览器在
DOCTYPE文档类型声明..........
XHTML的声明太长了,我相信很少会有前端开发人员能手写出这个Doctype声明。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> HTML 5...
很多朋友不知道DOCTYPE声明的作用,特为大家搜索整理了这篇文章,希望对需要的朋友有所帮助。
HTML的!DOCTYPE是什么意思.zip
博客文章: 关于HTML中的 <!DOCTYPE> 声明 文章配套示例HTML源代码 内容说明:DOCTYPE是Document Type(文档类型)的简写,要想制作符合标准的HTML页面,一个必不可少的关键组成部分就是DOCTYPE声明。
HTML 元素与合法的 Doctype.docx
XHTML定义了三种文件类型声明。 最普遍使用的是XHTML Transitional。 <!DOCTYPE>是强制使用的。 一个XHTML文档有三个主要的部分: DOCTYPE Head Body 基本的文档结构是这样的: <!DOCTYPE …><...
DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前。此标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范。如果不写,可能会造
HTML !DOCTYPE 标签.docx
html标题_DOCTYPE的含义 有关DOCTYPE标签的各种用法
XHTML的声明太长了,我相信很少会有前端开发人员能手写出这个Doctype声明。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ...
声明的作用、取值与区别 (目前来说,这个知识点的重要程度正在逐渐降低中,不过作为前端开发者还是有必要做一下了解的,但没必要深入探究了。) ,所以需要在文档开头声明引用一个 DTD。 在 HTML 5 中,DOCTYPE 不...
DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1. doctype是什么 doctype标签 用来指定document的dtd(Document Type Definition)的,写在每个html的最前面...
CSS+DIV 学习面向网页制作的书籍