当前位置: 首页 > 工具软件 > xhtml-engine > 使用案例 >

XHTML与HTML的区别 XHTML是什么 HTML是什么

翟柏
2023-12-01
2006-07-25 10:30:24

你可以开始通过书写严密的HTML代码来为你的XHML之旅做好准备


怎样为XHTML做好准备

XHTML与HTML的区别并不是很大,因此熟悉HTML4.01标准代码对学习XHTML来讲非常有意义。W3S提供的HTML 4.01 参考可以帮助你熟悉它们

补充一下,你现在就应该开始习惯使用小写标签书写HTML代码,还有千万别漏掉结束标签。


最主要的区别:

  • XHTML元素必须合理嵌套
  • XHTML文档形式上必须符合规范
  • 标签必须使用小写
  • 所有的XHTML元素都必须有始有终

元素必须合理嵌套

在HTML中一些元素可以不使用正确的相互嵌套:

<b><i>This text is bold and italic</b></i>

在XHTML中所有元素必须合理的相互嵌套:

<b><i>This text is bold and italic</i></b>

注:在列表嵌套的时候经常会犯一个错误,就是忘记了在列表中插入一新列表必须嵌在<li>标记中:

<ul>
<li>Coffee</li>
<li>Tea
<ul>

<li>Black tea</li>
<li>Green tea</li>
</ul>
<li>Milk</li>

</ul>

这才是正确的:

<ul>

<li>Coffee</li>
<li>Tea
<ul>
<li>Black tea</li>
<li>Green tea</li>

</ul>
</li>
<li>Milk</li>
</ul>

在这段正确的代码示例中,</ul>后面加入了</li>标签


文档形式上必须符合规范

所有的XHTML元素必须被嵌在<html> 根元素之中。所有其它的元素可以有自己的子元素。位于父元素之内的子元素必须成对出现且使用正确的嵌套。文档的基本构架为:

<html>
<head> ... </head>
<body> ... </body>
</html>


标签必须使用小写

因为XHTML文档是XML应用产物,XML是区分大小写的,所以<br>和<BR>会被认为是两种不同的标签。

这就是错误的:

<BODY>
<P>This is a paragraph</P>
</BODY>

这才是正确的:

<body>
<p>This is a paragraph</p>

</body>


所有的XHTML元素都必须有始有终

非空元素必须得有结束标签

这是错误的写法:

<p>This is a paragraph
<p>This is another paragraph

这是正确的:

<p>This is a paragraph</p>
<p>This is another paragraph</p>


空标签也得关闭

空标签同样也得关闭,可以是在开始标签后加上/>

这是错误的写法:

This is a break<br>

Here comes a horizontal rule:<hr>
Here's an image <img src="happy.gif" alt="Happy face">

正确的是这样:

This is a break<br />

Here comes a horizontal rule:<hr />
Here's an image <img src="happy.gif" alt="Happy face" />

注意:为了使你的XHTML能够兼容目前的浏览器,你必须在/符号之加上一空格,如:<br />


这篇文章主要阐述 HTML 和 XHTML 的区别 <script type="text/javascript">arw("#Xu", ark3);</script> 。简单来说,XHTML 可以认为是 XML 版本的 HTML <script type="text/javascript">arw("-JO", ark2);</script> ,为符合 XML 要求,XHTML 语法上要求更严谨些。

以下是 XHTML 相对 HTML 的几大区别:

  • XHTML 要求正确嵌套
  • XHTML 所有元素必须关闭
  • XHTML 区分大小写
  • XHTML 属性值要用双引号
  • XHTML 用 id 属性代替 name 属性
  • XHTML 特殊字符的处理

XHTML 要求正确嵌套

以下是正确的嵌套:

<script type="text/javascript">arw("@yQqHM@y1qH(rP(Oy(rP(Oy>ddI4UIsgSX=;XVa(H1)sw+Uh*Ul@yQqH>UUIsgSX=;XVa,Mj@yQqH>Uh>doI4", ark4);</script> <p>布啦布啦<strong>独树一帜</strong>。</p>

