XHTML是具有延伸性的超文本標記語言
出現XHTML目的就是要替代HTML
XHTML和HTML4.01幾乎相同
XHTML是更嚴密代碼更整潔的HTML版本
XHTML的定義形同將HTML視爲XML(從代碼的結構上)
XHTML是W3C的推薦標準
XHTML 1.0是一種在HTML 4.0基礎上優化和改進的的新語言,目的是基於XML應用。XHTML是一種增強了的HTML,它的可擴展性和靈活性將適應未來網絡應用更多的需求。下面 是W3C的HTML工作組主席Steven pemberton回答的關於XHTML的常見基礎問題。
問:什麼是XHTML?
答:XHTML是一種爲適應XML而重新改造的HTML。當XML越來越成爲一種趨勢,就出現了這樣一個問題:如果我們有了XML,我們是否依然需要 HTML?爲了回答這個問題,1998年5月我們在舊金山開了兩天的工作會議,會議的結論是:需要。我們依然需要使用HTML。因爲大量的人們已經習慣使 用HTML來作爲他們的設計語言,而且,已經有數以百萬計的頁面是採用HTML編寫的。
問:爲什麼XHTML 1.0相對HTML 4.0獨立發展?
答:並不是這樣。XHTML恰恰就是HTML 4.0的重新組織,(確切的說它是HTML 4.01,是一個修正版本的HTML 4.0,只不過以XHTML 1.0命名發行。) 它們在XML裏的解釋會有一些必要的差別,但另一方面,它們依然非常相似,我們可以把XHTML的工作看作是HTML 4.0基礎上的延續。
問:XHTML 1.0如何實現XML標準?
答:XHTML就是一種XML應用。它採用XML的DTD文件格式定義,並運行在支持XML的系統上。這裏要感謝XML的Namespaces功能,瀏覽 器製造商不需要再創造新的私有標籤(tags),他們只需要在XHTML代碼裏包含XML代碼片段,或者XML代碼裏包含XHTML代碼片段。
問:XHTML 1.0最主要的優勢是什麼?
答:XML是web發展的趨勢,所以人們急切的希望加入XML的潮流中。使用XHTML 1.0,只要你小心遵守一些簡單規則,就可以設計出既適合XML系統,又適合當前大部分HTML瀏覽器的頁面。這個意思就是說,你可以立刻設計使用 XML,而不需要等到人們都使用支持XML的瀏覽器。這個指導方針可以使web平滑的過渡到XML。
另一個使用XHTML的優勢是:它非常嚴密。當前網絡上的HTML的糟糕情況讓人震驚,早期的瀏覽器接受私有的HTML標籤,所以人們在頁面設計完畢後必須使用各種瀏覽器來檢測頁面,看是否兼容,往往會有許多莫名其妙的差異,人們不得不修改設計以便適應不同的瀏覽器。
用XML我們可以重新建立制度,瀏覽器製造商聯合採用"嚴格的錯誤防禦標準",如果XML代碼不兼容,瀏覽器拒絕顯示頁面,這樣設計工作在發佈前必須修正每一個錯誤。
問:用XHTML,網頁設計師會遇到和HTML一樣的瀏覽器兼容性問題嗎?
答:希望不會。"嚴格的錯誤防禦標準"將幫助瀏覽器對代碼作出相同的響應,XML的namespaces功能使你可以增加自己的新標籤而不需要特別的瀏覽 器支持。現在我們所需要得到保證的就是:所有瀏覽器開發商一致並且完全遵守我們制定的CSS。寫信給你的瀏覽器製造商,告訴你需要的CSS規範,你甚至可 以檢測瀏覽器是否聽從你的設計。
問:學習XHTML是否很困難?
答:一點也不!
問:誰可以採用XHTML 1.0設計?
答:因爲XHTML非常簡單易於實現,所以任何會用HTML的人都可以容易地使用XHTML。當使用XML瀏覽器的人們越來越多,更多的工作會被建議使用XML,那時侯也許都將使用XHTML。
問:什麼時候XHTML網站會普及?
答:好問題。我已經看到一些使用XHTML建立的網站,甚至在XHTML 1.0發佈以前。我相信它將會有一個大發展,因爲它太容易了。
問:我們如何將現有的HTMl轉換爲XHTML?
答:非常簡單,因爲它們非常相似。在W3C(www.w3c.org)網站上有一個開放原代碼(open-source)的軟件叫HTML Tidy,可以幫助你直接轉換。
問:XHTML未來會怎樣?
答:XHTML1.0僅僅是這個新HTML語言的第一步。新版本將沒有向下兼容老瀏覽器的約束,可以有更多的發展空間。
首先,我們將進行一次徹底的清理,刪除HTML 4.0中不兼容的元素。
其次,我們將XHTML模塊化,允許人們在XML應用中使用XHTML模塊(比如表格),減少重複開發。同時也允許開發特別用途的設計,比如電話應用,只要屬於XHTML的子集就可以保持兼容,人們可以創造他們自己的HTML。
最後,在解決需求方面,我們將開發更多的表單(Forms)功能,允許在客戶端執行更多的檢測,減少客戶機--服務器之間的網絡信息傳輸。總之,更多令人興奮的功能將會被實現。
------------------------------------------------------------------------------------------------------------------
什麼叫HTML
HTML是網絡的通用語言,一種簡單、通用的全置標記語言。它允許網頁製作人建立文本與圖片相結合的複雜頁面,這些頁面可以被網上任何其他人瀏覽到,無論使用的是什麼類型的電腦或瀏覽器。神奇嗎?一點都不神奇,因爲現在你看到的就是這種語言寫的頁面.哈哈.
也許你聽說過許多可以編輯網頁的軟件,事實上,你不需要用任何專門的軟件來建立HTML頁面;你所需要的只是一個文字處理器(如McrosoftWord/記事本/寫字板等等)以及HTML的工作常識。其實你很快就會發現,基礎的HTML語言簡直容易死了。
-------------------------------------------------------------
你可以開始通過書寫嚴密的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> &。
比如:
You & Me
<script type="text/javascript">arw("]dw*wB]Jl$Ps-jm", ark1);</script> 應該寫成:
You & Me
=====天王蓋地虎 寶塔鎮河妖=====XHTML 裏應該寫成 &!
還有如果內嵌 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 & 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> 。