大話HTML DOM與XML DOM的區(qū)別與聯(lián)系
來源:易賢網(wǎng) 閱讀:640 次 日期:2014-12-19 11:52:02
溫馨提示:易賢網(wǎng)小編為您整理了“大話HTML DOM與XML DOM的區(qū)別與聯(lián)系”,方便廣大網(wǎng)友查閱!

本文內(nèi)容的主題便是,為什么開發(fā)者要認(rèn)為“DOM Level 1規(guī)范的架構(gòu)”是至關(guān)重要的,其突出的重要性在哪里等等,以及還有HTML DOM和XML DOM之間微妙的區(qū)別及內(nèi)在的聯(lián)系。

W3C所制訂的DOM Level分為兩大模塊:Core和HTML。第一個大模塊是Core核心,W3C規(guī)范是這樣描述Core的:滿足軟件開發(fā)者和Web腳本編寫者,訪問和操控產(chǎn)品項目中包含的可解析的HTML和XML內(nèi)容。

第二個HTML模塊,規(guī)范描述為:HTML之中特定元素的功能,和恰到好處的、易用的、針對常見性任務(wù)的HTML文檔操作機制。

以上可見兩者的重要性。同時HTML模塊的意義也在于,解決了向后兼容的問題,這在當(dāng)今符合DOM Level 1的瀏覽器中已經(jīng)可以提供適應(yīng)的解決方案。

按照這樣的說法,如果您仍然不能理解上述的要義,我們則可以這樣認(rèn)為,HTML文檔可以使用Core API和HTML API兩者;而XML文檔只能使用Core API。換句話說,HTML與XML重疊的部分有Core API,而HTML API則是不能共享的部分,顧名思義限于HTML文檔所使用。這是我們認(rèn)識Core/HTML的初步認(rèn)識。

理解DOM Level 1 Core

理解DOM Level 1 Core之要義實質(zhì)在于將Core看待成為許多節(jié)點(Nodes)而組成的文檔(Document),也就是說,此文檔結(jié)構(gòu)中可允許存在著大量的條目項,其每一項都可理解為“節(jié)點”。討論該結(jié)構(gòu)可以以兩個方面入手:一、一切皆是節(jié)點對象(Node Object,扁平化的角度去理解,flattened view,乃適合于多態(tài)下的接口);二、每個對象繼承于基類節(jié)點,實現(xiàn)了節(jié)點的接口(interface,OO繼承的角度去理解)。請觀察一下這段HTML:

view plaincopy to clipboardprint?

<div id="myDiv">Hello World</div>

<div id="myDiv">Hello World</div>

這是一個閉合的div標(biāo)簽。從DOM Level 1的層面來分析可以有以下幾點內(nèi)容:

◆標(biāo)簽div可作為“節(jié)點對象Node Object(扁平化角度,前面已述)”,或者元素對象Element OBject(繼承的角度 - 元素繼承于Node)。

◆節(jié)點屬性id也可作為“節(jié)點對象Node Object(扁平化角度)”,或者屬性對象Attr. OBject(繼承的角度 - Attr繼承于Node)。

◆文本“Hello world”也可作為“節(jié)點對象Node Object(扁平化角度)”,字符串對象CharacterData對象(繼承的角度 - CharacterData繼承于Node),Text文本對象(繼承的角度 - Text繼承于CharacterData)。

稍微歸納一下,就是DOM 1 Core部分中一切皆是節(jié)點,節(jié)點以及其接口都可實現(xiàn)在每個對象身上(從繼承的角度理解出發(fā)),實現(xiàn)了節(jié)點接口才可以有節(jié)點的屬性、方法?!@是我們理解的前提。然后,根據(jù)特定的節(jié)點類型的不同,其接口的屬性和方法都是不同的,視乎DOM對該節(jié)點的設(shè)計而定。

理解DOM Level 1 HTML

