可擴展超文本標記語言

基於XML的超文本標記語言

可擴展超文本標記語言(eXtensible HyperText Markup Language,XHTML)是一種新興的網頁設計和製作語言。XHTML是在HTML基礎上發展起來的,同時吸取了可擴展 標記語言(extensible Markup Language,XML)的語法嚴謹的優點。因此,XHTML比 HTML具加更加嚴謹的語法,能夠為眾多品牌的Web瀏覽器研發提供規範的技術標準, XHTML的可擴展性和靈活性將適應未來網路應用的更多需求。 XHTML(可擴展超文本標記語言)是"使用可擴展標記語言(XML)對HTML 4.0的改訂, XHTML的優點在於其"可擴展性和可移植性"。

發展歷史


XHTML最早叫做“HTML in XML”,是一種基於XML的超文本標記語言,也就是說,將以前用 SGML定義的HTML改為用XML重新定義。從這個意義上講,XHTML實際上是XML的一種應用。表面上看,在XHTML中,其標記仍舊延用以往的HTML 的標記,各元素和屬性的名稱和用法也幾乎不變,只不過由於改為用XML定義,就必須嚴格按照XML語言規範來處理了。提起XHTML,就不能不先來看一下 XHTML的發展歷史。
XHTML的前身是大名鼎鼎的HTML,HTML作為在Internet/Intranet網上進行數據瀏覽和數據交換的一種先進的文件格式規範,以瀏覽器為依託憑藉著其豐富而強大的功能打破了傳統的數據瀏覽方式,給人以耳目一新的感覺,也極大地推動了Internet的發展。但是,隨著HTML應用的不斷深入,其不足之處也逐漸暴露出來。首先,實際應用中的HTML相當不規範。雖然W3C早己制定出HTML的規範,但是出於商業動機。當今兩大Web瀏覽器軟體製作廠商Microsoft 和 Netscape為了搶佔日益擴大的瀏覽器市場,紛紛在HTML中加入自己定義的非規範的標記,並在自己的瀏覽器中提供相應的特殊支持,旨在佔領更大的瀏覽器市場份額,以達到左右HTML標準的制定並最終將競爭對手打垮的目的。這種不良競爭的結果,造成HTML標記的過度膨脹,大量與標準HTML不一致的標記充斥於Internet的大小角落,而且某些HTML標識符只能在Netscape Navigator上才能執 行,而另一些只在Internet Explorer上才是有效的。這 種情況給網頁設計人員帶來很大的麻煩。其次,隨著技術的飛速發展,新的Web瀏覽工具不斷被開發出來,從小巧的掌上電腦到功能特異的能上網的手機再到最 近被炒得沸沸揚揚的數字機頂盒,網上瀏覽再也不必局限於桌上電腦了。據權威人士預測,到2002年,大約 75%的網頁將會通過非桌上型電腦來瀏覽。但是,我們不禁又問,到底現在的HTML標準是不是真得適合在各種非桌上型電腦中進行瀏覽呢?很不幸,回答是否定的,現在的HTML不能解決這個難題。另外,HTML只能利用現有的有限標記。而且大多數標記都沒有實際的含義,這使得它越來越不適應人們不斷增加的需求。在這種情況下,在各大知名廠商的壓力下,W3C組織於1998年底成立工作組,專門討論XHTML標準的制定。好在在此之前,W3C已正式推出XML1.0規範,這無疑為XHTML規範的制定奠定了強大的基礎。經過不斷的討論,該工作組於1998年12月5日提出第一個草案,並在隨後次年的2月24日、3月4日、5月5日分別公布了階段性草案。1999年8月24日,第一個建議標準正式推出。不過,還應指出的是,這並不意味著就一定能成為正式標準,事實上, XHMTL1.0的這份標準目前正處於激烈的討論中,爭議的焦點之一是名稱空間(namespace)的解釋問題。不過。現在總算有了一線希望,相信出路就在前方。

形成背景


