闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闁靛棙甯掗~婵嬫晲閸涱剙顥氬┑掳鍊楁慨鐑藉磻閻愮儤鍋嬮柣妯荤湽閳ь兛绶氬鎾閻樻爠鍥ㄧ厱閻忕偛澧介悡顖氼熆鐟欏嫭绀€闁宠鍨块、娆戠磼閹惧墎绐楅梻浣告啞椤棝宕橀敐鍡欌偓娲倵楠炲灝鍔氭繛鑼█瀹曟垿骞橀懜闈涙瀭闂佸憡娲﹂崜娑⑺囬鐔虹瘈闁冲皝鍋撻柛鏇炵仛閻や礁螖閻橀潧浠滄俊顐g箓椤曪綁顢氶埀顒€鐣烽悡搴唵妞ゅ繋鐒﹀▍濠囨煙椤旂瓔娈滈柡浣瑰姈閹柨鈹戦崼婵嗘瘓闂佽娴烽幊鎾诲箟閿涘嫭宕查柛鏇ㄥ幗椤洟鏌熼悜妯诲鞍缂傚秴娲弻鏇熺箾閸喖濮㈤梺鑽ゅ枂閸斿矂鈥旈崘顔嘉ч幖绮光偓鑼嚬缂傚倷绶¢崰妤呭箰閹间焦鍋╅柣鎴f绾偓闂佺粯鍔曠粔鍫曞窗閺嶎厼绠栨繛鍡樻尭缁狅絾绻濋棃娑欐悙妞わ腹鏅犲娲箮閼恒儲鏆犻梺鎼炲妼濠€鍗炍i幇鏉跨閻庢稒锚椤庢挻绻濆▓鍨灍闁糕晛鐗婄粋宥呪攽鐎n亞鐤勯梺闈浥堥弲娑㈡倷婵犲洦鐓忓┑鐐茬仢閳ь剚顨堢划璇差潩椤掑瀵岄梺闈涚墕濡稒鏅堕鍕厽闁哄啯鍨垫晶鎾煟閹垮啫澧存い銏☆殜瀹曟帒螖閳ь剚绂嶆ィ鍐╁仭婵炲棗绻愰顏嗙棯閻愵剚鍊愰柡灞剧⊕閹棃鏁愰崱妯荤槗闁诲孩顔栭崳顕€宕戞繝鍥╁祦婵☆垵鍋愮壕鍏间繆椤栨粎甯涙い蹇曞枛濮婄粯鎷呴懞銉с€婇梺闈╃秶缁犳捇鐛箛娑欐櫢闁跨噦鎷�濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻锝夊箣閿濆棭妫勯梺鍝勵儎缁舵岸寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ゆい顓犲厴瀵鏁愭径濠勭杸濡炪倖甯婇悞锕傚磿閹惧墎纾藉ù锝呮惈灏忛梺鍛婎殕婵炲﹤顕f繝姘亜闁稿繐鐨烽幏濠氭煟鎼淬劍娑у鐟帮工鍗辨い鏂垮⒔绾捐棄霉閿濆懏鎯堥崯鎼佹⒑閸濄儱校闁绘濮撮锝嗙節濮橆儵鈺呮煃閸濆嫬鈧憡绂嶅⿰鍫熲拺闁告稑锕︾粻鎾绘倵濮橆剚鍤囧┑顔瑰亾闂侀潧鐗嗗Λ娑㈠储闁秵鈷戦梻鍫熻儐瑜版帒纾块梺顒€绉撮悞鍨亜閹哄棗浜惧┑鐘亾闂侇剙绉寸粻鏌ユ煏韫囨洖袥婵℃彃鐗撻弻鏇$疀閺囩倫銏ゆ煠閺夎法浠㈤柍瑙勫灴閸┿儵宕卞Δ鍐ф樊婵$偑鍊栧▔锕傚炊椤垶顥夐柣搴$畭閸庨亶藝娴兼潙鐓曢柟瀵稿Х绾惧ジ鎮楅敐搴′航闁稿簺鍎甸弻娑欐償閵忕姴顫庣紓浣介哺鐢偤骞忛悩璇茬闁圭儤鎸婚鎺戔攽閻樻鏆滅紒杈ㄦ礋瀵偆鎷犻懠顒佹闂佺粯姊婚埛鍫ュ极瀹ュ棙鍙忔俊顖氥仒閸氼偊鏌℃径瀣€愭慨濠勭帛閹峰懘宕妷锔锯偓顔尖攽閳╁啨浠犻柛鏂块叄楠炲繒鈧綆鍠栭拑鐔兼煏婢跺牆鍔ら柨娑欑洴濮婅櫣鎲撮崟顐ゎ槰濡炪倖娉﹂崶褏顦ㄩ梺閫炲苯澧撮柟顔煎槻楗即宕橀悙顑芥瀰闁诲孩顔栭崰妤呭箖閸屾凹鍤曟い鏇楀亾鐎规洖銈搁幃銏ゅ传閸曨偅杈堥梻鍌氬€烽懗鍓佸垝椤栨娲冀椤撶偟锛欓梺闈╁瘜閸樻悂宕戦幘鎰佹僵闁绘劦鍓欓锟�
开发学院网页设计Html MIME Type 引出的两难困境 阅读