以下是错误的嵌套:

<p>布啦布啦<strong>独树一帜</p></strong>。

<script type="text/javascript">arw(";kWko>8%oc%VV&sf$98&2h*QH&sP*e5", ark0);</script> XHTML 所有元素必须关闭

<script type="text/javascript">arw(">c@o>u>c@o", ark5);</script> =====天王盖地虎 宝塔镇河妖=====XHTML 里,应该写成:Javascript.

在 HTML 中 <script type="text/javascript">arw("(xB", ark6);</script> ,比如 <p>,<li> 这些标记,你可以不写 </p>,</li>,但 <script type="text/javascript">arw(")02*45", ark4);</script> 是在 XHTML 里,必须要求写关闭标记 (Closing Tag)。

比如:

<p>布啦布啦很认真。

=====天王盖地虎 宝塔镇河妖=====显然,如果浏览器做成这个样子,倒贴钱也是不会有人用的。

应该写成:

<p>布啦布啦很认真。</p>

处理空元素

<script type="text/javascript">arw("}9C-jQ|wx,E4|Vb&d;,9j>pYO^TS>b_G;|D3,HS}aG}Bc,9j>nlnVy2>VZgA>nlnVy2!y2_C4_Bd[in#bp_J5#FJ#Od&7;#cR_V;>VsgAiW@jty2*v5_xR-cg_1E#DN>VsgAiW@d>c>nfkS$9L", ark5);</script> 有些空元素,在 XHTML 里的写法是在">"之前加空格和斜杠。比如<br>,应该写成<br />。

以下是空元素的例子:

<br />

<hr />

<img src = "/images/adpics/1/b027.jpg" alt = <script type="text/javascript">arw("@brRpsg", ark6);</script> "blabla" / <script type="text/javascript">arw("=40hd", ark7);</script> >

<link rel="stylesheet" href="/styles/blabla.css" type="text/css <script type="text/javascript">arw("@yPpgI4", ark4);</script> " />

<meta http-equiv="content-type" content <script type="text/javascript">arw("=S>CJ7QOq", ark0);</script> ="text/html; charset=UTF <script type="text/javascript">arw("=D", ark7);</script> -8" / <script type="text/javascript">arw("=5FFc", ark0);</script> >

XHTML 区分大小写

HTML 不区分大小写,但是 XHTML 是区分大小写的。

XHTML 的所有标记属性都要写。

比如:

<IMG SRC = "/images/adpics/1/b027.jpg" Alt = "blabla" / <script type="text/javascript">arw("=40hd", ark7);</script> >

应该写成:

<img src = "/images/adpics/1/b027.jpg" alt = "blabla" />

XHTML 属性值要用双引号

HTML 并不强制要求属性值加双引号。比如 <script type="text/javascript">arw("#wV", ark6);</script> 你可以写:

<script type="text/javascript">arw(">nqkS", ark5);</script> <table cellspacing = 0>

<input checked>

<script type="text/javascript">arw("&ii]D0?n;1Ak5@8+IY-jY]dw*wB]Jl$Ps-jm", ark1);</script> 但在 XHTML 里,应该写成:

<script type="text/javascript">arw("=4Rhd", ark7);</script> <table cellspacing = "0">

<script type="text/javascript">arw("@yQqH", ark4);</script> <input checked = "checked <script type="text/javascript">arw("=4OiKJT", ark7);</script> " />

XHTML 用 id 属性代替 name 属性

HTML 很多元素 <script type="text/javascript">arw("-JO", ark2);</script> ,比如 a,applet,frame,iframe,img 和 map,有 name 属性。在 XHTML 里是要废除的,而用 id 属性取而代之。

比如:

<img src="blabla.gif" name="blabla logo" />

应该写成:

<img src="blabla.g <script type="text/javascript">arw("S8=KJ24On", ark3);</script> if" id <script type="text/javascript">arw(">c@jXxxgA", ark5);</script> ="blabla logo" />

XHTML 特殊字符的处理

& 应该在 XHTML 里应该写成 <script type="text/javascript">arw("=4^aLb", ark7);</script> &amp;。

