如何看待《css權威指南》 (第三版) 中提到的 「HTML可能會逐步被XML所取代」 ?

原文來自 《css權威指南》(第三版)中國電力出版社 P13


這本書的第一版是2000年出版,第二版是2004年出版。當時Web標準社區對Web的未來的看法確實是XML會取代HTML。XHTML也是因此出現的。第三版寫作當時(2006年),HTML的開發在W3C重啟(2006年10月),但是XHTML2直到2009年才宣告結束。所以書里所說仍如實反映了當時的觀點。

更新:輪子又到他不怎麼了解的領域裡來回答問題了,精神可嘉,但是答案不靠譜。

有過XHTML,但是因為廣大前端程序員認為,苦逼事情就應該瀏覽器全包,為什麼一定要讓我們努力寫出格式完美的網頁?於是就死了。

這種說法不符合歷史事實。

首先,當年大部分網頁設計師/前端工程師(其實2005年之前不太有「前端」這個稱謂,先不管,反正是指那群專門寫HTML/CSS/JS的同志)是認同並努力寫格式良好的XHTML的。許多網頁設計師/前端工程師當年一直在努力推廣XHTML,包括曆數IE的罪狀里也一直有「不支持XHTML(如識別不了XHTML的media type)」這一條。實際上直到現在,許多人仍保留了XHTML的書寫習慣——對所有void元素自閉合(如 &),甚至許多編輯器也要求這種寫法才能正確自動高亮和補全。

其次,網頁沒有做到well-formed全是網頁設計師/前端工程師造成的嗎?的確總有掛羊頭(doctype聲明了XHTML)賣狗肉(實際按HTML語法寫代碼)的情況。但更多的情況是,他們已經嚴格遵照XHTML語法,也不能確保最終網站的所有頁面都是well-formed。因為有大量場景,最終產生的HTML內容不完全由他們掌控。比如頁面的一部分可能是調用後端甚至第三方介面(比如CMS系統)產生的,其HTML的質量取決於相關程序員(通常是後端工程師)或其所使用的操作HTML的庫。

在這樣的情況下,如果瀏覽器嚴格按照XHTML/XML規則執行,則很容易就發生解析錯誤。並且對於動態頁面來說,根本不知道哪個URL哪次請求掛了。

即使今天,複雜的大型網站要確保所有頁面的格式,都是一件工程上極具挑戰的事情。(考慮類似的場景——確保所有輸出點都正確escape以防止XSS漏洞,也是說起來容易,實踐起來非常困難的。)

另外,網頁設計師/前端工程師能決定標準的成敗嗎?間接影響是有的,直接影響其實是很少的。歷史上這一群體最體現影響力的事件大概是,在1998年到2000年左右,WaSP說服了微軟在IE6大幅提升了標準支持。但大多數時候他們只是逆來順受。實際上,Web標準走向的話語權主要掌握在瀏覽器廠商手裡,特別在2004年重啟HTML5之後更是如此。

綜上所述,輪子在本題下的答案是不靠譜的。


我覺得有些回答偏題了,題主這裡提到的更多是 HTML -&> XHTML -&> XML 用作網頁呈現的發展路線;而不是把 XML 作爲 JSON 一樣的數據交換格式或是 XML-RPC 這樣的應用。

上面其實也有人提到,曾經 W3C 的路線圖,是 HTML 過渡到 XHTML,最終實現 XML 的大和諧。

我覺得那其實是最好發展方向。因爲 XML + XSLT 其實是非常優雅的方案,它將內容和樣式進一步分離、解耦,使得信息傳遞過程的冗餘更小,可能出現錯誤或漏洞的地方更少,維護起來也更加容易。它讓內容更加語義化、結構化,便於機器的解析。

當然,談及 W3C 從 HTML 遷移到 XML 未遂夢想,就不得不提到這個夢想的第一步,XHTML:

我記得 07 年前後那陣子,weblog 大行其道,XML 搭載著 RSS、XSLT,在網際網路大戰拳腳。XHTML 當時也確實很受 geek 社群的歡迎,非常多的個人網站和 blog,都以掛著一個 XHTML-validated(下圖)的 icon 爲自豪。

XHTML 有 transitional 和 strict 兩個版本。在 strict 版本中,&、& 等標籤是被禁止的,因爲這樣的標籤僅僅作爲呈現樣式而存在,沒有任何語義;而樣式應該與內容分離,放在 CSS 裏才對。這樣使得後續的樣式修改更加容易,也避免了 HTML 標籤數量的過度膨脹。

XHTML 的主要要求:結構良好、標籤小寫、關閉標籤、強制引號包裹屬性等等,都體現了「統一」、「整齊」、「美感」並且能有效避免潛在的 bug。

舉例來說:要求標籤 self-close,也就是除了 &

& 這樣既有開始標籤,又有結束標籤的標籤外,& 這樣只有單個標籤的,也應當寫成 &
,以示標籤結束。這事實上大大方便了文檔結構的解析,因爲 parser 不再需要去記住哪些標籤是有結束標籤的,而哪些標籤是只有單個標籤的。

除此之外,XHTML 的語義化,對於推動一個更開放的網際網路,是有不少好處的。

只是後來,對快速發展的追求促生了 HTML5。而 WHATWG 大約是因爲跟 W3C 有私仇,竟然放棄了 XHTML 所帶來的所有優點。而既然瀏覽器寬容,大家就繼續使用各種粗糙而「能用就行」的代碼。這也就導致了 XHTML 基本宣告死亡。

但至少我是很贊同 XHTML,甚至最終發展到 XML 的理念的。現在每次在各種教程或是別人的代碼裏看到 & 的時候,我都會一陣噁心,把它趕快改成 &
。只可惜,連 Google 都完全放棄 XHTML,使用前一種寫法了。

真是令人唏噓。


這本書已經過時,XML/XHTML的格式算是潛移默化地影響了HTML的基本寫法,但這也只是標記語言的語法而已,其實沒有什麼實質意義;

準確來說,XHTML已經沒落。原因大概是XSLT與DTD沒有得到推廣使用:XSLT輸給了CSS、DTD則大概輸在大家其實不希望自己的XML/HTML受到嚴格的結構約束。

相反,XHTML和XSLT這樣的思路卻是很清晰值得借鑒的,只是他想做得大而全還想成為規範,以適配更多種類型的終端、同時獲得業內的主導權。但事實是,瀏覽器只用HTML/CSS就好了,而按這種思路做的終端都做了一套自己的XHTML和XSLT,也就沒必要再去用JAVA當年制定的這個規範了。

總地來說,大概算是JAVA吹起的WEB標準號角,但最後勝利者是瀏覽器和終端企業聯合而成的W3C聯盟。


所以xhtml剩半條命了


打掃衛生(樣式/功能分離)的極致是連傢具(HTML)都不要了。

然後住在倉庫(CSS/JS)里。

按照這個思路以後的房子應當非但連通讓戶主自己分割,還應該不指定衛生間和廚房,管道電線完全由戶主架設。

如果這並非不可能,那麼最終,是JS-DOM取代HTML(ML層被徹底抽象為DOM介面本身),不再關XML什麼事。


曾經網頁技術是向這方面發展的,html4後就搞出了xhtml1,目標就是向xml標準靠攏,並且xhtml1取得了巨大成功。當w3c躊躇滿志的推出更像xml的xhtml2時,各大瀏覽器廠商不幹了,大家決定讓w3c玩蛋去,自己私下成立了一個委員會,制定了個標準叫html5。後來w3c吸納了這個委員會,html5成為事實上的標準,xhtml2就被歷史所遺棄了。

另外還有一種xml+xslt的技術,就是用於將xml轉為網頁的。


然而還是被諸廠商歪樓了,目前可以預見的趨勢是HTML5。。。


過時文檔


不會, 現在除了一些老的JAVA框架用它做配置外,它原來所做的事全部被各種新格式(尤其是JSON)代替。江山代有才人出,各領風騷數百年。


有過XHTML,但是因為廣大前端程序員認為,苦逼事情就應該瀏覽器全包,為什麼一定要讓我們努力寫出格式完美的網頁?於是就死了。


教程這部分基本靠吹的。


歷史原因。最初認為HTML是簡化的SGML,後來xml出來了比SGML受歡迎多了,xml攜dtd/xsd/xslt橫掃一切,SUN的人某次技術演講直接說xml is asc future,國內曾經紅火極了的程序員論壇大富翁在表現層就弄成xml+xslt而不是html的。

w3c 堅持要在html里搞xml化也就情有可原了,xml自帶schema也比較對學術界的味口,xhtml 1.0 還不過癮,還打算完全拋棄html搞xhtml 2.0,越搞越複雜,而且慢得要死。好在蘋果、Mozzila和Opera的一幫人另外起了名為whatwg的爐灶搞出了html5,草案出得巨快,瀏覽器支持得更快,最重要的是寫的人用起來爽快,最最最重要的是已故喬幫主在2010滅Flash檄文里把HTML5捧上了天,這下大家都知道HTML5才是方向了。然後才有了今天再看那個年代的書覺得咋這麼不靠譜的局面呀。

話說,讓你寫

&

&

你選哪個?


一天,小明跟老闆說:「給我5萬塊錢經費升級一下我們的網站到最新的xml標準。」老闆也沒多想就批了5萬塊錢給小明。小明找來了高手把頁面全面由html過渡到xml。一個月後老闆出差回來,跟小明說:「來,打開咱們的網站看看,都更新了什麼東西。」啪!!"你是騙我錢來的吧?怎麼啥都沒變就花了5萬塊呢?」。小明顫顫巍巍的說起:「語法更嚴謹了。」然後小明就去財務結算了自己的工資了。


輪子這個智漲又亂答題了。

XML無法取代html,

就數據傳輸而言XML甚至可能會被json取代。

就數據保存而言XML還是挺好的。


純抖機靈:

XML屬於人很難看懂,機器也很難看懂的語言。所以前端開發實踐中,傾向於使用人容易看懂的HTML5描述結構;使用機器容易看懂的JSON描述數據。XML一邊玩兒去。


兩者最初設計的宗旨不一樣吧,一個用來傳輸數據,一種用來顯示數據,不懂不懂的,滾去寫代碼了(逃


我想起中國加入世貿組織(WTO)這件事來了。現在沒有人提起 WTO 了吧,想當年……


題主您知道XML標準是几几年出的嗎?以及當初設想用來解決什麼問題而現在XML用在了哪些地方嗎?


XML是人寫的嗎?(逃


Σ( ° △ °|||)︴ 這是一回事嗎?是不是少打了XHTML?


這麼些年來,xml都沒有什麼大用處。它被高估了。


推薦閱讀:

新組建的前端團隊如何選擇前端框架方案?
前端開發該如何循序漸進地學習?對於html、css、js、jq等有哪些不錯的資料 (視頻,博客,書籍等)可以推薦?
目前 CSS 實現豎排文本較為通用的方式是什麼?
HTML 和 CSS 代碼結構如何寫更加規範?
CSS中-webkit-text-size-adjust:none如何兼容blink?

TAG:前端開發 | HTML | CSS | XML |