MIME Type 引出的两难困境

 2004-11-19 19:09:36 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簻椤掋垺銇勯幇顖毿撻柟渚垮妼椤粓宕卞Δ鈧獮濠勭磽閸屾艾鈧懓顫濋妸鈺佺疅缂佸顑欓崥瀣煕椤愵偅绶氱紓鍐╂礋濮婂宕掑▎鎴М濠电姭鍋撻梺顒€绉甸幆鐐哄箹濞n剙濡肩紒鎰殜閺屸€愁吋鎼粹€茬敖婵炴垶鎸哥粔鐢稿Φ閸曨垰鍐€妞ゆ劦婢€濞岊亪姊虹紒妯诲蔼闁稿海鏁诲濠氭晲婢跺﹤宓嗛梺缁樺姈缁佹挳宕戦幘璇叉嵍妞ゆ挻绋戞禍鐐叏濡厧浜鹃悗姘炬嫹闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闁靛棙甯掗~婵嬫晲閸涱剙顥氬┑掳鍊楁慨鐑藉磻濞戔懞鍥偨缁嬫寧鐎梺鐟板⒔缁垶宕戦幇鐗堢厵缂備焦锚缁椦囨煃瑜滈崜锕傚矗閸愵煈娼栭柛婵嗗珔瑜斿畷鎯邦槾濞寸姴銈稿铏规嫚閼碱剛顔夐梺鐓庣秺缁犳牠骞冩ィ鍐╁€婚柦妯侯槼閹芥洟姊洪棃娑辨濠碘€虫喘瀹曘垽鎮介崨濞炬嫼闁荤喐鐟ョ€氱兘宕箛娑欑厱闁绘ê纾晶鐢告煏閸℃鈧湱缂撴禒瀣窛濠电姴瀚獮鍫ユ⒑绾懎顥嶉柟娲讳簽濡叉劙寮撮悢鍝勨叞闂傚倸鍊风欢姘缚瑜嶇叅闁靛牆娲犻崑鎾愁潩椤愩垹绁梺缁樹緱閸o綁鐛幒鎳虫棃鍩€椤掑倻涓嶉柨婵嗘缁♀偓闂傚倸鐗婄粙鎴﹀汲濞嗗緷鐟扳堪閸垻鏆梺鍝勭焿缂嶄焦鎱ㄩ埀顒勬煃閹増纭炬繝鈧潏銊х彾闁哄洨鍠撶弧鈧┑顔斤供閸橀箖宕㈤悽鍛娾拺缂備焦锚婵箓鏌涢幘鏉戝摵闁诡喗蓱濞煎繘濡搁妶鍥╃暰闂備礁婀辩划顖滄暜閻愬瓨娅犳繛鎴炴皑绾捐偐绱撴担璐細婵炴彃顕埀顒冾潐濞叉牕鐣烽鍐簷闂備礁鎲¢崝鏇㈠疮閻樿绀堟繝闈涚墛瀹曞弶绻涢幋鐐ㄧ細闁哄棗妫楅埞鎴︽偐鏉堫偄鍘¢梺杞扮劍閻楁粎妲愰幘瀛樺濞寸姴顑呴幗鐢告⒑閸︻厽鍤€婵炲眰鍊濋幃楣冩倻閽樺顔婇梺瑙勬儗閸樹粙宕撻悽鍛娾拺闁荤喐婢橀幃渚€鏌i幒鐐电暤闁诡喗顨婇獮鏍ㄦ媴閸忓瀚藉┑鐐舵彧缁插潡宕曢妶澶婂惞闁逞屽墴濮婃椽骞栭悙娴嬪亾閺嶎厽鍋嬮柣妯垮吹瀹撲線鐓崶銊р姇闁哄懏鎮傞弻銊╂偆閸屾稑顏�婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牊鏁鹃梺鍛婄懃缁绘垿濡甸崟顖氱闁告鍋熸禒鑲╃磽娴e搫顎岄柛銊ョ埣瀵鈽夐姀鐘电杸闂傚倸鐗婄粙鎺楁倶閸儲鍊甸柣鐔哄閸熺偟绱掔拠鎻掓殻濠碉紕鏁诲畷鐔碱敍濮橀硸鍟嬮梺璇查叄濞佳囧箺濠婂牊鍋╁┑鍌氭啞閳锋垹鐥鐐村婵炲吋鍔栫换娑㈡嚑椤掆偓閺嬪孩銇勯銏㈢缂佽鲸甯掕灒闁兼祴鏅滈崵宀勬⒒娓氣偓閳ь剛鍋涢懟顖涙櫠椤旇偐鏆嗛柨婵嗙墕閸斿灚銇勯敂鐣屽弨闁诡噯绻濇俊鑸靛緞鐎n剙甯鹃梻浣稿閸嬪懐鎹㈤崘顔肩;妞ゅ繐鎳愮粻鍓р偓鐟板閸犳洜鑺辨繝姘畾闁绘柨鍚嬮埛鎴︽倵閸︻厼校闁靛棗鍟撮弻銈夊礃閼碱剙鐓熼悗瑙勬礃缁诲牓寮崘顔肩劦妞ゆ帒瀚ч埀顒佹瀹曟﹢顢欓崲澹洦鐓曢柍鈺佸枤濞堟﹢鏌i悢绋垮婵﹥妞介幃鈩冩償閳╁啯鐦i梻浣虹帛閻楁洟濡剁粙璺ㄦ殾闁绘垶岣跨弧鈧梺鎼炲劀閸愩劎銈梻鍌欑窔濞佳勵殽韫囨洘顫曢柡鍥ュ灩閸屻劍銇勮箛鎾跺闁抽攱鍨块弻鐔兼嚃閳轰椒绮堕梺鍛婃⒐椤ㄥ﹪寮婚敓鐘插窛妞ゆ棃鏁慨鍥╃磽娴gǹ鈧湱鏁悢濡撳洨鈧潧鎽滅壕濂稿级閸稑濡肩紒妤佺缁绘盯鎮℃惔锝囶啋闂佺硶鏂侀崜婵嬪箯閸涘瓨鐓ラ悗锝呯仛缂嶆姊婚崒姘偓宄懊归崶褜娴栭柕濞炬櫆閸婂潡鏌ㄩ弴鐐测偓鍝ョ不閺屻儲鐓曢柕澶樺枛婢ь噣鏌$€b晝绐旈柡宀€鍠栧畷婊嗩槾閻㈩垱鐩弻锟犲川椤旇棄鈧劙鏌$仦璇插闁诡喓鍊濆畷鎺戔槈濮楀棔绱�闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簻椤掋垺銇勯幇顖毿撻柟渚垮妼椤粓宕卞Δ鈧獮濠勭磽閸屾艾鈧懓顫濋妸鈺佺疅缂佸顑欓崥瀣煕椤愵偅绶氱紓鍐╂礋濮婂宕掑▎鎴М濠电姭鍋撻梺顒€绉甸幆鐐哄箹濞n剙濡肩紒鎰殜閺屸€愁吋鎼粹€茬敖婵炴垶鎸哥粔鐢稿Φ閸曨垰鍐€妞ゆ劦婢€濞岊亪姊虹紒妯诲蔼闁稿海鏁诲濠氭晲婢跺﹤宓嗛梺缁樺姈缁佹挳宕戦幘璇叉嵍妞ゆ挻绋戞禍鐐叏濡厧浜鹃悗姘炬嫹  闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻锝夊箣閿濆憛鎾绘煕閵堝懎顏柡灞诲€濆畷顐﹀Ψ閿旇姤鐦庡┑鐐差嚟婵潧顫濋妸褎顫曢柟鎹愵嚙绾惧吋绻涢崱妯虹瑨闁告﹫绱曠槐鎾寸瑹閸パ勭彯闂佹悶鍔岄悥鍏间繆閹绢喖绀冩い鏃傚帶缁愭盯姊洪崫鍕垫Ч闁搞劌缍婂畷銏犆洪鍛偓鍨殽閻愯尙浠㈤柛鏃€纰嶉妵鍕晜鐠囪尙浠搁悗瑙勬穿缁绘繈鐛惔銊﹀殟闁靛/鍐ㄥ闂傚倸饪撮崑鍕洪敃鈧叅闁哄秲鍔庢晶锟犳⒒閸屾瑦绁版い鏇嗗應鍋撻崹顐㈡诞鐎规洘绮撻幃銏$附婢跺绋侀梻浣瑰劤缁绘劕锕㈡潏鈺侇棜闁稿繘妫跨换鍡樸亜閺嶃劎顣查柟顖氱墛閵囧嫰顢曢姀鈶裤垺銇勯鍕殻濠碘€崇埣瀹曞崬螖閳ь剟锝炴惔銊︹拺闁告稑饪撮悞濂告煕閵夋垵鎳庡銊モ攽閻橆喖鐏辨繛澶嬬閻у矂姊虹紒妯荤叆闁告艾顑夐幃锟犲Ψ閳哄倸鈧敻鏌ㄥ┑鍡涱€楅柛妯绘尦閺屾稓鈧綆鍋呯亸鎵磼缂佹ḿ绠撴い顐g箞椤㈡ê鈽夊▎蹇d紪闂備浇宕甸崰鎰垝鎼淬垺娅犳俊銈呭暞閺嗘粓鏌熼悜妯诲暗妞も晜褰冮湁闁绘挸娴烽幗鐘绘煟閹惧瓨绀嬮柡宀€鍠栭獮鍡氼檨闁搞倗鍠栭弻宥夋寠婢舵ɑ鈻堥梺鍝勮嫰缁夊墎妲愰幒鎳崇喖鎳¢妶鍛辈濠碉紕鍋戦崐銈夊磻閸涱垱宕查柛顐犲劚缁犵姵绻濇繝鍌涘櫣闁哄鐗婃穱濠囶敍濠垫劕娈銈呯箰缂嶅﹤顫忔繝姘<婵炲棙鍩堝Σ顕€姊虹涵鍜佸殝缂佽鲸娲滈崚鎺戔枎閹惧磭顓洪梺鎸庢煥閹碱偅绂嶆總鍛娾拺闁告繂瀚峰Σ褰掓煕閵娧冩灈鐎殿喗鎮傚顕€宕奸悢鍝勫箰闂備礁鎲¢崝褏寰婇懞銉ь洸闁告挆鍛紳婵炶揪缍€濞咃絿鏁☉姘辩<閻庯綆鍋呯亸鎵磼閸屾稑娴柡浣稿暣瀹曟帒顫濋幉瀣簥濠电姵顔栭崰妤呮晝閳哄懎绀堥柨鏇炲€归崐鐢告煙閹澘袚闁抽攱甯掗湁闁挎繂鎳忛幉鎼佹煥濞戞ḿ肖缂佽鲸甯¢、姘跺川椤撶姳妗撴俊銈囧Х閸嬬偤宕归崹顔炬殾闁割偅娲﹂弫鍡涙煕鐏炵偓鐨戦柕鍫畵濮婅櫣鎷犻幓鎺戞瘣缂傚倸绉村Λ娆戠矉瀹ュ鍐€妞ゆ挾鍋熼崫妤佺箾鐎电ǹ孝妞ゆ垵妫濋幃鈥斥枎閹剧补鎷哄銈嗘尪閸斿酣鎮鹃崡鐑嗙唵鐟滄粓宕归柆宥呂﹂柛鏇ㄥ灠濡﹢鏌涢…鎴濇灀闁稿鎸鹃幉鎾礋椤撴稒鏁靛┑鐘垫暩婵潙煤閿曞倸纾归梺鍨儍娴滄粓鐓崶銊﹀碍妞ゅ繈鍊濋弻娑氣偓锝庡亝瀹曞瞼鈧鍠栭埀顒傚櫏濡俱劌鈹戦悙鎻掓倯闁绘娲熼崺鐐哄箣閿旇棄浜归柣搴℃贡婵挳藟濠靛鈷戠紒瀣劵椤箓鏌涢弬鍧楀弰妤犵偛顦~銏犵暆閳ь剟鎮块埀顒€鈹戦悙鏉戠仸瀹€锝呮健閹潡宕ㄧ€涙ǚ鎷洪梺闈╁瘜閸欌偓婵$偓鎮傞弻娑㈡偐閹颁焦鐤侀悗娈垮枟閻擄繝鐛弽銊﹀闁革富鍘煎鎶芥⒒娴h櫣甯涙繛鍙夌墵瀹曟劙宕烽娑樹壕婵ḿ鍋撶€氾拷