一方面,缺乏語法規範性的HTML文檔。實際上,萬維網中的許多頁面都是規範性很差、語法很不嚴謹的HTML文檔,但仍然可以用Web瀏覽器打開。
另一方面,現今的軟體市場上存在著不同廠商提供的Web瀏覽器。國外流行的Web 瀏覽器有 Microsoft Internet Explorer、Mozil丨a Firefox 和 Google Chrome 等,國內有搜狗、騰訊 Tencent Traveler、遨遊Maxthon、世界之窗Theworld和360安全瀏覽器等。如果設計和製作網頁的語言缺乏必要的規範、語法不嚴謹,運行在計算機上的不同Web瀏覽器將難以支持萬維網中數以億計的網頁。反之。如果使用統一規範的網頁設計和製作語言,使得 HTML文檔都具有規範和良好的結構,Web瀏覽器與網頁之間的適配性將得到大大增強。

XHTML的面世


為了規範網頁設計和製作語言,W3C於2000年推出了XHTML。
目前,較流行的XHTML 1.0版本有以下三種。
(1)XHTML1.0 Strict(嚴格版)。嚴格版是根據HTML 4.01 Strict改編的。與 HTML 4.01 Strict —樣,在XHTML 1.0 Strict中不能使用表現性元素或屬性,例如 center、font、s、strike 和 u 等元素以及 align background 和 bgcolor 等屬性。
(2)XHTML 1.0 Transitional(過渡版)。過渡版是根據HTML 4.01 Transitional改編的。與HTML 4.01 Transitional—樣,可以使用一些在Strict版本中禁用的表現性元素或屬性。
(3)XHTML 1.0 Frameset(框架版)。框架版是根據HTML 4.01 Frameset改編的。允許在網頁中定義框架。
在上述三種XHTML 1.0版本中,XHTML 1.0 Transitional規定了XHTML的基本語法。XHTML 1.0 Strict不僅遵循XHTML的基本語法規定,而且不允許使用表現性元素或屬性。在XHTML 1.0 Transitional和 Strict 的基礎上,XHTML 1.0 Frameset 允許在網頁中定義框架。
總之.XHTML是一種增強型的HTML,是語法更嚴謹、元素更純凈的HTML版本. XHTML有助於編寫良構(Well-structured)的HTML文檔。這些HTML文檔可以很好地工作於IE、Firefox和Chrome等各種品牌的Web瀏覽器,並且能夠向後兼容。此外,XHTML還具有良好的可擴展性和靈活性,不僅支持台式計筧機和攜帶型電腦而且支持iPad、iPhone等手持移動通信設備。能夠適應未來網路應用的更多需求。

語法規定