我們?nèi)粘9ぷ鞯臅r候,跟HTML文檔打交道,其實就是屬于W3C所規(guī)定的DOM Level 1 HTML模塊內(nèi)的處理工作。HTML DOM的特性和方法不是標(biāo)準(zhǔn)的DOM實現(xiàn),是專門針對HTML同時也讓一些DOM操作變的更加簡便。HTML模塊集中表現(xiàn)在HTMLElement接口上,即為全體元素類型的對象所實現(xiàn)的接口。就該文討論的范圍而言,HTMLElement接口的參與形式與上述的 Node節(jié)點接口非常地相似。一旦引入了OO設(shè)計觀,只要實現(xiàn)了HTMLElement接口的對象,就可以定義它為元素了。一份HTML文檔有相當(dāng)多的都是元素,當(dāng)然還有,表示文檔本身的HTMLDocument和集合容器HTMLCollection等等。

因此,要準(zhǔn)確理解DOM 1 HTML的模塊,必須認(rèn)識其接口是基于元素的(Element-based),而不是基于節(jié)點的(Node-based)。那樣的話,元素方式與節(jié)點方式到底又有什么區(qū)別呢(Element v.s Node),應(yīng)該如何界定兩者呢?例如節(jié)點屬性(properties of elements),當(dāng)在“基于元素”的語境中,就是“屬性(attributes)”,并非獨立的節(jié)點對象。——盡管按照某個角度講,元素是節(jié)點的一種特例,我們?nèi)钥杀A簟肮?jié)點”這一說法,一個標(biāo)簽(tag)便是一個 “節(jié)點”。假如我們要得到id屬性的字符串的值是什么,采用DOM 1 Core的方式就是:

view plaincopy to clipboardprint?

myElement.attributes["id"].value; // 從Node接口提供的屬性

myElement.attributes["id"].value; // 從Node接口提供的屬性

等于下面的方法:

view plaincopy to clipboardprint?

myElement.getAttributes("id"); // 從Element實現(xiàn)的方法返回

myElement.getAttributes("id"); // 從Element實現(xiàn)的方法返回

但使用DOM 1 HTML方式的話,我們僅僅如此:

view plaincopy to clipboardprint?

myElement.id;

myElement.id;

這般就可以獲取id了。此時此刻,你可能會認(rèn)為,XML文檔本身就不一定缺省有id的屬性,而因為有你所說的HTMLElement.id屬性預(yù)先定義在API中,當(dāng)然HTML中的每個元素就有id的屬性啦——這里的意思沒有錯,也不妨礙我們的理解。的確全體的HTML元素均有id一項的屬性,不管HTMLDivElement\HTMLImageElement\……

Core or HTML Module?

既然這樣,那我應(yīng)該使用Core的API,還是HTML模塊的API?對于HTML的文檔來說,用Core或HTML Moduel實際差別不大。本來我們一直都不太強調(diào)這種界定,以致忽略了它們細(xì)微的差異。如果我們覺得還是模棱兩可的話,我們可進(jìn)一步查探它們的明細(xì)。個人認(rèn)為處理XHTML并使用Core API這樣更能夠說明XHTML的“X”,即表明這份HTML就是一份標(biāo)準(zhǔn)的XML文檔,以便與原有HTML 4.1從語義上區(qū)別開來。但請記住,當(dāng)處理一份XML結(jié)構(gòu)的文檔的時候,自然而然就是采用Core去處理。通過XHMLHttpRequest請求執(zhí)行后所返回的responseXML結(jié)果,只能使用Core的API去處理分析,就不能夠采用HTML的了。

小結(jié)

通過文本開發(fā)者應(yīng)該明白到,HTML DOM與XML DOM之間,既有區(qū)別,又有聯(lián)系。一般而言,除了上述比較外,須值得一提的就是,HTML是可以允許不Well-Form的,XML就不行。

更多信息請查看IT技術(shù)專欄

更多信息請查看網(wǎng)頁制作
易賢網(wǎng)手機網(wǎng)站地址:大話HTML DOM與XML DOM的區(qū)別與聯(lián)系
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報警專用圖標(biāo)