核心提示: 一切从一个糟糕的浏览器开始,它完全不支持 XHTML,MIME Type 引出的两难困境,什么是 MIME Type? 为什么这么说呢?首先,我们要了解浏览器是如何处理内容的,长远的,现在难以看出的好处,在浏览器中显示的内容有 HTML、有 xml、有 GIF、还有 Flash……那么,浏览器是如何区分它们
   一切从一个糟糕的浏览器开始,它完全不支持 XHTML。

  什么是 MIME Type?

为什么这么说呢?首先,我们要了解浏览器是如何处理内容的。在浏览器中显示的内容有 HTML、有 xml、有 GIF、还有 Flash……那么,浏览器是如何区分它们,绝对什么内容用什么形式来显示呢?答案是 MIME Type,也就是该资源的媒体类型。

媒体类型通常是通过 HTTP 协议,由 Web 服务器告知浏览器的,更准确地说,是通过 Content-Type 来表示的,例如:

Content-Type: text/html

表示内容是 text/html 类型,也就是超文本文件。为什么是“text/html”而不是“html/text”或者别的什么?MIME Type 不是个人指定的,是经过 ietf 组织协商,以 RFC 的形式作为建议的标准发布在网上的,大多数的 Web 服务器和用户代理都会支持这个规范 (顺便说一句,Email 附件的类型也是通过 MIME Type 指定的)。