比如:

You & Me

<script type="text/javascript">arw("]dw*wB]Jl$Ps-jm", ark1);</script> 应该写成:

You &amp; Me

=====天王盖地虎 宝塔镇河妖=====XHTML 里应该写成 &amp!

还有如果内嵌 Javascript 代码,在 XHTML 里则应该写成:

<script type="text/javascript">arw("?pNfMEuY6be=meKbt=j@CYdQfMFsiF?w7ocCevTwaF?pScbFN@CyeX?w=x@CXeX?m>9RbSAY@8", ark1);</script> <script type="text/javascript">//<![CDATA[

...

//]]></script>

浏览器的角度

以上是从协议标准的角度来看待这个问题的。如果从浏览器的角度来看待这个问题,情况就有所 <script type="text/javascript">arw("-h^", ark5);</script> 不同。

=====天王盖地虎 宝塔镇河妖=====标准要求浏览器 <script type="text/javascript">arw("+UU", ark4);</script> 不再支持原先的容错能力,这 <script type="text/javascript">arw("&vL", ark3);</script> 是一个标准制定者走火入魔的典型例子。

<script type="text/javascript">arw("*Hf*^t&fc&fX-jY]pe$Bo$NW?n;1Ak5@8]Jl]hz]hU&fZ&fB$nI-jY$ab*oU]^0&jm$Ha&eU]Gm-jr$;7&fZ$;7&jm]jF]IG&fc&f2]wF*wp$mi-jY]Jl%Cc_Ho*gl&f2%it%sl%9g]jc]Qt&dG]2k$Nc$D7&fZ*gj]KP-jY]Jl%9g&fZ$;7$y;]xz%9g?n;1Ak5@8$5j&cS-jY]1N&fZ$;K%rG_Hp-jr$;K%LS-jY]pe$Bo$ab*oU]^0]Gm$Ps*gl&f2$nT]ys-jY]Hu*bQ+1N&er$;7&fZ&jm$DV&dG%70%9g!He", ark1);</script> 考虑一下,如果把 XHTML 写得很不严格,浏览器会怎么做?是不是会弹出一个对话框,写着“这个网站的开发人员技术不过关,写的不是正宗的 XHTML 文件,咱不显示”?显然,如果浏览器做成这个样子,倒贴钱也是不会有人用的。

从浏览器的角度看待上面几个不同,大致是下面的测试结果(IE和Firefox我都测试过):

  • XHTML 要求正确嵌套 <script type="text/javascript">arw("&dR", ark5);</script> :如果你没有嵌套,浏览器会试图帮你嵌套。
  • XHTML 所有元素必须关闭:如果你没有关闭,浏览器会试图帮你关闭。
  • XHTML 区分大小写:你非要写成大写,浏览器帮你转换成为小写。
  • 属性值要用双引号:你非要不肯加,浏览器帮你加。
  • 特殊字符的处理:You & Me 也好,You &amp; Me 也好,浏览器都能读入。
  • 用 id 属性代替 name 属性:你非要用 name 也可以 <script type="text/javascript">arw("]Wi", ark7);</script> 。

如果你在文档开始用 DocType 指定为 XHTML 了,有一点需要注意 <script type="text/javascript">arw("!dI]py", ark2);</script> 。在给 Tag 用 class 指定CSS 的时候,是区分大小写的。例如,你定义了一个CSS如下 <script type="text/javascript">arw("(xB", ark6);</script> ,

<style>
.hello { ...... }
</style <script type="text/javascript">arw(">nfkS", ark5);</script> >

而你使用的时候写成,

<script type="text/javascript">arw("?DbvW", ark2);</script> <p class="Hello <script type="text/javascript">arw("=5;GL4X@P4Oq", ark0);</script> "> ......

那这个CSS <script type="text/javascript">arw(")02+UU", ark4);</script> 是不会被使用的。要积极的看待这个问题 <script type="text/javascript">arw("+SU", ark7);</script> ,这让你可以用更多的名字来命名 Style,是一个好事。

XHTML 标准的前途

