2013年4月23日 星期二

HTML轉換至HTML 5之方法(一)

        由於論文需求,因此開始研究如何將HTML的程式碼轉換至HTML 5,但目前卻無現成的工具可以幫助我來解決這個難題,因此只好開始自己動手做看看囉!在研究的過程中總有心得,為了不要因為時間久而忘了這些曾經花時間研究的東西,因此開了這個Blog來記錄一下。


        上網去Google了一下,找到了一個名稱為"Simple XHTML to HTML5 converter!"的網站,我Try了一下網站上的範例程式碼,發現是可以轉的,但是放上自己的程式碼時,就知道被呼巄了...其實這個網站其實並不是真的提供了一個XHTML to HTML5 converter,而是要跟大家說:



This is joke of course! Don't treat it seriously! This Converter only shows how HTML5 may be messed up and still standards compatible!


意即,HTML5是不太能光靠一個Converter就轉過來的,就算轉過來了、格式對了,但是也可能在網頁執行時有許多不能預期的問題。


但是,我一開始就說啦!論文需求的關係,我勢必要有一個轉換的機制來幫我完成這件事情。因此就算他這樣說,我還是得做看看。其實還是有蠻多網站有介紹HTML及HTML 5兩者間的轉換機制,例如:"HTML-5.com"、"ireckon"。但是講的有點簡單,並沒有實作的過程,所以還是自己翻書來看看比較實在...


首先,在HTML中我們會遇到的第一句描述通常都會是DOCTYPE的宣告,一般而言大部分的網頁都是使用類似下面這一段HTML程式碼的描述:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
這一段文字宣告,在HTML 5中可以用:
<!DOCTYPE html>
這樣寫就可以了,連版本編號都可以省略。接下來就定義文字編碼,若沒有定義文字編碼,不僅文件含糊不清,更會造成許多安全性上的風險。這個部分必須寫在文件前512位元組中,除非有特殊用途否則大多建議採用UTF-8編碼。
<!DOCTYPE html>
<meta charset=UTF-8>
關於<meta>這個標籤,如果有在寫HTML的人會發現這麼標籤怎麼變的很短,以前都寫很長一行的,例如下面這樣:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
不過短的寫法不但簡潔,輸入也較輕鬆。但這並不表示長的寫法不對,長的寫法還是有效的。另外上面的charset=UTF-8,看起來也跟從前不太一樣,似乎忘記用雙引號(")把屬性包起來了,另外也沒有使用自我結尾的標籤寫法:
<meta charset=UTF-8 />
這是因為HTML 5並非XML語言,他對與法的規範沒有這麼嚴格,瀏覽器只要知道是text/html形式的文件就可以了,並不會管XHTML的語法,XHTML的語法只有XHTML驗證器材會在意。但即使語言規範並不是很嚴格,還是建議大家用自己習慣的一套寫法,不要格式亂七八糟的,以免往後維護起來 會很麻煩。

        那接下來就來試著寫一個可以自動轉換DOCTYPE以及<meta>標籤的功能吧!由於我熟悉的程式語言是Java,所以我文章中的程式碼會以Java為主。要做到上述的功能,我想最直接的方法就是把HTML原始碼丟到一個正規表達式裡面去了吧!

(to be continue...)

沒有留言:

張貼留言