通常只有一些在互联网上获得广泛应用的格式才会获得一个 MIME Type,如果是某个客户端自己定义的格式,一般只能以 application/x- 开头。

XHTML 正是一个获得广泛应用的格式,因此,在 RFC 3236 中,说明了 XHTML 格式文件的 MIME Type 应该是 application/xhtml+xml

当然,处理本地的文件,在没有人告诉浏览器某个文件的 MIME Type 的情况下,浏览器也会做一些默认的处理,这可能和你在操作系统中给文件配置的 MIME Type 有关。比如在 Windows 下,打开注册表的“HKEY_LOCAL_MACHINESOFTWAREClassesMIMEDatabaseContent Type”主键,你可以看到所有 MIME Type 的配置信息。

  浏览器处理 XHTML 和 HTML 有什么区别?

HTML 的语法过于随意了,有许多简写,标记不匹配的复杂情况,同时长期 Web 发展下来积累下来了许多错误的用法——比如一个文档里完全没有 标记——但浏览器还是得支持它,可想而知,为了支持这些“Tag Soup”——也就是我们所说的那些,乱成一锅粥的标签——浏览器要很费力地去猜测一段标记的意思,努力以用户期望的形式表达出来。一句话说,虽然 HTML 4.01 允许你用语义化、结构化的、内容与表现分离的方法来书写标记,但由于它沿袭了 HTML 这种格式,使得浏览器对于凡是 MIME Type 为“text/html”的文件,都得采用一种非常费劲的方法去处理,这对于 Web 的发展是很不利的。

再说除了浏览器,还有许多其他的用户代理要阅读 HTML:纯文本的浏览工具、读屏器等等。

创造 XHTML,很大一部分原因正是要通过 XML 重新严格地规范一遍标记,让这些用户代理可以以一种更简便的方式来解析这些标记。因此,XHTML 这种新的格式,天生就要求内容的发布者必须以严格的方式来标记自己的文档。

当然,XHTML 对于内容提供者也有好处,此处先不展开,详见下文。

  MIME Type 与之又有什么关系?

把前两节的内容合起来,你显然可以发现:一个正常支持 XHTML 的浏览器会根据服务器提供的 MIME Type 是 text/html 还是 application/xhtml+xml 来区分获取到的内容是 HTML 还是 XHTML,对这两种格式,分别以两种不同的方式来解析文档,后者解析起来要严格得多,但对于用户代理开发者和内容提供者都有很大的好处。

那么,那些浏览器正常的支持了 XHTML 呢?答案是 Mozilla、基于 Mozilla 的浏览器如 Netscape 7 和 Firefox、较新版本的 Opera 和 Safari 等等。但不包括 Microsoft Internet Explorer。问题是,这一“不包括”,就除掉了大约 90% 的浏览器市场啊,在我们抓狂以前,先来看看 IE 是什么处理 application/xhtml+xml 的:IE 不认得这种 MIME Type,它要么提示你是否下载那个文件,要么就把文件内容当作纯文本显示出来,反正是不可能正O允颈昙恰?/P>

