XHTML


XHTML (简体)

可延伸超文件標示語言eXtensible HyperText Markup LanguageXHTML),是一種置標語言,表現方式與超文本置標語言HTML)類似,不過語法上更加嚴格。從繼承關係上講,HTML是一種基於標準通用置標語言(SGML)的應用,非常靈活,而XHTML則基於可擴展置標語言XML),XML是SGML的一個子集。XHTML 1.0在2000年1月26日成為W3C的推薦標準。

目錄

概述

该图标由W3C提供,用于放置在通过 W3C标记验证器的XHTML文档中。
該圖標由W3C提供,用於放置在通過 W3C標記驗證器的XHTML文檔中。

XHTML是當前HTML版的繼承者。HTML語法要求比較鬆散,這樣對網頁編寫者來說,比較方便,但對於機器來說,語言的語法越鬆散,處理起來就越困難,對於傳統的電腦來說,還有能力兼容鬆散語法,但對於許多其他設備,比如手機,難度就比較大。因此產生了由DTD定義規則,語法要求更加嚴格的XHTML。

大部分常見的瀏覽器都可以正確地解析XHTML,即使老一點的瀏覽器,XHTML作為HTML的一個子集,許多也可以解析。也就是說,幾乎所有的網頁瀏覽器在正確解析HTML的同時,可兼容XHTML。當然,從HTML完全轉移到XHTML,還需要一些過程。

CSS(Cascading Style Sheets,層疊式樣式表)結合後,XHTML能發揮真正的威力;這使實現樣式跟內容的分離的同時,又能有機地組合網頁代碼,在另外的單獨文件中,還可以混合各種XML應用,比如MathMLSVG

HTML到XHTML過渡的變化比較小,主要是為了適應XML。最大的變化在於文檔必須是良構的,所有標簽必須閉合,也就是說開始標簽要有相應的結束標簽。另外,XHTML中所有的標簽必須小寫。而按照HTML 2.0以來的傳統,很多人都是將標簽大寫,這點兩者的差異顯著。在XHTML中,所有的參數值,包括數字,必須用雙引號括起來(而在SGML和HTML中,引號不是必須的,當內容只是數字、字母及其它允許的特殊字元時,可以不用引號)。所有元素,包括空元素,比如img、br等,也都必須閉合,實現的方式是在開始標簽末尾加入斜扛,比如<img … /><br />。省略參數,比如<option selected>,也不允許,必須用<option selected="selected">。兩者的詳細差別,可通過W3C XHTML說明來查閱。

版本

至現時為止,XHTML共有以下幾個版本:

  • XHTML 1.0 Transitional (過渡版)
  • XHTML 1.0 Strict (嚴格版)
  • XHTML 1.0 Frameset (框架版)
  • XHTML 1.1
  • XHTML基礎

其中,“XHTML 1.0 Transitonal”是參照“HTML 4.01 Transitional”改編、“XHTML 1.0 Strict”是參照“HTML 4.01 Strict”改編、“XHTML 1.0 Frameset”是參照“HTML 4.01 Frameset”改編。

微軟Internet Explorer 5.0所新增的<ruby>小字註解標簽,在XHTML 1.1得到支援(參看旁註標記)。

語法

XHTML語言必須符合XML的格式,例如,<br>要寫成<br />、使用了<p>之後必須有一个</p>以結束段落。而且,XHTML標簽必須使用小寫字母,如<br />不能寫為 <BR />;每一個屬性都必須使用引號包住,如必須使用<img src="abc.jpg" />而不能使用<img src=abc.jpg>。這些做法的目的,是使一個XHTML網頁能夠被網頁瀏覽器正確及較快地編譯

和HTML 4的區別

(翻譯自W3C XHTML說明)這部分涉及內容廣泛.

XHTML是XML的一種應用,基於這一事實。那些在以SGML為基礎的HTML 4中完全合法的用法應當被改變。

文檔應該是良構的

良構(Well-formedness)[1]是由XML[2] 引入的一個新概念。也就是說所有的元素都必須有結束標簽或者以特殊的方式書寫(如下所述),而且所有的標簽必須合理地嵌套。

儘管如此,交叉使用在SGML中仍然是合法的,而且在現有的瀏覽器中也能夠被廣泛接受。

正確的:元素嵌套
<p><em>这是一个被强调的段落。</em></p>
錯誤的:元素交叉
<em><p>这是一个被强调的段落。</em></p>

