XHTML是具有延伸性的超文本標(biāo)記語(yǔ)言
出現(xiàn)XHTML目的就是要替代HTML
XHTML和HTML4.01幾乎相同
XHTML是更嚴(yán)密代碼更整潔的HTML版本
XHTML的定義形同將HTML視為XML(從代碼的結(jié)構(gòu)上)
XHTML是W3C的推薦標(biāo)準(zhǔn)
XHTML 1.0是一種在HTML 4.0基礎(chǔ)上優(yōu)化和改進(jìn)的的新語(yǔ)言,目的是基于XML應(yīng)用。XHTML是一種增強(qiáng)了的HTML,它的可擴(kuò)展性和靈活性將適應(yīng)未來(lái)網(wǎng)絡(luò)應(yīng)用更多的需求。下面 是W3C的HTML工作組主席Steven pemberton回答的關(guān)于XHTML的常見(jiàn)基礎(chǔ)問(wèn)題。
問(wèn):什么是XHTML?
答:XHTML是一種為適應(yīng)XML而重新改造的HTML。當(dāng)XML越來(lái)越成為一種趨勢(shì),就出現(xiàn)了這樣一個(gè)問(wèn)題:如果我們有了XML,我們是否依然需要 HTML?為了回答這個(gè)問(wèn)題,1998年5月我們?cè)谂f金山開(kāi)了兩天的工作會(huì)議,會(huì)議的結(jié)論是:需要。我們依然需要使用HTML。因?yàn)榇罅康娜藗円呀?jīng)習(xí)慣使 用HTML來(lái)作為他們的設(shè)計(jì)語(yǔ)言,而且,已經(jīng)有數(shù)以百萬(wàn)計(jì)的頁(yè)面是采用HTML編寫(xiě)的。
問(wèn):為什么XHTML 1.0相對(duì)HTML 4.0獨(dú)立發(fā)展?
答:并不是這樣。XHTML恰恰就是HTML 4.0的重新組織,(確切的說(shuō)它是HTML 4.01,是一個(gè)修正版本的HTML 4.0,只不過(guò)以XHTML 1.0命名發(fā)行。) 它們?cè)赬ML里的解釋會(huì)有一些必要的差別,但另一方面,它們依然非常相似,我們可以把XHTML的工作看作是HTML 4.0基礎(chǔ)上的延續(xù)。
問(wèn):XHTML 1.0如何實(shí)現(xiàn)XML標(biāo)準(zhǔn)?
答:XHTML就是一種XML應(yīng)用。它采用XML的DTD文件格式定義,并運(yùn)行在支持XML的系統(tǒng)上。這里要感謝XML的Namespaces功能,瀏覽 器制造商不需要再創(chuàng)造新的私有標(biāo)簽(tags),他們只需要在XHTML代碼里包含XML代碼片段,或者XML代碼里包含XHTML代碼片段。
問(wèn):XHTML 1.0最主要的優(yōu)勢(shì)是什么?
答:XML是web發(fā)展的趨勢(shì),所以人們急切的希望加入XML的潮流中。使用XHTML 1.0,只要你小心遵守一些簡(jiǎn)單規(guī)則,就可以設(shè)計(jì)出既適合XML系統(tǒng),又適合當(dāng)前大部分HTML瀏覽器的頁(yè)面。這個(gè)意思就是說(shuō),你可以立刻設(shè)計(jì)使用 XML,而不需要等到人們都使用支持XML的瀏覽器。這個(gè)指導(dǎo)方針可以使web平滑的過(guò)渡到XML。
另一個(gè)使用XHTML的優(yōu)勢(shì)是:它非常嚴(yán)密。當(dāng)前網(wǎng)絡(luò)上的HTML的糟糕情況讓人震驚,早期的瀏覽器接受私有的HTML標(biāo)簽,所以人們?cè)陧?yè)面設(shè)計(jì)完畢后必須使用各種瀏覽器來(lái)檢測(cè)頁(yè)面,看是否兼容,往往會(huì)有許多莫名其妙的差異,人們不得不修改設(shè)計(jì)以便適應(yīng)不同的瀏覽器。
用XML我們可以重新建立制度,瀏覽器制造商聯(lián)合采用'嚴(yán)格的錯(cuò)誤防御標(biāo)準(zhǔn)',如果XML代碼不兼容,瀏覽器拒絕顯示頁(yè)面,這樣設(shè)計(jì)工作在發(fā)布前必須修正每一個(gè)錯(cuò)誤。
問(wèn):用XHTML,網(wǎng)頁(yè)設(shè)計(jì)師會(huì)遇到和HTML一樣的瀏覽器兼容性問(wèn)題嗎?
答:希望不會(huì)。'嚴(yán)格的錯(cuò)誤防御標(biāo)準(zhǔn)'將幫助瀏覽器對(duì)代碼作出相同的響應(yīng),XML的namespaces功能使你可以增加自己的新標(biāo)簽而不需要特別的瀏覽 器支持。現(xiàn)在我們所需要得到保證的就是:所有瀏覽器開(kāi)發(fā)商一致并且完全遵守我們制定的CSS。寫(xiě)信給你的瀏覽器制造商,告訴你需要的CSS規(guī)范,你甚至可 以檢測(cè)瀏覽器是否聽(tīng)從你的設(shè)計(jì)。
問(wèn):學(xué)習(xí)XHTML是否很困難?
答:一點(diǎn)也不!
問(wèn):誰(shuí)可以采用XHTML 1.0設(shè)計(jì)?
答:因?yàn)閄HTML非常簡(jiǎn)單易于實(shí)現(xiàn),所以任何會(huì)用HTML的人都可以容易地使用XHTML。當(dāng)使用XML瀏覽器的人們?cè)絹?lái)越多,更多的工作會(huì)被建議使用XML,那時(shí)侯也許都將使用XHTML。
問(wèn):什么時(shí)候XHTML網(wǎng)站會(huì)普及?
答:好問(wèn)題。我已經(jīng)看到一些使用XHTML建立的網(wǎng)站,甚至在XHTML 1.0發(fā)布以前。我相信它將會(huì)有一個(gè)大發(fā)展,因?yàn)樗菀琢恕?
問(wèn):我們?nèi)绾螌F(xiàn)有的HTMl轉(zhuǎn)換為XHTML?
答:非常簡(jiǎn)單,因?yàn)樗鼈兎浅O嗨啤T赪3C(www.w3c.org)網(wǎng)站上有一個(gè)開(kāi)放原代碼(open-source)的軟件叫HTML Tidy,可以幫助你直接轉(zhuǎn)換。
問(wèn):XHTML未來(lái)會(huì)怎樣?
答:XHTML1.0僅僅是這個(gè)新HTML語(yǔ)言的第一步。新版本將沒(méi)有向下兼容老瀏覽器的約束,可以有更多的發(fā)展空間。
首先,我們將進(jìn)行一次徹底的清理,刪除HTML 4.0中不兼容的元素。
其次,我們將XHTML模塊化,允許人們?cè)赬ML應(yīng)用中使用XHTML模塊(比如表格),減少重復(fù)開(kāi)發(fā)。同時(shí)也允許開(kāi)發(fā)特別用途的設(shè)計(jì),比如電話應(yīng)用,只要屬于XHTML的子集就可以保持兼容,人們可以創(chuàng)造他們自己的HTML。
最后,在解決需求方面,我們將開(kāi)發(fā)更多的表單(Forms)功能,允許在客戶端執(zhí)行更多的檢測(cè),減少客戶機(jī)--服務(wù)器之間的網(wǎng)絡(luò)信息傳輸。總之,更多令人興奮的功能將會(huì)被實(shí)現(xiàn)。
------------------------------------------------------------------------------------------------------------------
什么叫HTML
HTML是網(wǎng)絡(luò)的通用語(yǔ)言,一種簡(jiǎn)單、通用的全置標(biāo)記語(yǔ)言。它允許網(wǎng)頁(yè)制作人建立文本與圖片相結(jié)合的復(fù)雜頁(yè)面,這些頁(yè)面可以被網(wǎng)上任何其他人瀏覽到,無(wú)論使用的是什么類型的電腦或?yàn)g覽器。神奇嗎?一點(diǎn)都不神奇,因?yàn)楝F(xiàn)在你看到的就是這種語(yǔ)言寫(xiě)的頁(yè)面.哈哈.
也許你聽(tīng)說(shuō)過(guò)許多可以編輯網(wǎng)頁(yè)的軟件,事實(shí)上,你不需要用任何專門(mén)的軟件來(lái)建立HTML頁(yè)面;你所需要的只是一個(gè)文字處理器(如McrosoftWord/記事本/寫(xiě)字板等等)以及HTML的工作常識(shí)。其實(shí)你很快就會(huì)發(fā)現(xiàn),基礎(chǔ)的HTML語(yǔ)言簡(jiǎn)直容易死了。
-------------------------------------------------------------
你可以開(kāi)始通過(guò)書(shū)寫(xiě)嚴(yán)密的HTML代碼來(lái)為你的XHML之旅做好準(zhǔn)備
怎樣為XHTML做好準(zhǔn)備
XHTML與HTML的區(qū)別并不是很大,因此熟悉HTML4.01標(biāo)準(zhǔn)代碼對(duì)學(xué)習(xí)XHTML來(lái)講非常有意義。W3S提供的HTML 4.01 參考可以幫助你熟悉它們
補(bǔ)充一下,你現(xiàn)在就應(yīng)該開(kāi)始習(xí)慣使用小寫(xiě)標(biāo)簽書(shū)寫(xiě)HTML代碼,還有千萬(wàn)別漏掉結(jié)束標(biāo)簽。
最主要的區(qū)別:
- XHTML元素必須合理嵌套
- XHTML文檔形式上必須符合規(guī)范
- 標(biāo)簽必須使用小寫(xiě)
- 所有的XHTML元素都必須有始有終
元素必須合理嵌套
在HTML中一些元素可以不使用正確的相互嵌套:
<b><i>This text is bold and italic</b></i>
在XHTML中所有元素必須合理的相互嵌套:
<b><i>This text is bold and italic</i></b>
注:在列表嵌套的時(shí)候經(jīng)常會(huì)犯一個(gè)錯(cuò)誤,就是忘記了在列表中插入一新列表必須嵌在<li>標(biāo)記中:
<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>標(biāo)簽
文檔形式上必須符合規(guī)范
所有的XHTML元素必須被嵌在<html> 根元素之中。所有其它的元素可以有自己的子元素。位于父元素之內(nèi)的子元素必須成對(duì)出現(xiàn)且使用正確的嵌套。文檔的基本構(gòu)架為:
<html>
<head> ... </head>
<body> ... </body>
</html>
標(biāo)簽必須使用小寫(xiě)
因?yàn)閄HTML文檔是XML應(yīng)用產(chǎn)物,XML是區(qū)分大小寫(xiě)的,所以<br>和<BR>會(huì)被認(rèn)為是兩種不同的標(biāo)簽。
這就是錯(cuò)誤的:
<BODY>
<P>This is a paragraph</P>
</BODY>
這才是正確的:
<body>
<p>This is a paragraph</p>
</body>
所有的XHTML元素都必須有始有終
非空元素必須得有結(jié)束標(biāo)簽
這是錯(cuò)誤的寫(xiě)法:
<p>This is a paragraph
<p>This is another paragraph
這是正確的:
<p>This is a paragraph</p>
<p>This is another paragraph</p>
空標(biāo)簽也得關(guān)閉
空標(biāo)簽同樣也得關(guān)閉,可以是在開(kāi)始標(biāo)簽后加上/>
這是錯(cuò)誤的寫(xiě)法:
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能夠兼容目前的瀏覽器,你必須在/符號(hào)之加上一空格,如:<br />
這篇文章主要闡述 HTML 和 XHTML 的區(qū)別 --> 。簡(jiǎn)單來(lái)說(shuō),XHTML 可以認(rèn)為是 XML 版本的 HTML --> ,為符合 XML 要求,XHTML 語(yǔ)法上要求更嚴(yán)謹(jǐn)些。
以下是 XHTML 相對(duì) HTML 的幾大區(qū)別:
- XHTML 要求正確嵌套
- XHTML 所有元素必須關(guān)閉
- XHTML 區(qū)分大小寫(xiě)
- XHTML 屬性值要用雙引號(hào)
- XHTML 用 id 屬性代替 name 屬性
- XHTML 特殊字符的處理
XHTML 要求正確嵌套
以下是正確的嵌套:
--> <p>布啦布啦<strong>獨(dú)樹(shù)一幟</strong>。</p>
以下是錯(cuò)誤的嵌套:
<p>布啦布啦<strong>獨(dú)樹(shù)一幟</p></strong>。
--> XHTML 所有元素必須關(guān)閉
--> XHTML 里,應(yīng)該寫(xiě)成:Javascript.
在 HTML 中 --> ,比如 <p>,<li> 這些標(biāo)記,你可以不寫(xiě) </p>,</li>,但 --> 是在 XHTML 里,必須要求寫(xiě)關(guān)閉標(biāo)記 (Closing Tag)。
比如:
<p>布啦布啦很認(rèn)真。
顯然,如果瀏覽器做成這個(gè)樣子,倒貼錢(qián)也是不會(huì)有人用的。
應(yīng)該寫(xiě)成:
<p>布啦布啦很認(rèn)真。</p>
處理空元素
--> 有些空元素,在 XHTML 里的寫(xiě)法是在'>'之前加空格和斜杠。比如<br>,應(yīng)該寫(xiě)成<br />。
以下是空元素的例子:
<br />
<hr />
<img src = '***.jpg' alt = --> 'blabla' / --> >
<link rel='stylesheet' href='/styles/blabla.css' type='text/css --> ' />
<meta http-equiv='content-type' content --> ='text/html; charset=UTF --> -8' / --> >
XHTML 區(qū)分大小寫(xiě)
HTML 不區(qū)分大小寫(xiě),但是 XHTML 是區(qū)分大小寫(xiě)的。
XHTML 的所有標(biāo)記和屬性都要小寫(xiě)。
比如:
<IMG SRC = '/***.jpg' Alt = 'blabla' / --> >
應(yīng)該寫(xiě)成:
<img src = '/***.jpg' alt = 'blabla' />
XHTML 屬性值要用雙引號(hào)
HTML 并不強(qiáng)制要求屬性值加雙引號(hào)。比如 --> 你可以寫(xiě):
--> <table cellspacing = 0>
<input checked>
--> 但在 XHTML 里,應(yīng)該寫(xiě)成:
--> <table cellspacing = '0'>
--> <input checked = 'checked --> ' />
XHTML 用 id 屬性代替 name 屬性
HTML 很多元素 --> ,比如 a,applet,frame,iframe,img 和 map,有 name 屬性。在 XHTML 里是要廢除的,而用 id 屬性取而代之。
比如:
<img src='XXX.gif' name='blabla logo'/>
應(yīng)該寫(xiě)成:
<img src='XXX.g --> if' id --> ='blabla logo' />
XHTML 特殊字符的處理
& 應(yīng)該在 XHTML 里應(yīng)該寫(xiě)成 --> &。
比如:
You & Me
--> 應(yīng)該寫(xiě)成:
You & Me
=====天王蓋地虎 寶塔鎮(zhèn)河妖=====XHTML 里應(yīng)該寫(xiě)成 &!
還有如果內(nèi)嵌 Javascript 代碼,在 XHTML 里則應(yīng)該寫(xiě)成:
--> <script type='text/javascript'>//<![CDATA[...
//]]></script>
瀏覽器的角度
以上是從協(xié)議標(biāo)準(zhǔn)的角度來(lái)看待這個(gè)問(wèn)題的。如果從瀏覽器的角度來(lái)看待這個(gè)問(wèn)題,情況就有所 --> 不同。
=====天王蓋地虎 寶塔鎮(zhèn)河妖=====標(biāo)準(zhǔn)要求瀏覽器 --> 不再支持原先的容錯(cuò)能力,這 --> 是一個(gè)標(biāo)準(zhǔn)制定者走火入魔的典型例子。
--> 考慮一下,如果把 XHTML 寫(xiě)得很不嚴(yán)格,瀏覽器會(huì)怎么做?是不是會(huì)彈出一個(gè)對(duì)話框,寫(xiě)著“這個(gè)網(wǎng)站的開(kāi)發(fā)人員技術(shù)不過(guò)關(guān),寫(xiě)的不是正宗的 XHTML 文件,咱不顯示”?顯然,如果瀏覽器做成這個(gè)樣子,倒貼錢(qián)也是不會(huì)有人用的。
從瀏覽器的角度看待上面幾個(gè)不同,大致是下面的測(cè)試結(jié)果(IE和Firefox我都測(cè)試過(guò)):
- XHTML 要求正確嵌套 --> :如果你沒(méi)有嵌套,瀏覽器會(huì)試圖幫你嵌套。
- XHTML 所有元素必須關(guān)閉:如果你沒(méi)有關(guān)閉,瀏覽器會(huì)試圖幫你關(guān)閉。
- XHTML 區(qū)分大小寫(xiě):你非要寫(xiě)成大寫(xiě),瀏覽器幫你轉(zhuǎn)換成為小寫(xiě)。
- 屬性值要用雙引號(hào):你非要不肯加,瀏覽器幫你加。
- 特殊字符的處理:You & Me 也好,You & Me 也好,瀏覽器都能讀入。
- 用 id 屬性代替 name 屬性:你非要用 name 也可以 --> 。
如果你在文檔開(kāi)始用 DocType 指定為 XHTML 了,有一點(diǎn)需要注意 --> 。在給 Tag 用 class 指定CSS 的時(shí)候,是區(qū)分大小寫(xiě)的。例如,你定義了一個(gè)CSS如下 --> ,
<style>
.hello { ...... }
</style
-->
>
而你使用的時(shí)候?qū)懗桑?/P>
--> <p class='Hello --> '> ......
那這個(gè)CSS --> 是不會(huì)被使用的。要積極的看待這個(gè)問(wèn)題 --> ,這讓你可以用更多的名字來(lái)命名 Style,是一個(gè)好事。
XHTML 標(biāo)準(zhǔn)的前途
從標(biāo)準(zhǔn)制定者的初衷看,制定 XHTML 標(biāo)準(zhǔn)是試圖把 HTML 規(guī)范成為嚴(yán)格的 XML 格式,這樣無(wú)可避免的會(huì)導(dǎo)致一個(gè)結(jié)果,就是從 HTML 到 XHTML 的升級(jí)導(dǎo)致標(biāo)準(zhǔn)的容錯(cuò)能力降低了 --> 。把自己的網(wǎng)頁(yè)源文件寫(xiě)得嚴(yán)格一點(diǎn)當(dāng)然是好事,但是一個(gè)標(biāo)準(zhǔn) --> 不可能去要求瀏覽器降低自己的容錯(cuò)能力。
--> XHTML 1.0 標(biāo)準(zhǔn)是兼容 HTML 4.01,是個(gè)不錯(cuò)的協(xié)議,可以讓開(kāi)發(fā)者在編寫(xiě)代碼的同時(shí)通過(guò)一些工具來(lái)檢查代碼的合法性,雖然對(duì)于用戶而言,制作出來(lái)的網(wǎng)頁(yè)和 HTML 4.01 相比實(shí)在沒(méi)有什么不同。對(duì)于你寫(xiě)新的網(wǎng)頁(yè)來(lái)說(shuō),使用 XHTML 1.0 還是一個(gè)不錯(cuò)的選擇。
--> XHTML 1.1 標(biāo)準(zhǔn)要求瀏覽器不再支持原先的容錯(cuò)能力,這是一個(gè)標(biāo)準(zhǔn)制定者走火入魔的典型例子,這個(gè)標(biāo)準(zhǔn)從學(xué)術(shù)上說(shuō)非常純凈,但是對(duì)于瀏覽器而言,則是個(gè)呆板、笨拙、不 可理喻的標(biāo)準(zhǔn)。所以目前所有由人類開(kāi)發(fā)的瀏覽器都沒(méi)有遵照所謂純凈的 XHTML 1.1的標(biāo)準(zhǔn),你的代碼只要瀏覽器能讀懂,他都會(huì)很好的顯示出來(lái),而不跳出彈框報(bào)錯(cuò)。
從發(fā)展的趨勢(shì)來(lái)看,一個(gè)標(biāo)準(zhǔn)沒(méi)有瀏覽器服從,等于是沒(méi)有意義的標(biāo)準(zhǔn) --> 。從瀏覽器的實(shí)現(xiàn)角度來(lái)看,新的協(xié)議只能在原來(lái) HTML 的基礎(chǔ)上擴(kuò)大能力增加容錯(cuò),而不能縮小了能力減少容錯(cuò)。所以新的協(xié)議中 --> ,只有擴(kuò)大能力增加容錯(cuò)的部分會(huì)被采納,而其他部分都僅僅 --> 是紙上談兵而已 --> 。
.