浅析网页Transitional和Strict的文档声明的区别

作者:暴风彬彬 来源:彬Go 时间:2009-02-17 12:45:00 

在推广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 & TransitionalComparison of Strict and Transitional XHTMLXHTML1.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,Strict,声明,文档
0
投稿

猜你喜欢

  • XML十项特点

    2008-04-05 13:49:00
  • asp用正则过滤html标签

    2008-01-19 16:34:00
  • CSS在页面布局中实现div水平居中的方法总结

    2008-06-03 12:09:00
  • 关于交互设计在QQ秀赠送流程中的优化

    2009-06-11 12:30:00
  • 分步启动数据库以重命名数据文件

    2009-03-25 12:33:00
  • MySQL内建复制功能来优化可用性

    2010-10-25 20:20:00
  • 驯服CSS选择器--健壮我们的样式表

    2009-10-27 16:13:00
  • 再谈javascript图片预加载技术

    2011-03-11 19:57:00
  • ASP+ajax注册即时提示程序代码

    2011-02-05 11:25:00
  • 看看那些名牌LOGO的成长史

    2009-03-24 20:37:00
  • SQL存储过程介绍

    2008-02-13 18:52:00
  • 全局字体最佳实践

    2009-08-13 14:37:00
  • 深入MySQL数据库的索引

    2009-02-26 15:27:00
  • 在SQL Server中使用CLR调用.NET方法

    2008-12-24 15:43:00
  • Mootools 1.2教程(10)——Fx.Tween的使用

    2008-12-02 18:03:00
  • 使用ASP实现广告代理

    2010-05-27 12:15:00
  • Sqlserver 2000/2005/2008 的收缩日志方法和清理日志方法

    2012-07-21 14:55:18
  • 讲解SQL Server危险扩展存储删除和恢复

    2008-12-09 14:30:00
  • SQL Server 压缩日志及数据库文件大小

    2009-05-13 10:29:00
  • JScript下Array对象的性能问题

    2009-02-15 12:28:00
  • asp之家 网络编程 m.aspxhome.com