為解決大部份網頁都是含有錯誤的語法問題
W3C於1998年重組HTML小組,以XML的形式去重新描述HTML,而沒有加入任何新元素。
這套規格後來便成為了“XHTML1.0”
使用XHTML的好處,在於可以用XML的well-form形式去明確定立元素間的關係
與HTML4.0區別開來
而XHTML也嚴謹地定義了一些語法
如:
- 所有element和property皆使用小寫
- 所有property的value用引號來包覆
- 所有非空標籤都需要有結束的標籤
- property和value都不能簡化,使用property就需要指定其value
- 空的element也要有結束標籤,不然就是要使用“ />”
<div name="main"><br /><hr /></div>
refer :
http://zh.wikipedia.org/wiki/XHTML#.E5.85.83.E7.B4.A0.E5.90.8D.E7.A8.B1.E5.92.8C.E5.B1.AC.E6.80.A7.E5.BF.85.E9.A0.88.E5.B0.8F.E5.AF.AB
http://www.w3.org/TR/xhtml1/#diffs
今天遇到一個問題,使用chrome瀏覽 一個網頁時這個網址時,會發生error
Below is a rendering of the page up to the first error.
查看這個網頁的source code,有一行這樣寫著
<tr><td align="center" bgcolor="#FFCC00">--> .jpg <--</td></tr>
有沒有注意到竟然有“-->” 和"<--"
就是有"<" less than小於號和 “>”greater than大於號,
這樣的情況可能會導致兩個XHTML會認為是語法錯誤的問題
在W3C對XML的DTD文件中,針對特殊字元(special characters)有定義其該使用的html字串,如 "<"小於號就要使用 "&#60;" 這樣的一串
refer: http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters
另一個問題則是,根據上一點,XHTML parser就會把">" "<"視為是元素的標籤號,如若把那些小破折號都拿掉,變成 “ >.jpg< ”的話,更加會造成破壞well-form格式,一對小於大於號裡,含有其他的小於大於號," <> ><<> "
當然在parse XML的過程中就會出錯
由於HTML中沒有明確限制一個開標籤就要對應一個閉標籤,所以html在遇到這類網頁時,大部份情況下還是可以成功render的
當然,安全起見,在編寫網頁時,特殊符號就應該用html字串來取代。
就是有"<" less than小於號和 “>”greater than大於號,
這樣的情況可能會導致兩個XHTML會認為是語法錯誤的問題
在W3C對XML的DTD文件中,針對特殊字元(special characters)有定義其該使用的html字串,如 "<"小於號就要使用 "&#60;" 這樣的一串
refer: http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters
另一個問題則是,根據上一點,XHTML parser就會把">" "<"視為是元素的標籤號,如若把那些小破折號都拿掉,變成 “ >.jpg< ”的話,更加會造成破壞well-form格式,一對小於大於號裡,含有其他的小於大於號," <> ><<> "
當然在parse XML的過程中就會出錯
由於HTML中沒有明確限制一個開標籤就要對應一個閉標籤,所以html在遇到這類網頁時,大部份情況下還是可以成功render的
當然,安全起見,在編寫網頁時,特殊符號就應該用html字串來取代。
另外在Android device上測試過
從ICS(Android4.0) 之後的Browser就會顯示有錯誤
而ICS之前的版本則可以正常顯示出來
這說明了一點, Android ICS使用了XML parser來處理XHTML網頁
而之前的版本則用HTML的parser來處理,以HTML parser一向高寬容性作風,就不會那麼容易出錯了.
從ICS(Android4.0) 之後的Browser就會顯示有錯誤
而ICS之前的版本則可以正常顯示出來
這說明了一點, Android ICS使用了XML parser來處理XHTML網頁
而之前的版本則用HTML的parser來處理,以HTML parser一向高寬容性作風,就不會那麼容易出錯了.
沒有留言:
張貼留言