HTML的語法比較鬆散。網頁設計和製作者使用起來比較方便。但對Web瀏覽器來說。網頁設計語言的語法越鬆散。處理起來卻越困難。因此,W3C在制定XHTML規範時,要求編寫HTML文檔時必須遵循更加嚴格和規範的語法。
(1)必須關閉打開的標籤。
在HTML中,允許某某些非空元素只有開始標籤,而可以沒有結束標籤。例如,li元素的開始標籤
  • 可以不用結朿標籤
  • 來關閉。但這在XHTML中是不允許的。XHTML規定,必須關閉打開的標籤,換言之,開始標籤必須有相應的結束標籤。
    對於br和img等空元素(即沒有結束標籤的元素要在開始標籤中的元素名後面使 用“/”來關閉。例如,
    必須寫為
    必須寫為
    (2)元素名和屬性名都必須小寫。
    在HTML中,標籤中的元素名和屬性名可以小寫,也可以大寫。但與HTML不同, XHTML是大小寫敏感的(Case Sensitive),元素名和域性名必須小寫,並且不允許大小寫夾雜。例如。在HTML中允許、,但在XHTML只允許<html〉、<title>。</div><div class="cp">(3)元素以及標籤之間都必須正確嵌套。</div><div class="cp">XHTML規定,如果在關閉一個標籤之前又打開另個新標籤,則必須首先關閉新標籤,然後才能關閉前一個標籤。換言之,關閉后打開的標籤之後,才能關閉先打開的標籤。</div><div class="cp">例如。在 XHTML中,不允許<div class="cp">Here is an emphasized<em>keyword. </div> </em>,只允許 <div class="cp">Here is an emphasized <em>keyword. </em></div>。這樣,p 元素才能正確嵌套em元素。</div><div class="cp">正確嵌套元素以及標籤,外以形成良構的HTML文檔。</div><div class="cp">(4)元素的屬性值必須用雙引號("")括起來。</div><div class="cp">在HTML中,當屬性值是數字時。可以不用引號;但是在XHTML中,所有的屬性值 (包括數字)必須用雙引號括起來。</div><div class="cp">例如,在 HTML 中,允許<table bgcolor=#DDEEFF border=10>;但是在XHTML 中,只允許<table bgcolor="#DDEEFF"border="10">.</div><div class="cp">(5)不能在註釋內容中使用“--”。</div><div class="cp">“--”只能出現在XHTML註釋的開頭和結朿,而在註釋內容中不能再使用。例如,在XHTML中,下面的代碼是無效的:</div><div class="cp"></div><div class="cp">(6)圖像標籤必須有說明文字。</div><div class="cp">在XHTML中。每個圖像標籤都必須使用alt屬性添加說明文字。例如,在XHTML 中,以下代碼是有效的:</div><div class="cp"><img src ="ball.jpg" alt = "large red ball" title = "large red ball"/></div><div class="cp">注意:為了兼容Firefox渕覽器和<a target="_blank" href="/wiki/kknxy894em954r2.html" title="IE瀏覽器">IE瀏覽器</a>,對於圖像標籤,盡量採用alt和title雙標籤!</div><div class="cp">(7) 用id屬性替代name屬性。</div><div class="cp">例如,在XHTML中,不允許<img src="picture.gif" name="picturel"/>,只允許<img src= "picture.gif" id= "picturcl"/>。</div><div class="cp">注意:為了使HTML文檔兼容低版本的Web瀏覽器。可以同時使用name和id屬性,並使這兩個屬性的值相同。例如,<img sre ="picture.gif" id="picturel" name="picture!"/> 。</div><div class="cp">(8)必須給每個屬性賦一個值。且不能省略屬性值。</div><div class="cp">在XHTML中,每個屬性都必須有一個值,沒有值的就重複本身。例如:</div><div class="cp"><input type = "checkbox" name="shirt" value= "medium" checked></div><div class="cp">必須修改為:</div><div class="cp"><input type= "checkbox" name = "shirt" value= "medium" checked= "checked"></div><div class="cp">遵循上述XHTML語法規定的HTML文檔稱為良構的HTML文檔。設計和製作網頁時如果遵循上述XHTML語法規定,HTML文檔就能夠被大部分常見的Web瀏覽器正確並快速地編譯。在以上語法規定中,有的看上去比較奇怪,但這一切都是為了使網頁設計語言有一個統一和唯一的標準,以便使用各種Web瀏覽器都能正常地打開HTML文檔併流暢地顯示網頁。</div><div class="cp">由此可見,從HTML過渡到XHTML,最大的變化在於HTML文檔必須是良構的。</div><div class="cp">此外,在Strict類型的XHTML文檔主體,還必須遵循以下語法規範。</div><div class="cp">(1)文本內容不能直接出現在主體中。</div><div class="cp">例如,以下代碼的語法是不規範的:</div><div class="cp">< body > Hello, World! </body></div><div class="cp">因為文本內容“Hello, World!”直接出現在body元素中。</div><div class="cp">在Strict類型的XHTML文檔主體,文本內容必須出現在p、<a target="_blank" href="/wiki/gvmoqq3z27z56q2.html" title="ul">ul</a>、<a target="_blank" href="/wiki/09xre6373k728el.html" title="h1">h1</a>、h2、h3、<a target="_blank" href="/wiki/o3y62l8ejeym34x.html" title="h4">h4</a>、<a target="_blank" href="/wiki/2m78x596e2m524j.html" title="h5">h5</a>或h6等塊級元素內。或者出現在這些塊級元素的子元素內。</div><div class="cp">按照本條語法規則。以下代碼的語法則是規範的:</div><div class="cp">< body><div class="cp"> Hello, World! </div></body></div><div class="cp">或者</div><div class="cp">< body >< p >< em > Hello, World! </em ></p ></body ></div><div class="cp">(2>行內元素必須嵌套在塊級元素中,例如,以下代碼的語法是不規範的:</div><div class="cp">< body ><em> Hello, World! </em></body></div><div class="cp">因為行內元素em直接出現在body元素中。</div><div class="cp">在Strict類型的XHTML文件中,a、em、img、strong等行內元素必須嵌套在p、h1、h2、 h3、h4、h5或h6等塊級元素內,而不能直接出現在body元素內。</div><div class="cp">按照本條語法規則,以下代碼的語法則是規範的:</div><div class="cp">< body>< p>< em> Hello,World!</em></div></body></div><div class="cp">或者</div><div class="cp">< body>< p>< strong> Hello, World!</strong></div></body></div><div class="cp">或者</div><div class="cp">< p>< img src = " · ·/ch02/2 - 4.gif ” alt ="圖像說明文字"/></p ></div><div class="catlog-title is-1"><h3>XHTML文檔的基本結構</h3><a id="catalog_5" class="title-anchor"></a></div><hr class="border-1"><div class="cp">使用XHTML設計和製作網頁,其中的代碼同樣保存在HTML文檔中,即文件的擴展名仍然是htm或html。但由於遵循更加規範的語法規定,特將使用XHTML編寫的HTML文檔稱為XHTML文檔。</div><div class="cp">使用XHTML設計和製作網頁時,XHTML文檔必須具有一定的基本結構。</div><div class="cp">XHTML文檔的基本結構包括以下幾部分:</div><div class="cp">(1)首先必須使用<! DOCTYPE...>進行文件類型定義(Document Type Definition,<a target="_blank" href="/wiki/w346eqkw00grx5r.html" title="DTD">DTD</a>),以聲明當前XHTML文檔所遵循的版本。該XHTML文檔中的DTD聲明,XHTML文檔遵循XHTML 1.0 Transitional的規範及語法規定。如果需要聲明XHTML 文檔遵循XHTML 1.0 Strict的規範及語法規定,在DTD部分則需使用如下代碼:</div><div class="cp"><! DOCTYPE html PUBLIC " - //W3C//DTD XHTML 1.0 Strict//EM" "http://www.w3.org/TR/xhtmll/DTD/xhtmll - strict.dtd"></div><div class="cp">注意:DTD並非XHTML文檔中的元素,換言之,<! DOCTYPE->並不是一個標籤。</div><div class="cp">(2)必須使用唯一的<a target="_blank" href="/wiki/qg2xlq5rmkqvz05.html" title="html">html</a>元素作為XHTML文檔的根元素,並且其他所冇元素及標籤都必須正確嵌套在<html>和標籤對之間。</div><div class="cp">(3)在XHTML文愾中,必須將html元素的xmlns屬性值設置為“httP://www. w3. org/1999/xhtml”,以指定整個文檔所使用的命名空間(Namespace).</div><div class="cp">(4)在XHTML文檔頭部使用meta元素將編碼方式設置為中文簡體,具體使用如下 代碼:</div><div class="cp">< meta http - equiv = "content - type" content = "text/html; <a target="_blank" href="/wiki/xex6o880q6jwl97.html" title="charset">charset</a> = gb2312"></div><div class="cp">(5)html元素中必須包含一個head元素和一個body元素,並且head元素中必須包含 —個title元素。</div><div class="catlog-title is-1"><h3>XHTML的優點</h3><a id="catalog_6" class="title-anchor"></a></div><hr class="border-1"><div class="cp">XHTML之所以能成為建議標準,就是因為它具有一系列優點:</div><div class="catlog-title is-2"><h4>可伸縮性</h4><a id="catalog_6_1" class="title-anchor"></a></div><div class="cp">XHTML可以根據用戶的需要和瀏覽器的處理能力選用合適的DTD,單是從這一點來看,就充分體現了一種時下比較流行的理念——“科技以人為本”。XHTML1.0的標準中定義了三個DTD,它們分別是:嚴格式(Strict)http://www.w3.org/TR/xhtmll/strict、過渡式(Transitional)http://www.w3.org/TR/xhtmll/transitional、分幀式(Frameset)http://www.w3.org/TR/xhtmll/frameset,每一種都有不同的應用。</div><div class="catlog-title is-2"><h4>可擴展性</h4><a id="catalog_6_2" class="title-anchor"></a></div><div class="cp">正如XHTML字面上所體現的那樣, XHTML具有一定的擴展性,這要歸功於名稱空間 (namespace )的引入。有了名稱空間,用戶可以在 XHTML文檔中任意添加自己需要的標記,兩個比較典型的例子是:MathML和SVG。MathML和SVG作為XML的一種具體應用,可以靈活地嵌入XHTML 文件中。將使得XHTML增色不少。現在,前者己經成為W3C正式推薦標準,而後者也即將成為建議推薦標準。</div><div class="catlog-title is-2"><h4>可重用性</h4><a id="catalog_6_3" class="title-anchor"></a></div><div class="cp">XHTML的推出原本是作為XML的過渡標準,因為XML尚處於一個不斷完善階段,還有大量的工作需要去做,因此短時間內將很難推出一個完全支持XML的瀏覽器,即使聲稱支持XML的Internet Explorer5.0目前也只是提供部分的支持,而在這過渡期內,運用XHTML完全可以達到既定目標。另一方面,XHTML從根本上講,也是一種規範的XML,即使將來XML徹底替代了 XHTML,XHTML文檔也不會為XML瀏覽器或其它基於XML的工具所不容。</div><div class="catlog-title is-1"><h3>XHTML及Web瀏覽語言展望</h3><a id="catalog_7" class="title-anchor"></a></div><hr class="border-1"><div class="cp">為了很好地發揮XHTML的優點,滿足各種不同 的需要,還有許多工作要做。目前,W3C正在緊鑼密鼓 地進行XHTML相關標準的制定工作。有關的標準有:HTML的模塊化、子集與擴展性、文檔配置文件(Document Profiles )。屆時,隨著 XHTML1.1 規範的推出,XHTML文檔的編輯者和瀏覽器能按實際需要去套用不同組合的DTD。那麼,今後Web瀏覽將全採用什麼語言呢?在這裡,我們不得不提到XML,XML 是一種目前在業內廣為流行的新興標記語言,且大有成為Web瀏覽技術上的明日之星的趨勢,但是不是說XML馬上就可成為取代HTML的後繼者呢?不是的,XML的確有許多優勢,但它仍存在一些短時間內無法克服的缺點,XML還有很長的路要走,而XHTML做為對HTML 的擴展,其優勢使其成為HTML的理想繼承人,現在已經有針對XHTML應用的支持,MathML和SVG 就是很好的例證。因此,我們預測在不久的將來,XHTML將會成為瀏覽器中的核心頁面語言,直至XML技術的真正成熟之日才會逐漸退出歷史舞台。</div><div style="clear: both"></div></div></div></div><div class="column is-narrow is-full-touch"><div class="sidebar"><div class="summary-albums"><a class="image" target="_blank" rel="noopener noreferrer nofollow" href="/album/x528qvrvwjwvzq/pics.html"><img src="https://i1.twwiki.net/cover/w275/mc/b/mcb8f7a4fbc4c7a09ef94b6ed776fd3ef.jpg"></a></div><div class="info-box"><div class="catlog-title is-2"><h4>基本信息</h4></div><div><dl><dt>中文名</dt><dd><div><span>可擴展超文本標記語言</span></div></dd></dl><dl><dt>外文名</dt><dd><div><span>eXtensible HyperText Markup Language</span></div></dd></dl><dl><dt>含義</dt><dd><div><span>是一種新興的網頁設計和製作語言</span></div></dd></dl><dl><dt>優點</dt><dd><div><span>可擴展性和可移植性</span></div></dd></dl><dl><dt>應用</dt><dd><div><span>計算機科學</span></div></dd></dl></div></div></div></div></div><ul id="fixbar"><li class="gotop"><span class="icon is-large"><i class="iconf i-dingbu"></i></span></li><li class="dir"><span class="icon is-medium"><i class="iconf i-dir"></i></span><span class="bar-font">目錄</span></li></ul></div></div><footer class="py-5 footer"><div class="container has-text-centered"><a target="_blank" rel="nofollow" href="/site/privacy">隱私條款</a><span> | </span><a target="_blank" rel="nofollow" href="/site/contact">聯絡我們</a></div></footer><div class="modal" id="dir-modal"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">目錄</p><button class="delete" aria-label="close"></button></header><section class="modal-card-body"></section></div></div><script src="https://cdn.jsdelivr.net/npm/jquery@2.2.4/dist/jquery.min.js"></script><script src="https://i1.twwiki.net/js/com.min.js?v=12"></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-PQB6P4TLQ5"></script><script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-PQB6P4TLQ5');</script></body></html>