HTML与XHTML的区别

XHTML文档必须具有良好完整的排版(well-formed)

编排良好性(Well-formedness)是XML引入的一个新概念.从本质上说,元素必须有结束标签 ,或者必须以特殊方式书写,而且元素必须嵌套.

尽管SGML规定重叠(overlapping)是非法的,但现有的浏览器普遍允许重叠.

正确:嵌套元素(nested elements)

<
p
>
梦之都 <
em
>
XHTML教程</
em
>
.</
p
>

不正确:层叠元素(overlapping elements)

<p>梦之都 <em>XHTML教程</p>.</em>

元素和属性名必须小写

对于所有HTML元素属性名 , XHTML文档必须使用小写. 因为XML是大小写敏感的.如  <li>    <LI>   是不同的标签.

对非空元素,必须使用结束标签

在基于SGML的HTML4中的一些隐含结束意义的元素允许忽略结束标签.XML不允许忽略结束标签.除了在DTD 中被声明为空的元素,所有元素必须有结束标签.

正确:结束的元素(terminated elements)

<
p
>
梦之都的XHTML教程.</
p
>
<
p
>
梦之都的CSS教程.</
p
>

不正确:未结束的元素(unterminated elements)

<p>梦之都的XHTML教程.<p>梦之都的CSS教程.

属性值必须在引号中

所有的属性值必须在引号中,即使是以数字形式的属性值

正确:在引号中的属性值(quoted attribute values)

<
table
 rows
=
"
3
"
>

不正确:不在引号中的属性值(unquoted attribute values)

<table rows=3>

属性最小化

XML不支持属性最小化.属性-属性值必须完整成对的写出.像disabled ,checked 这样的属性名不能在不指定属性值的情况下出现.

正确:非最小化属性(unminimized attributes)

<
input
 checked
=
"
checked
"
>

不正确:最小化属性(minimized attributes)

<input checked>

空元素

空元素必须有结束标签,或者起始标签必须以/> 结束.例如,<br/><hr></hr> .参看HTML兼容性指导HTML Compatibility Guidelines 中的信息,以保证向后兼容HTML 4用户代理程序.

正确:结束的空元素(terminated empty elements)

<
br
/>
<
hr
/>

错误:未结束的空标签(unterminated empty elements)

<br><hr>

属性值中的空白字符处理

用户代理处理属性值时将根据XML的下面方法操作Section 3.3.3 :

  • 删去引导和后序空白符
  • 将一个或多个空白符(包括换行)转换成单个字符间空间

Script and Style 元素

XHTML中,scriptstyle 元素被声明为#PCDATA内容形式,因此,<和&被看作是标识的开始,&lt和&amp等HTML实体 将被XML处理器看作为实体引用而分别被认为是<和&.将scriptstyle 元素的内容隐蔽在CDATA标记中避免了这些实体的扩张.

<
script
>

< ![CDATA [
... unescaped script content ...
]]>
</ script >

CDATA部分被XML处理器识别,表现为文档对象模型中的一个结点.参看Section 1.3 的DOM LEVEL 1推荐标准[DOM].

替代的方式是使用外部scriptstyle 文档.

SGML排斥

SGML给作者的DTD可以指定在一个元素内部禁止出现的元素.这样的禁止在XML中是不可能的.

例如,严格的HTML 4 DTD"禁止"任何深度的'a'元素对另一'a'元素的嵌套.在XML中无法写出这些的"禁止".虽然这些禁止不能被定义在DTD 中,但是一些元素不应该被嵌套.对不能被嵌套的元素Element Prohibitions 的总结.

具有'id'和'name'属性的元素

HTML4定义了name 属性的元素有a ,applet ,form ,frame ,iframe ,img   and  map .HTML4还引入了id属性.这两个属性都是被设计用为片段标识符.

在XML中,片段标识符是ID,每个元素只能有一个ID类型的属性.因此,在XHTML1.0中,id属性被定义为ID类型.为保证XHTML1.0文档是结构良好(well-structured)的XML文档,在定义一个片段标识符时,XHTML文档必须使用id属性,即使是对那些以前用name属性的元素.参看  HTML Compatibility Guidelines ,确保XHTML文档以text/html媒体类型使用时,这些"锚(anchors)"能向后兼容.

注意,在XHTML 1.0中,name 属性是不赞成使用的,在以后的XHTML版本中将被删除.

最后,做个总结:

  • 标签不能重叠,可以嵌套
  • 标签与属性都要小写
  • 标签都要有始有终,要么以</p> 形式结束,要么以<br /> 形式结束
  • 每个属性都要有属性值,并且属性值要在双引号中
  • 别用nameid   :)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值