HTML 向 XHTML1.0 相容性指導_經驗交流

來源:互聯網
上載者:User
1 處理說明

一些使用者代理程式程式會顯示處理說明。但是,注意當文檔中沒有XML聲明時,文檔只能用預設的字元編碼UTF-8 或 UTF-16。

2 空元素

在空元素結束符 / 和 > 前加一個空格,如 , 和 . 還有,使用最小化的標籤文法,如
,因為另一種XML允許的文法

在很多現有使用者代理程式程式會導致不可靠的結果。

3 元素最小化和空元素內容

內容模型不是空的元素,在為空白的場合(如空title或空段落),不要用最小化形式(如 用

,不用 ).

4 嵌入的樣式表和Script

如果你的樣式表使用 < 或 & 或 ]]> 或 --,用外部樣式表。如果你的script用 < 或 & 或 ]]> 或 --,用外部script。 注意XML剖析器會在不告知的情況下除去注釋的內容。因此,以前用注釋的方法”隱藏”script和樣式表的習慣使文檔可以向後相容,但是可能在基於XML的執行時不能按預期工作。

5 在屬性值內部分行

在屬性值中避免使用分行和多個空格符。使用者代理程式程式處理這些情況時不一致。

6 Isindex

在文檔的head部分不要使用超過一個 isindex 元素. isindex 元素不被贊成使用,贊成使用input元素。

7 lang 和 xml:lang 屬性

在指定元素的語言時同時使用 lang 和 xml:lang 屬性。xml:lang 屬性在前。

8 片段標識符

在 XML中,以"#foo"形式結束片段標識符URI [RFC2396] 不是指元素有一個屬性name="foo",而是指元素有一個被定義為ID類型的屬性,如,HTML 4中的id屬性。很多HTML客戶程式不以這種方式支援ID類型屬性,所以,可以將相同的值同時附給這兩個屬性,以保證最大程度的向後和向前相容。(如 ...).

此外,因為ID類型屬性的合法值集比CDATA類型屬性的值集小得多,name屬性被改為NMTOKEN。這個屬性被限制為只有和ID類型或XML1.0 2.5節中的Name產品同樣的值。不幸的是,XHTML的DTD不能表示出這個限制。因為這個改變,在轉換現有的HTML文檔時要加以注意。 如果在轉換時值可能會改變,這些屬性的值在文檔中必須是唯一的,有效,任何對這些片段標識符的引用(不管是內部還是外部)必須更新。

最後,注意不贊成在 a,applet,form,frame,iframe,img,和 map 元素中使用name屬性,在以後的XHTML版本中,它將被去除。

9 字元編碼

要指定文檔中的字元編碼,同時在xml聲明中使用編碼屬性指定 (如. ) 和在meta中用 http-equiv 語句 (如 ).xml處理指示的編碼屬性值在前。

10 布爾屬性

一些HTML使用者代理程式程式在布爾屬性以完全(非最小化)形式出現時不能解釋它們,而這是XML1.0必須的。注意這個問題不會影響使用者代理程式程式對HTML 4的相容。包括以下一些屬性: compact,nowrap,ismap,declare,noshade,checked,disabled,readonly,multiple,selected,noresize,defer.

11 文件物件模型和 XHTML

文件物件模型 level 1 推薦標準 [DOM] 定義XML和HTML 4的文件物件模型。 HTML 4 文件物件模型規定HTML元素名和屬性名稱以大寫形式返回。XML文件物件模型規定元素名和屬性名稱以它們被指定的形式返回。在 XHTML 1.0中,元素和屬性指定為小寫形式。對這個顯著的差別可以用兩種方式處理:

通過DOM訪問text/html internet媒體類型XHTML文檔的應用程式可以使用HTML DOM,還可以依賴這些介面返回的大寫的元素名和屬性名稱。
通過DOM訪問text/xml或application/xml internet媒體類型XHTML文檔的應用程式也可以使用XML DOM. 元素名和屬性名稱將以小寫形式返回。 並且,一些 XHTML 元素可以也可以不出現在對象樹中,因為在內容模型中它們是可選的(如table中的 tbody 元素). 在HTML 4中,一些元素可以允許被最小化以至於它們的開始標籤和結束標籤都被忽略(SGML特性),所以可以發生。但是在XML中不行。XHTML使元素成為可選的,而不是要由文檔作者來插入外來元素。相應地,應用程式需要適應這一點。

12 在屬性值中使用 &

在屬性值中含有&符號時,它必須用字元實體引用來表示 (即 "&"). 例如,當一個元素的 href 屬性指向一個接收參數的 CGI指令碼時,它必須表示為http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user,而不是 http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.

13 層疊樣式表和XHTML

層疊樣式表 level 2推薦標準 [CSS2] 定義style的屬性,用於分析HTML和XML文檔的樹形結構。分析時的不通將導致不同的視覺或聽覺效果,這依賴於使用的選取器。

下面的技術可以減少對文檔的這種影響,而用不修改這兩中媒體類型:

一、XHTML的CSS樣式表應該用小寫元素和屬性名稱。
二、在table中,tbody 元素會被HTML使用者代理程式程式的分析器推斷出,但是XML使用者代理程式程式的分析器不會這麼做。所以如果在CSS選取器中要被引用到,你應該總是明晰地加上tbody元素。
三、在XHTML 名址空間,使用者代理程式程式將把”id”屬性認作為一個ID類型的屬性。因此,即使使用者代理程式程式不能認出DTD,樣式表也應該能夠繼續使用”#”簡化選取器文法。
四、在XHTML 名址空間,使用者代理程式程式將識別class屬性,因此,樣式表應該能構繼續使用”.”簡化選取器文法。
五、CSS 定義HTML和XML文檔的不同一致性標準; 在XHTML文檔以HTML表達時,用HTML規則,在XHTML文檔以XML表達時,用XML規則。
  • 相關文章

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.