元素名和屬性必須統一小寫

XHTML文檔把所有的HTML元素名和屬性名都小寫。這個區別是必須的,因為XML是大小寫敏感的。比如,<li><LI>是完全不同的兩個標簽。

對於非空標簽,也需要結束標簽

基於SGML的HTML 4裡面,允許特定的標簽省略結束標簽;這些元素暗含有結束標記。XML不允許省略結束標記。所有元素包括在DTD中聲明為 空的標簽都必須有結束標簽。在DTD中聲明為空的元素可以用結束標簽或者使用空元素速記法(參見空元素)。

正確的:結束的元素
<p>这是一个段落。</p><p>这是另一个段落。</p>
錯誤的:沒有結束的元素
<p>这是一个段落。<p>这是另一个段落。

屬性值必須總是使用引號包裹

所有的屬性值都必須使用引號包含,包括那些以數值類型出現的。

正確的:屬性值使用引號
<td rowspan="3">
錯誤的:屬性值沒有使用引號
<td rowspan=3>

禁止屬性簡化

XML不支持屬性簡化,屬性值對必須書寫完整。屬性名,像compact和checked在沒有指定具體值的情況下不能夠使用。

正確的:沒有簡化屬性
<dl compact="compact">
錯誤的:簡化屬性
<dl compact>

空元素

空元素必須有一個結束標簽,或者用/>來結束開始標簽。例如,<br/>或者<hr></hr>

正確的:結束空標簽
<br/><hr/>
錯誤的:沒有結束空標簽
<br><hr>

屬性值中空白字元的處理

當客戶端在處理屬性時,它們依據的是XML的章節3.3.3

  • 祛除前綴和後綴的空白字元。
  • 將一個或多個空白字元序列映射為單個詞間空格。

腳本和樣式元素

在XHTML裡面,腳本和樣式的元素被聲明為具有 #PCDATA 內容。因此,<和&會被認為是標記的開始,另外&lt;&amp;會被認為 XML 解釋器認為是實體映射被分別解釋成為<&。從而將腳本或者樣式元素包裹在 CDATA 標記的部分以避免這些實體擴展。

<script type="text/javascript"> // <![CDATA[ ... 没有转义处理的内容... // ]]> </script>

在文檔對象模型中,CDATA部分被XML解釋器認為是節點,參見文檔對象模型章節1.3的第一級別推薦DOM

一種替代方法就是使用外部的腳本和樣式文件。

SGML 排斥

SGML賦予DTD作者將特定的元素排斥在某個元素之外的能力。此種限制(被稱為排斥)在XML中是不可能的。

例如,HTML 4的嚴格文檔類型描述禁止“a ”作為子元素嵌套在其他“a ”的內部。這在XML中是不可能檢查出這種限制的。儘管這種限制無法在DTD中定義,也不要嵌套使用某些特定的元素。關於此類元素和不能嵌套使用的元素概覽可以在標準的元素限制里找到。

擁有“ id”和“ name”屬性的元素

HTML 4定義了a, applet, form, frame, iframe, img, and map元素的 name屬性。HTML 4還引入了id屬性。這兩個屬性被設計用作片段標識符。

在XML裡面,片段標識符是ID類型的,而且每個元素只能擁有單一的ID類型的屬性。所以,在XHTML 1.0中id屬性被定義為ID類型。為了確保XHTML 1.0文檔是構建優良的XML文檔,XHTML 1.0文檔在為以上所列元素定義片段標識符時必須使用id屬性。當XHTML文檔作為text/html媒體類型使用時,確保此類錨點的向後兼容性信息參見兼容性指南

註意:在XHTML 1.0中,不贊成此類元素擁有name屬性,在XHTML的後續版本中將被去掉。

擁有預設值的屬性

有一些屬性在HTML 4和XHTML中都有一套預設值(比如input元素的type屬性)。在SGML和XML中,這些被稱為枚舉屬性。在HTML 4里這些值的解釋是不分大小寫的,所以值TEXT等同於text。在XML里,這些值的解析是區分大小寫的,在XHTML1中,所有的這些值定義為小寫。

十六進位值的實體映射

SGML和XML都允許使用十六進位的數值來映射字元。在SGML里這些映射可以使用&#Xnn;或者&#xnn;。在XML文檔中,必須使用小寫的方式(比如,&#xnn;)。

參看

外部鏈接


! __







Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History