这正是造成我们不得不给 XHTML 文档标以 text/html 的原因 1实际上,目前 Web 上 95% 的 XHTML,都是扮成 HTML 的 XHTML (包括 w3.org),浏览器 (包括我们引以为傲的 Mozilla) 压根没有用 XML 解析器去解析那些 XHTML,而是沿用处理标签汤的老办法。

这个时候你会问了,在我看起来,老办法显示得很好啊,干吗为此感到头疼呢?问题正是出在“看起来”这个词上,实际上,一些细微但是不可忽略的差别仍然存在。

  application/xhtml+xml 方式解析 XHTML 与用 text/html 方式解析的差别

下面所说的“HTML”,就是指 text/html 的解析方式;相应地“XHTML”就是指“application/xhtml+xml”的解析方式。

  1. 这是最重要的,严格的 XML 解析至少要求文档是 well-formed 的,也就是标签要正确开闭,& 等 XML 实体要正确使用。
  2. 在 HTML 中 是用户所能看到的全部视域,给 body 设置背景色就是给整个文档设置了背景色,但在 XHTML 中并非如此,给 设定背景色的效果和给 设定的不同。
  3. 在 HTML 中 CSS 规则中对元素的匹配是大小写不敏感的,BODY 和 body 匹配的是同一个元素,但在 XHTML 中却是大小写敏感的。
  4. 在注释中隐藏的 javaScript 脚本会被 XHTML 忽略。
  5. document.write() 不能在 XHTML 中使用。
  6. HTML DOM 和 XHTML DOM 的元素和属性返回值是不同的,HTML 中是大写,XHTML 中是小写。
  7. 还有不少其他的 DOM 问题。

总结起来就是,我们正在广泛使用的其实是一种看起来已经 XHTML 化的 HTML,想象一下吧,如果要求所有这些网站立即把 MIME Type 换成 application/xhtml+xml,即便用可以正常解析 XHTML 的浏览器来浏览,它们多数会死在前面列举的某一条原因下,无法正常显示。然而这不好说是 XHTML 的错,正常的处理理应如此,只不过我们一直被纵容了。

可是 W3C 还是不断要求我们以正确的 MIME Type 来提供 XHTML,为什么呢?因为我们要用到 XHTML 提供的好处啊,只有被认为是 XHTML 或者 XML 文档的东西,浏览器才会启用这些“好处”,比如你可以试着在 IE 中打开 XHTML 中嵌入的 MathML 看看,没有效果,它被当作 HTML 一样显示。

现在的问题是,既然把文档设定为真正的 XHTML 是如此的麻烦,会带来如此多的问题,干吗不舒舒服服地呆在 HTML 上呢?为什么要往 XHTML 过渡?XHTML 提供的“好处”值得我们为此付出如此多的代价吗?

  XHTML 的优势

最重要的两点是:

  1. 除了前面讨论的用户代理易于处理以外,实际上,大量的基于 XML 的工具,许多对 XML 有很好支持的编程语言,都能够方便地解析你的文档,从中提取出需要的信息。当然,也包括搜索引擎。
  2. 你可以利用 XHTML 继承自 XML 的良好的扩展性,比如在 XHTML 中嵌入 RDF 数据,描述文档的语义信息;加入 MathML 标记,描述数学公式;加入 SVG 标记,使用可伸缩矢量图型。

显然,如果文档连 well-formed 都做不到,优点 1 对你是无效的,就算有效吧,就个人来说,其实也没有多少人对 XHTML 进行 XML 解析,因为能做到的,大概也就是从 h1h2 这些标记中读出文档结构一类的功能,实在没什么大用处。

而第二点对大多数内容提供者来说,太远了,RDF 是什么东东?加入 RDF 信息有什么好处?没多少人知道或者有兴趣知道;MathML?这是可扩展性目前用得最多的地方,因为很多 MathML 阅读和编辑工具已经普及了,但如果你不是个成天在公式中打转的科学工作者,多半对此也没有兴趣;SVG 呢?倒是挺有意思,但目前显然没有获得广泛的应用,事实上,日后能否获得广泛的应用,还要看它能不能在与 Flash 的竞争中活下来:成为标准的东西被人抛弃也是常有的事。

总结起来,所有这些优点几乎都是一些空头支票,一些未来才能实现甚至未来都不知道能不能实现的东西,比如说你现在在开发一个 CMS 系统,如果现在都已经不能保证里面的内容 well-formed,有什么理由说以后,数据越来越多以后,反而会回头去把错误的标记一一改正?

事实上,用不到这些空头支票,我们的生活几乎没有受到任何影响。

那么,是否这就是说,XHTML 几乎就是一个鸡肋了 ?

  XHTML 啊 XHTML

行文至此,已经陷入了僵局,其实我本无意把 XHTML 说得那么差的,但问题是我每句说的都是实话呀,也没有忽略什么有必要提到的因素,但反复查考,总结起来还是那一句话:XHTML 其实是一个带一点理想主义的,对普通用户来说,相比 HTML 4.01 并没有显见优势的格式。

于是我们就陷入了两难困境:刨掉那些花言巧语,没有任何显见的优点吸引我们我们转向 XHTML,但如果我们永远躺在 HTML 4.01 舒服的被窝里,Web 岂不是永不前进了?

答案还是个问号。

  小结

本来,仅仅为了未来的锦绣图景,大家多数还是愿意转向 XHTML 的,这大概是个博弈论中微妙的平衡,用户、浏览器厂家、标准制定者三家玩的一个游戏,但 IE 打破了这个平衡:它不支持 application/xhtml+xml,于是用户只好都以 text/html 来发布 XHTML 页面。

如果把他们人格化:我觉得“用户”大概是个剃头挑子一头热的家伙,他们为自己的 XHTML 页面在一切浏览器上都如此美好而感到满意,却浑不知道背后其实还是 HTML,自己没沾着一点“X”的好处。

这时标准制定者——他一定是个理想主义者——也不满意,因为用户其实还是在以 HTML 的方式来写 XHTML 的,根本没准备好向 XHTML 进行转变的决心,标准制定者一心领着大家往 Web 美好的未来远航,却发现无论是用户还是浏览器厂商都在尽给他添乱。

浏览器厂商们——他们拥有最大的筹码,却始终冷眼旁观——此时却在开心地内斗,对此情况耸耸肩表示无能为力。

你可能会对此感到沮丧,但这的确是目前 Web 中的事实,承认也好不承认也好,确定一个目标,然后艰难而执著地前行,大概是我们这些标准推广者唯一能做的。

  注释
  1. 也并非完全没有办法,对于用 php 或者 asp 这样创建的动态内容而言,通过检测 HTTP 头来进行内容协商是最好的办法:给 `Accept: ` 中包含了 `application/xhtml+xml` 的请求提供 `Content-type: application/xhtml+xml` 的数据,而给其他的请求提供 `text/html` 的数据。(在 456 Berea Street 的一篇文章详细解释了这种方法,实际上,打开 Mozilla/Firefox 的 `about:config` 页面,你可以找到相关的配置 `network.http.accept.default` 来验证一下 Mozilla 是否发送了正确的 HTTP 头。),这几乎是一种完美的方法了 (实际上静态内容大概可以通过 Web 服务器的内容协商功能实现这种提供方式),但考虑到本文主要的目的是探讨是否应该用 XHTML,所以不在正文中详细讨论。
  2. 仍旧是指对普通用户而言,事实上必须承认,XHTML 的出现对于整个 Web 本身的长远发展绝对有好处。
  3. 其实话不该说得那么绝,应该说 XHTML 的出现是绝对有必要的,但其带来的好处绝大部分是对 Web 本身的,长远的,现在难以看出的好处,对用户或者开发者的好处微乎其微。
  参考文献
  1. Ian Hickson, Sending XHTML as text/html Considered Harmful
  2. Gez Lemon, It’s all in the MIME
  3. Gez Lemon, Specifying a MIME Type
  4. Roger Johansson, Developing With Web Standards, Recommendations and best PRactices, Part 5: XHTML
  5. Network Working Group, The ‘application/xhtml+xml’ Media Type
  6. Tommy Olsson, Content Negotiation
  7. W3C, XHTML Media Types

Tags:MIME Type 引出

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接