很多朋友對我說,她/他有代碼潔癖,即,讓她/他寫XHTML的話,從來不願意加上額外的標籤(tag)。舉個簡單的例子,相信很多人從很多地方都看過的:
以下為引用的內容: <div id="nav"> <ul> <li></li> <li></li> ..... </ul> </div> |
很多人,包括許多業界大牛,都建議你這樣寫就好:
以下為引用的內容: <ul id="nav"> <li></li> <li></li> ..... </ul> |
當然,我個人很欣賞第二種寫法,沒錯,簡潔明了,語意(semantic)確鑿。但請等一等,如果需要樣式化(stylish)它,哪一種可以提供更多的控制(controll)? 很明顯,第一種。
然後,這個問題就有點讓人抓狂了。一句話:你是結構(markup)優先呢,還是表現(presentation)優先?我相信,在現今這個不美好的時代,表現優先是第一準則。很多有理想的人,包括我,最後為了實現表現上的需要,標籤湯(tag soup)其實難以避免。
所以,這只能是個度的問題。別濫用。怎麼不算濫用,也沒有什麼準則。我個人的準則是:如果要實現一個表現上的需要,你使用超過三層的外圍標籤(wrappers?),就應該停下來仔細想想了。儘管有點老,但我還是建議你來看看SimpleQuiz上面一些有趣的討論。
為什麼會這樣呢?因為一切都不完美。試想一下,如果CSS能夠提供更多的規則來控制頁面上的元素,或許就不會這麼尷尬。比方說,background-image支持trlb(上右下左)四個方向不同的圖片的話,我們就不必為處理圓角而絞盡腦汁;支持從頁面上產生元素,如content的話,那麼也可以大大減少tag的使用…
XHTML?笑話。其實目前為止沒有多少人在用XHTML,一切都是自欺欺人。 XHTML is Dead! XHTML是xml,擁有xml的一切優越性,但是,我們現在看到的,都是text。如果把text當作xml來處理,這是有害的(Sending XHTML as text/html Considered Harmful)。
雖然我們在Doctype上都標示了我們用的是XHTML,但實際上我們都在用HTML。這是現實。要不那些錯誤百出的非良構的頁面怎麼可能在寬容的當代瀏覽器中顯示呢……也難怪,XHTML 1只是HTML 4的改良而已。但是,未來的XHTML 2並不向後相容,我不知道我們使用XHTML 1的必要性何在。另外,別拿accessibility來反駁我,分離結構跟表現的HTML 4並沒有跟XHTML 1有任何差別。
因此,可能,使用XHTML 1的意義在於,宣稱我們已經有了這樣的思想,並且為未來的XHTML 2做好了準備。
這也是我為什麼,強烈建議使用HTML 4.01 Strict Doctype的原因。從公司/企業來說,要求整個團隊都具有web standards的思想,並貫徹相關原則並非易事,各種上個世紀遺留的思想仍然負隅頑抗。如果真的使用XHTML 1,很多只能相容html的JavaScript腳本會失效,編輯某個不經意的未轉義的字元會導致整個頁面出錯(xml parsing error),等等。為了避免問題,或許,HTML 4.01 Strict Doctype是現在的最佳選擇。