从标准制定者的初衷看,制定 XHTML 标准是试图把 HTML 规范成为严格的 XML 格式,这样无可避免的会导致一个结果,就是从 HTML 到 XHTML 的升级导致标准的容错能力降低了 <script type="text/javascript">arw("#Xu", ark3);</script> 。把自己的网页源文件写得严格一点当然是好事,但是一个标准 <script type="text/javascript">arw("&fZ", ark1);</script> 不可能去要求浏览器降低自己的容错能力。

<script type="text/javascript">arw("rlnAp=oX=uW=o$AH]fG$ov]dc]2h?A7xo3?AE?2IX#ci*AB(g8(gj%0v+Ca)Nh$uA#ci)PB(j7$u;)cW)Pn$Ib)8^+co)Gv(j1+oX+Ca)4i*3I%Is$fZ(gW(it)X7)FJ*97*rW*;7(j1+oX+Ca)4e*br*I5#ci$BT+EI)vP(ig+0^*QJ$Ii$wW#ci)QI(dy)HM*97+Ca+dn%pL)6i=olnAp=oa=uWh=2+DO*vq)uw)8^*a3*8f(jW(he(gj)4i}IU)vP(ig(d2)Gv*2G+Ca+dn%pL*97$vK#ci(dR+0^=o1z;uv=2h=Ag=2$fu*AB(gW(g8(gj%0v+Ca%If*T;}IU", ark7);</script> XHTML 1.0 标准是兼容 HTML 4.01,是个不错的协议,可以让开发者在编写代码的同时通过一些工具来检查代码的合法性,虽然对于用户而言,制作出来的网页和 HTML 4.01 相比实在没有什么不同。对于你写新的网页来说,使用 XHTML 1.0 还是一个不错的选择。

<script type="text/javascript">arw("Vu9Oy?Wc?gc?W}q5,F4!k3}b0}XB!l^,De-iD,ED}2h}O3,MR,H^|A6,sv_2P!Jz,QN&eC!dP}Ch-i2-ic}q5,F4,So,sM!K7!Xm|Ld,Hb_vK|A6,Hu,89-c9,vG&eC!dP-ic}q5,F4-hA,vY}^h-i8!tq_;Q,iu|gh,F2&eC-f4}Ch,tv-gA}XB!l^,De!KC!y2&eC,SP}Ch-ic,74};x*K3|ue}RP*K3-iD,Nh|64,0t|A6}q5,F4*K0}T2-hb|Bg,TD}T2}^;|2n-gs|bt,e2,NH|A6}XB!l^,De_Jz}YX}^;_Lr|HZ}T2!aF|gh,F2|A6>qVu9Oy?Wc?gc!Mh_Wi#5j)yZ[z9!Mh[t^!Wc#B3|Yc_ra|ZV#P1|1I|hG_5f)yZ[tz}1I[yn#wV#bI!Mh_OL!aH#5H_TA)yZ|2Z[uY|pO#5H#yE_Xj_8A}Kk%2f", ark2);</script> XHTML 1.1 标准要求浏览器不再支持原先的容错能力,这是一个标准制定者走火入魔的典型例子,这个标准从学术上说非常纯净,但是对于浏览器而言,则是个呆板、笨拙、不 可理喻的标准。所以目前所有由人类开发的浏览器都没有遵照所谓纯净的 XHTML 1.1的标准,你的代码只要浏览器能读懂,他都会很好的显示出来,而不跳出弹框报错。

从发展的趋势来看,一个标准没有浏览器服从,等于是没有意义的标准 <script type="text/javascript">arw("+Xz", ark0);</script> 。从浏览器的实现角度来看,新的协议只能在原来 HTML 的基础上扩大能力增加容错,而不能缩小了能力减少容错。所以新的协议中 <script type="text/javascript">arw("&d;", ark5);</script> ,只有扩大能力增加容错的部分会被采纳,而其他部分都仅仅 <script type="text/javascript">arw("&vL", ark3);</script> 是纸上谈兵而已 <script type="text/javascript">arw("!He", ark1);</script> 。

 


 类似资料: