在推广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
分享到:
相关推荐
XHTML 1.0和XHTML 1.1也有类似的区别,例如XHTML 1.0 Strict的声明为: ```html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> ``` 而XHTML ...
3. **文档类型声明**:在HTML和XHTML中,文档类型的声明`<!DOCTYPE>`用于指示浏览器按照哪种标准解析文档。例如,HTML 4.01的声明可能为`<!DOCTYPE ...
而XHTML 1.0 Strict的DOCTYPE声明是: ```html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> ``` 值得注意的是,HTML5不再需要引用DTD,其...
在`Strict`模式下,元素必须正确关闭(例如,` `应写为` `),不允许使用内联样式和某些不推荐的元素。而在`Transitional`模式下,这些限制相对宽松,适合逐步迁移旧代码到更严格的规范。 表中列举的HTML...
**DOCTYPE声明**是HTML或XHTML文档中的一个重要组成部分,它位于文档的第一行,用来告诉浏览器文档应遵循哪个版本的HTML或XHTML规范。这个声明对于确保网页在不同浏览器上的一致性和正确渲染至关重要。 DOCTYPE声明...
DOCTYPE>标签的定义和用法。 准确的说,<!DOCTYPE>并不是HTML标签,它声明web浏览器关于页面使用哪个 HTML 版本进行编写的指令。 在 HTML 4.01 中,<!DOCTYPE> 声明引用 DTD,因为 HTML 4.01 基于 SGML。DTD 规定了...
DOCTYPE>` 是一个非常重要的声明,它的主要作用是告诉浏览器文档遵循的HTML或XHTML规范版本,以便浏览器能够正确地解析和渲染页面内容。这个声明位于HTML文档的开头,且必须在 `<html>` 标签之前。 `<!DOCTYPE ...
DOCTYPE声明在HTML和XHTML文档中起着至关重要的作用,它告诉浏览器文档应该按照哪种标准或模式进行解析。DOCTYPE声明位于文档的最顶部,通常在`<html>`标签之前。它的主要作用是触发浏览器的“呈现模式”,决定...
HTML版本声明DOCTYPE...了解不同HTML版本和XHTML版本的DOCTYPE声明的区别,可以帮助开发者编写出既符合标准又能兼容不同浏览器的网页。随着技术的发展,建议开发者遵循最新的HTML5规范,以确保网页的兼容性和现代性。
XHTML 1.0规范中,根据不同的设计需求,提供了两种主要的DOCTYPE声明:Transitional(过渡型)和Strict(严格)。此外,还有Frameset DOCTYPE,但在此不予详述。这两种类型的DOCTYPE在HTML 4.01中也有所体现,分别...
在XHTML中,`xmlns`属性用于声明名字空间,这在XML中非常重要,因为它允许在同一个文档中使用多个不同来源的词汇表,避免了标签名称的冲突。例如,在HTML中,`<html>`标签是默认的,但在XHTML中,必须声明其属于哪个...
标题中的"DOCTYPE.rar_page"可能是指一个HTML页面的DOCTYPE声明被存入了一个名为"DOCTYPE.rar"的压缩文件中,而".rar_page"可能是某种特定的文件结构或者命名约定,表示这是压缩包内的一个页面文件。描述提到的是...
4. **空标签**:XHTML中的空标签必须以斜杠结尾,例如` `。 5. **文档类型声明**:XHTML文档必须包含文档类型声明(DOCTYPE)来指定使用的DTD(Document Type Definition,文档类型定义)。 6. **命名空间**:...
XHTML文档的验证是通过DOCTYPE声明进行的,它定义了文档遵循的DTD,也就是文档的结构规则。DOCTYPE声明位于文档的开头,通常在`<html>`标签之前。有三种主要的XHTML DTD可供选择,每种都有不同的语法规则: 1. 严格...
例如,`<HTML>`和`<html>`在HTML中被视为相同,但在XHTML中则不同。因此,在转换过程中需要确保所有的标签名称都是小写的。 #### 4. 属性值必须加引号 根据W3C的XHTML 1.0规范,每个属性值都应该用引号括起来,...
DOCTYPE标签在HTML和XHTML文档中扮演着至关重要的角色,它是文档类型定义(Document Type Definition)的简写,用于告诉浏览器文档遵循的HTML或XHTML规范。DOCTYPE声明位于文档的开头,即`<html>`标签之前,其主要...
为了确保文档的正确解析和显示,XHTML文档必须包含正确的DOCTYPE声明。例如,对于XHTML 1.0 Strict文档,应使用以下声明: ```html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ...