pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

Thinking XML: XML 樣式的 HTML5

有一段時間,在 web 上出現了有關標記未來發展的競爭,即 W3C 的 XHTML 2 和 HTML5 之間的競爭,這是主要瀏覽器廠商在其各自組織下進行的競爭。首先,W3C 接管了 HTML5,并且它最近宣布了 XHTML 2 的衰退。這就使 web 上的 XML 的未來產生了巨大差異,此外, HTML5 現已成為每個 XML 開發人員都會使用的一種技術。

  但是,XML 愛好者不必失望:HTML5 支持恰當的 XML 序列化。了解 XML 形式的 HTML5 包括與舊式 XHTML 規則的一些主要差別,以及如何在現代 web 瀏覽器中實際應用此詞匯。

  HTML 的歷史一直存有爭議。即使是 web 架構師盡了最大努力,網頁始終是一個難以駕馭的領域,它具有混亂的、令人費解的,甚至是有時非常惱人的破碎標記(別名為標簽雜燴)。 XML 的一個目標始終是幫助解決這種混亂問題,因此 XML 被定義為 “web 的 SGML”(SGML 是一種原語言,而 HTML 只是其中的一種)。XML 一問世就立刻引起了軒然大波。W3C 期望 XML 在瀏覽器中獲得成功,并將 XHTML 作為比 HTML 更連貫的最自然的發展。不幸的是,總是出現意想不到的問題破壞這一目標??此坪唵蔚母拍睿ū热缑臻g和鏈接)成為技術政治的夢魘。由此產生的爭議和延遲已足以使瀏覽器開發人員確信,XML 可幫助解決現有問題,但是它又提出了更多新的、未知的問題。

  即使沒有越來越多的證據表明 XML 并非靈丹妙藥,對于使用標記雜燴的大量舊式網頁來說,當瀏覽器開發人員試圖遷移到嚴格的基于 XML 的路徑時,總是會遇到問題。此外,請考慮 Postel's Law(Postel 法則),這一法則根據著名的計算機科學家 John Postel 命名。該法則規定:

  像保守派那樣去做,像自由派那樣去接受其他的。

  XML 的限制與此法則在服務器或數據庫端是一致的,管理人員在策略方面是保守的。這也是 XML 茁壯成長的原因。web 瀏覽器可能是從其他人那里接收信息的最終示例,所以這也是 XML 和 Postel 法則最關注的地方。

  XHTML 的發展

  在過去幾年里形勢已非常嚴峻。瀏覽器廠商在很大程度上一直忽略了 W3C,并且成立了一個 Web 超文本應用技術工作組(Web Hypertext Application Technology Working Group,WHAT WG)發展 HTML,創建了 HTML5。但是對 W3C XHTML 的支持卻停滯了。通過提供場所來繼續 HTML5 工作,W3C 第一次認清了現實,并且它在 2009 年停止了 XHTML 工作,接受了失敗這一事實。沒有一種方法來衡量這是否是 XHTML 在實踐中的結束。當然 HTML5 并非是有意設計為 XML 友好的,但它至少以 HTML 的 XML 序列化形式(在本文中是 XHTML5)提供了口惠。然而,事情還遠沒有解決,正如 HTML5 FAQ 中的一個問題所述:

  如果我在 HTML 文檔中小心地使用語法,是否可以使用 XML 解析器處理它?不可以。HTML 和 XML 有著顯著的差別,尤其是在解析需求方面,并且您無法使用針對一方設計的工具去處理另一方的問題。但是,由于 HTML5 是根據 DOM 定義的,所以在大多數情況下,可使用 HTML 或 XHTML 序列化來表示同一文檔。但是,稍后將介紹一些差異,這些差異使 XHTML 無法準確表示一些 HTML 文檔,反之亦然。

  對于對 web 上的 XML 的未來感興趣的任何開發人員來說,這種情況會讓他們感到非常困惑。本文將提供一個實用指南,闡述在 HTML 5 中使用 XML 的情況。本文是為那些被我稱為終極網絡黑客 的人而編寫的,他們不是 W3C 標準大師,但要么對在 web 上生成 XHTML 5 感興趣,要么對以簡單的方式使用它感興趣(也就是使用信息而不是擔心龐大復雜的呈現)。我承認,做出其中一些建議對我來說是痛苦的,因為正確處理 XML 已有一個長期主張。記住,HTML5 仍然是 W3C 的工作草案,在它成為一個完整的建議之前可能還需要一段時間。盡管其中一些特性很穩定且能在 web 上很好地實現。

  將文檔作為 XHTML5 提供

  不幸的是,我有更多的壞消息。您可能無法像官方定義的那樣使用 XHTML5。這是因為一些法規規定:為了將文檔轉換為 XHTML5,它必須使用 application/xhtml+xml 或 application/xml MIME 類型提供。但是如果您這樣做,所有發行的 Microsoft? Internet Explorer? 版本都將無法顯示它(但使用其他主流的現代瀏覽器則沒有問題)。惟一實用的解決方法是使用 text/html MIME 類型提供語法 XHTML5。從技術上講,這可能違反了一些版本的 HTML5 規范,但是除非您可以不支持 Internet Explorer,否則就沒有更多的選擇。說到增加混亂,這在相關的工作組中是一個非常有爭議的話題,并且至少這種語言已緩和了一些草案。 Internet Explorer 9 測試版(也稱為 “平臺預覽”)完全支持使用 XML MIME 類型提供的 XHTML,所以一旦用戶可普遍使用此版本時,此問題就不存在了。同時,如果您需要支持 Internet Explorer 6 或更早的版本,則本文中介紹的解決方法就不夠用了。您就只能使用 HTML 4.x 了。

  對終極 web 黑客的建議:使用 text/html MIME 類型提供語法 XHTML5。

  DOCTYPE 的樂趣

  從終極 web 黑客的角度來說,一個好消息是,XHTML5 使文檔類型聲明(DTDecl)問題變得更少。XHTML 1.x 和 2 需要臭名昭著的構造,比如 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">。這樣做的最大問題是新型的處理器很可能加載此 DTD URL,而這可能是一種不必要的網絡操作。此外,一個 URL 包括許多其他 URL,并且您通常不需要從 W3C 站點下載多個文件。有時 W3C 上放置的文件甚至會有一些問題,這會導致一些很難調試的問題。

  在 XHTML5 中,文件的 XML 性質完全由 MIME 類型決定,并且實際上任何 DTDecl 都會被忽略,所以您可以忽略它。但是 HTML5 提供了最小化的 DTDecl <!DOCTYPE html>。如果您使用此 DTDecl,那么幾乎所有瀏覽器都會切換到 “標準” 模式,即使是完整的 HTML5,這通常更一致且更可預測。注意,HTML5 DTDecl 不會引用任何單個文件,所以可避免早期的一些 XHTML 問題。

  對終極 web 黑客的建議:在 XHTML5 中使用 HTML 最小化的文檔類型聲明 <!DOCTYPE html> 。

  由于您不使用任何外部 DTD 組件,因此您無法使用常見的 HTML 實體,比如 &nbsp; 或 &copy;。這些都是在那些您未聲明的 XHTML DTD 中定義的。如果您想使用它們,XML 處理器將失敗并出現一個 undefined entity 錯誤。惟一安全的命名字符實體是:&lt;、&gt;、&amp;、&quot; 和 &apos;。使用數值等效代替。例如,使用 &#160; 而不是 &nbsp;;使用 &#169; 而不是 &copy;。

  對終極 web 黑客的建議:不要使用任何命名字符實體,以下實體除外:&lt;、&gt;、&amp;、&quot; 和 &apos;

  從技術上講,如果您將文檔作為 text/html 提供,根據第一個建議,使用 HTML 命名字符實體,在大多數瀏覽器上都不會出錯,但是依靠這一意外是非常脆弱的。此外,記住,瀏覽器并不是 XML 的惟一使用者。其他 XML 處理器被此類文檔弄得不知如何是好。

  命名空間的樂趣

  認識 XML 格式的復雜機制的最后一層是命名空間,前兩個是 MIME 類型和 DTDecl。可能您過去經常使用類似下列行的內容開始 XHTML 文檔。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" > 

  黑體部分(xmlns="http://www.w3.org/1999/xhtml")是命名空間。在 XHTML5 中,此命名空間仍然是必需的。如果您包含了其他 XML 詞匯,比如可縮放的向量圖形(Scalable Vector Graphics,SVG),則將他們放置在其各自的必需命名空間中。

  對終極 web 黑客的建議:在 XHTML5 文檔的頂部始終包含默認的命名空間,并為其他嵌入的 XML 格式使用相應的命名空間。

  如果您包含了其他詞匯,則他們的命名空間聲明必須在嵌入部分最外面的開始標記中。如果您在 html 元素中聲明了它們,則會遇到一個 text/html 文檔一致性錯誤。

  處理 XHTML5 內容

  XHTML5 支持您使用以下方式指定介質類型:用協議頭,比如 HTTP Content-Type 頭;使用名為 “字節順序標記 (BOM)” 的特殊字符標記,或者是使用 XML 聲明。只要不互相沖突,您可以隨意組合使用這些方法,但避免問題的最好方式是在選擇組合方法時要謹慎。不幸的是,使用 XML 聲明存在潛在問題,因為它會使 Internet Explorer 8 及更早版本都切換到怪異模式,這會導致臭名昭著的顯示異常,也正是因為這種情況才使瀏覽器聞名于世。

  對終極 web 黑客的建議:對 XHTML5 文檔僅使用 Unicode 編碼。在文檔的開頭部分,省略 XML 聲明,并使用 UTF-8 編碼,或者使用 UTF-16 Unicode 字節順序標記(Byte Order Mark,BOM)。如果可以,可在提供文檔時使用 Content-Type HTTP 頭。

  下面是此類 HTTP 頭的一個示例:

Content-Type: "text/html; charset=UTF-8" 

  新的語義標記元素

  HTML5 引入了一些新元素,提供語義更明確的內容結構,比如 section 和 article。這些元素是 HTML5 的一部分,可能會發生變化,但是變化不會太大,并且這些新元素提供的改進表達式也降低了風險。一個問題是 Internet Explorer 不是在 DOM 中構造這些元素,所以如果使用 JavaScript,您就需要采用另一個解決方法。Remy Sharp 通過在文檔頭包含下列代碼段來維護 JavaScript 修復。

<!--[if IE]> 
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 

  您還可能需要定義元素的 CSS 規則,以免任何瀏覽器以 HTML 4 形式顯示文檔,HTML 4 形式以內聯呈現方式顯示未知元素。下列 CSS 應該有效。

header, footer, nav, section, article, figure, aside { 
  display:block; 
} 

  對終極 web 黑客的建議: 使用新 HTML5 元素,但是請包含 HTML5 shiv JavaScript 和默認 CSS 規則以支持它們。

  將它們組合起來

  我已經給出了許多單獨的建議,我將把它們組合起來形成一個完整的示例。清單 1 是滿足這些建議的 XHTML5。通過 HTTP 提供它時,除非您可以不支持 Internet Explorer,否則請使用頭 Content-Type: "text/html; charset=UTF-8";當不支持 Internet Explorer 時,請使用頭 Content-Type: "application/xhtml+xml; charset=UTF-8"。

清單 1. 完整的 XHTML5 示例

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
 <head> 
 <title>A micro blog, in XHTML5</title> 
 <style> 
<!-- Provide a fall-back for browsers that don't understand the new elements --> 
header, footer, nav, section, article, figure, aside { 
 display:block; 
} </style> 
 <script type="application/javascript"> 
  <!-- Hack support for the new elements in JavaScript under Internet Explorer --> 
  <!--[if IE]> 
   <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> 
  <![endif]--> 
 </script> 
 <script type="application/javascript"> 
  <!-- ... Other JavaScript goes here ... --> 
 </script> 
 </head> 
 <body> 
  <header>A micro blog</header> 
  <article> 
   <section> 
    <p> 
     There is something important I want to say: 
    </p> 
    <blockquote> 
     A stitch in time saves nine. 
    </blockquote> 
   </section> 
   <section><p>By the way, are you as excited about the World Cup as I am?</p> 
   </section> 
  </article> 
  <article> 
   <section> 
    <p> 
     Welcome to my new XHTML5 weblog <img src="/images/logo.png"/> 
    </p> 
   </section> 
  </article> 
  <aside> 
   <header>Archives</header> 
   <ul> 
    <li><a href="/2010/04">April 2010</a></li> 
    <li><a href="/2010/05">May 2010</a></li> 
    <li><a href="/2010/06">June 2010</a></li> 
   </ul> 
  </aside> 
  <footer>&#169; 2010 by Uche Ogbuji</footer> 
  <nav> 
   <ul> 
    <li><a href="/">Home</a></li> 
    <li><a href="/about">About</a></li> 
    <li><a href="/2010/06">Home</a></li> 
   </ul> 
  </nav> 
 </body> 
</html> 

  清單 1 使用 HTML5 DTDecl,并在頂部聲明默認命名空間。本例中的 style 和 script 元素僅提供實際瀏覽器問題的解決方法。只有在使用其他 JavaScript 時才需要 script 元素。該文檔使用了大量新 HTML5 元素,我不會詳細介紹這些元素,因為它們不是 XML 特有的。注意,img 元素使用的是 “自閉合” 語法(換句話說,它以 /> 結束),版權符號使用的是數值實體形式 &#169;。

  可參閱 表 1 了解上述示例在不同瀏覽器中的行為概述。

表 1. 滿足本文建議的 XHTML5 的瀏覽器支持

瀏覽器 行為
舊版瀏覽器(例如,Internet Explorer 6.x 或更早版本、 Netscape、Firefox 1.x) 呈現將是不可預測的。例如,“自閉合” 元素的結束標記可能是錯誤的。如果您使用 HTML 命名實體則不會出現任何錯誤。
Internet Explorer 7 或 8 由于使用的是 text/html MIME 類型,因此呈現將是常規的 “標記雜燴”,但是任何 DTDecl 都將觸發 “標準模式”,比如 Internet Explorer 提供它。HTML 命名實體不會出現任何錯誤報告。
現代的、支持 HTML5 的瀏覽器,比如 Firefox 3.x、Safari 4 或最新的 Opera 或 Google Chrome 由于使用的是 MIME 類型,因此呈現將是 HTML5(而不是 XHTML5),但是會是在 “標準模式” 下。HTML 命名實體不會出現任何錯誤報告。
任何標準的 XML 1.x 處理器 將不會考慮 MIME 類型。解析器將會在 XHTML 命名空間看到所有元素。如果使用任何假的 HTML 命名實體,都會收到錯誤信息。


  結束語

  最近的一個重要情況是 W3C HTML 工作組發布了第一份公共工作草案 "Polyglot Markup: HTML-Compatible XHTML Documents",目的是提供有關 XHTML5 的更全面、準確和最新的消息。

  此外,對我來說,做出本文中的一些建議來說很痛苦。這些解決方法來自長期的痛苦體驗,并且在將 XML 混合進現實 HTML 世界時,這是避免難以重現的 bug 和奇怪的不兼容性的惟一方法。這當然不是說我已經停止了提倡仔細的 XML 設計和最佳實踐。最好將連接瀏覽器的最外面的組件保存為 XHTML5。所有類型的 XHTML 都能更好地呈現語言而不是攜帶信息的語言。您應該以其他 XML 格式傳輸大多數系統的主要信息。然后在最后將其轉換為 XHTML5。您可能會好奇在最后時刻創建 XHTML5 的意義,但是請記住 Postel 法則,它建議嚴格執行生成的內容。通過為瀏覽器生成 XHTML5,其他人會很容易從您的網站和應用程序中提取信息。在這個混搭、web API 和數據項目時代,這是一個重要特性。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了有關HTML5頁面在iPhoneX適配問題,需要的朋友可以參考下
本篇文章主要介紹了html5中canvas圖表實現柱狀圖的示例,本文使用canvas來實現一個圖表,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
Adobe公司出品的多媒體處理軟件產品線較多,涵蓋了音視頻編輯、圖像處理、平面設計、影視后期等領域。這篇文章主要介紹了Adobe Html5 Extension開發初體驗圖文教程,非常不錯,需要的朋
這篇文章主要介紹了基于HTML5的WebGL經典3D虛擬機房漫游動畫,需要的朋友可以參考下
這篇文章主要介紹了手機端用rem+scss做適配的詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
本篇文章主要介紹了canvas 實現 github404動態效果的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
主站蜘蛛池模板: 常州翔天实验仪器厂-恒温振荡器-台式恒温振荡器-微量血液离心机 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 中开泵,中开泵厂家,双吸中开泵-山东博二泵业有限公司 | 步进_伺服_行星减速机,微型直流电机,大功率直流电机-淄博冠意传动机械 | 济南侦探调查-济南调查取证-山东私家侦探-山东白豹调查咨询公司 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 磁力抛光研磨机_超声波清洗机厂家_去毛刺设备-中锐达数控 | 康明斯发电机,上柴柴油发电机,玉柴柴油发电机组_海南重康电力官网 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 包装机_厂家_价格-山东包装机有限公司 | 反渗透阻垢剂-缓蚀阻垢剂厂家-循环水处理药剂-山东鲁东环保科技有限公司 | 广东佛电电器有限公司|防雷开关|故障电弧断路器|智能量测断路器 广东西屋电气有限公司-广东西屋电气有限公司 | 刺绳_刀片刺网_刺丝滚笼_不锈钢刺绳生产厂家_安平县浩荣金属丝网制品有限公司-安平县浩荣金属丝网制品有限公司 | 卷筒电缆-拖链电缆-特种柔性扁平电缆定制厂家「上海缆胜」 | 干粉砂浆设备-干粉砂浆生产线-干混-石膏-保温砂浆设备生产线-腻子粉设备厂家-国恒机械 | 净化工程_无尘车间_无尘车间装修-广州科凌净化工程有限公司 | 土壤检测仪器_行星式球磨仪_土壤团粒分析仪厂家_山东莱恩德智能科技有限公司 | 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 27PR跨境电商导航 | 专注外贸跨境电商 | 金属检测机_金属分离器_检针验针机_食品药品金属检探测仪器-广东善安科技 | 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | 陕西高职单招-陕西高职分类考试网 | 办公室家具公司_办公家具品牌厂家_森拉堡办公家具【官网】 | 中式装修设计_室内中式装修_【云臻轩】中式设计机构 | 无锡网站建设-做网站-建网站-网页设计制作-阿凡达建站公司 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 脉冲除尘器,除尘器厂家-淄博机械 | 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 土壤养分检测仪_肥料养分检测仪_土壤水分检测仪-山东莱恩德仪器 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 棕刚玉-白刚玉厂家价格_巩义市东翔净水材料厂 | 医用空气消毒机-医用管路消毒机-工作服消毒柜-成都三康王 | 断桥铝破碎机_铝合金破碎机_废铁金属破碎机-河南鑫世昌机械制造有限公司 | 阜阳在线-阜阳综合门户 | 稳尚教育加盟-打造高考志愿填报平台_新高考志愿填报加盟_学业生涯规划加盟 | 金蝶帐无忧|云代账软件|智能财税软件|会计代账公司专用软件 | 全自动端子机|刺破式端子压接机|全自动双头沾锡机|全自动插胶壳端子机-东莞市傅氏兄弟机械设备有限公司 | 磷酸肌酸二钠盐,肌酐磷酰氯-沾化欣瑞康生物科技 | 宿舍管理系统_智慧园区系统_房屋/房产管理系统_公寓管理系统 | 锂电池砂磨机|石墨烯砂磨机|碳纳米管砂磨机-常州市奥能达机械设备有限公司 | 无味渗透剂,泡沫抑尘剂,烷基糖苷-威海威能化工有限公司 | 翻斗式矿车|固定式矿车|曲轨侧卸式矿车|梭式矿车|矿车配件-山东卓力矿车生产厂家 |