HTML和XHTML的区别以及盒模型<!DOCTYPE>说明

XHTML维基百科
HTML维基百科

 

XHTML和HTML 4的区别

文档应该是结构良好的

良好结构 (Well-formed)是由XML 引入的一个新概念。也就是说所有的元素都必须有结束标签或者以特殊的方式书写(如下所述),而且所有的标签必须合理地嵌套。

尽管如此,交叉使用在SGML中仍然是合法的,而且在现有的浏览器中也能 够被广泛接受。

正 确:元素嵌套
<p><em>這是一個要强調的段 落。</em></p>
错误:元素交叉
<em><p> 這是一個要强調的段落。</em></p>

 

 

元素名称和属性必须小写

XHTML文件要求所有的HTML元素名称和属性名称都要小写。因为XML本身大小写意义不同,因此必须区分开来。比如,<li><LI> 是完全不同的。

对于非空标签,也需要结束标签

基于SGML的HTML 4里面,允许特定的标签省略结束标签;这些元素暗含有结束标记。XHTML不允许省略结束标记。所有元素(包括在DTD中声明为空的标签),都必须有结束标签。在DTD 中声明为空的元素可以用结束标签或者使用空元素速记法。

正确的:结束的元素
<p>这是一个段落。</p><p>这是另一个段落。</p>
错误的:没有结束的元素
<p>这是一个段落。<p>这是另一个段落。

 

属性值必须总是使用引号包裹

所有的属性值都必须使用引号包含,包括那些以数值类型出现的。

正确的:属性值使用引号
<td rowspan="3">
错误的:属性值没有使用引号
<td rowspan=3>

 

禁止属性简化

XML不支持属性简化,属性值对必须书写完整。属性名,像compact和checked在没有指定具体值的情况下,不能够使用。

正确的:没有简化属性
<dl compact="compact">
错误的:简化属性
<dl compact>

 

空元素

空元素必须有一个结束标签,或者用/> 来结束开始标签。例如,<br /> 或者<hr></hr>   。

正确的:结束空标签
<br /><hr />
错误的:没有结束空标签
<br><hr>

 

属性值中空白字符的处理

当客户端在处理属性时,它们依据的是XML的章节3.3.3

  • 祛除前缀和后缀的空白字符。
  • 将一个或多个空白字符序列映射为单个词间空格。

 

脚本和样式元素

在XHTML里面,脚本和样式的元素被声明为具有  #PCDATA   内容。因此,<和& 会被认为是标记的开始,另外&lt; 和  &amp; 会被 XML 解释器认为是实体映射被分别解释成为<& 。从而将脚本或者样式元素包裹在 CDATA 标记的部分以避免这些实体扩展。

<script type="text/javascript">  // <![CDATA[   ... 没有转义处理的内容...   // ]]>   </script>

在文档对象模型中,CDATA部分被XML解释器认为是节点,参见文档对象模型章节1.3的第一级别推荐DOM。
一种替代方法就是使用外部的脚本和样式文件。

 

 

 

 

 

 

 

 

SGML 排斥

SGML赋予DTD作者将特定的元素排斥在某个元素之外的能力。此种限制(被称为排斥)在XML中是不可能的。

例如,HTML 4的严格文档类型描述禁止“a   ”作为子元素嵌套在其他“a   ”的内部。这在XML中是不可能检查出这种限制的。尽管这种限制无法在DTD中定义,也不要嵌套使用某些特定的元素。关于此类元素和不能嵌套使用的元素概览可以在标准的元素限制里找到。

 

拥有“ id”和“ name”属性的元素

HTML 4定义了a, applet, form, frame, iframe, img, and map元素的 name属性。HTML 4还引入了id属性。这两个属性被设计用作片段标识符。 在XML里面,片段标识符是ID类型的,而且每个元素只能拥有单一的ID类型的属性。所以,在XHTML 1.0中id属性被定义为ID类型。为了确保XHTML 1.0文档是构建优良的XML文档,XHTML 1.0文档在为以上所列元素定义片段标识符时必须使用id属性。当XHTML文档作为text/html媒体类型使用时,确保此类锚点的向后兼容性信息参见兼容性指南。 注意:在XHTML 1.0中,不赞成此类元素拥有name属性,在XHTML的后续版本中将被去掉。

拥有预设值的属性

有一些 属性在HTML 4和XHTML中都有一套预设值(比如input 元素的type 属性)。在SGML和XML中,这些被称为枚 举属性 。在HTML 4里这些值的解释是不分大小写 的,所以值TEXT 等同于text 。在XML里, 这些值的解析是区分大小写 的,在XHTML1中,所有的这些值定义为小写。

十六进制值的实体映射

SGML和XML都允许使用十六进制的数值来映射字符。在SGML 里这些映射可以使用&#Xnn; 或者&#xnn; 。在XML文档中,必须使用小写的方式(比如,&#xnn; )。


HTML <!DOCTYPE> 标签

定义和用法

<!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前。此标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范。

该标签可声明三种 DTD 类型,分别表示严格版本、过渡版本以及基于框架的 HTML 文档。

以下面这个 <!DOCTYPE> 标签为例:

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

在上面的声明中,声明了文档的根元素是 html,它在公共标识符被定义为 "-//W3C//DTD XHTML 1.0 Strict//EN" 的 DTD 中进行了定义。浏览器将明白如何寻找匹配此公共标识符的 DTD。如果找不到,浏览器将使用公共标识符后面的 URL 作为寻找 DTD 的位置。

提示和注释:

注释: <!DOCTYPE> 标签没有结束标签!

HTML

HTML 4.01 规定了三种文档类型:Strict、Transitional 以及 Frameset。

HTML Strict DTD

如果您需要干净的标记,免于表现层的混乱,请使用此类型。请与层叠样式表(CSS)配合使用:

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

HTML Transitional DTD

Transitional DTD 可包含 W3C 所期望移入样式表的呈现属性和元素。如果您的读者使用了不支持层叠样式表(CSS)的浏览器以至于您不得不使用 HTML 的呈现特性时,请使用此类型:

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

Frameset DTD

Frameset DTD 应当被用于带有框架的文档。除 frameset 元素取代了 body 元素之外,Frameset DTD 等同于 Transitional DTD:

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

XHTML

XHTML 1.0 规定了三种 XML 文档类型:Strict、Transitional 以及 Frameset。

XHTML Strict DTD

如果您需要干净的标记,免于表现层的混乱,请使用此类型。请与层叠样式表(CSS)配合使用:

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

XHTML Transitional DTD

Transitional DTD 可包含 W3C 所期望移入样式表的呈现属性和元素。如果您的读者使用了不支持层叠样式表(CSS)的浏览器以至于您不得不使用 XHTML 的呈现特性时,请使用此类型:

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

XHTML Frameset DTD

当您希望使用框架时,请使用此 DTD!

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

如需检查你是否编写了带有正确 DTD 的合法 XHTML 文档,您可以把您的 XHTML 页面链接到一个 XHTML 验证器。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值