DOM是什麼

轉載自http://www.cnblogs.com/chaogex/p/3959723.html

只看懂了三分之一!!


前言

本文試圖弄清楚DOM到底是什麼,不會討論具體DOM節點的操作。

DOM是什麼

DOM全稱爲The Document Object Model,應該理解爲是一個規範,定義了HTML和XML文檔的邏輯結構和文檔操作的編程接口。

文檔邏輯結構

DOM實際上是以面向對象方式描述的對象模型,它將文檔建模爲一個個對象,以樹狀的結構組織(本文稱之爲“文檔樹”,樹中的對象稱爲“節點”)。
每個文檔包含1個document節點,0個或1個doctype節點以及0個或多個元素節點等。document節點是文檔樹的根節點。
如對於HTML文檔,DOM 是這樣規定的:

  • 整個文檔是一個文檔節點
  • 每個 HTML 標籤是一個元素節點
  • 包含在 HTML 元素中的文本是文本節點
  • 每一個 HTML 屬性是一個屬性節點
  • 註釋屬於註釋節點

節點與文檔內容是一一對應的關係,節點之間有層次關係。

例如下面的hmlt文檔:

<!DOCTYPE html>
<html>
<head>
    <title>文檔標題</title>
</head>
<body>
<a href="">我的鏈接</a>
<h1>我的標題</h1>
</body>
</html>

會被建模爲下面的文檔樹:

又如下面的html文檔:

<!DOCTYPE html>
<html class=e>
 <head><title>Aliens?</title></head>
 <body>Why yes.</body>
</html>

會被建模爲下面的文檔樹:

文檔操作

程序員可以使用DOM定義的接口來獲得對文檔中所有元素進行訪問的入口,創建文檔,瀏覽文檔結構,添加、修改或刪除文檔元素和內容。
HTML或XML文檔中的所有的內容都可以通過使用DOM定義的接口來操作。

DOM到底是對象模型還是編程接口?

總的來說,DOM應該理解爲是1個規範。
站在實現(如瀏覽器)和使用者(如程序員)的角度來看,DOM就是一套文檔節點的編程接口,只要實現了接口,就可以使用接口成員來操作文檔;站在設計和制定的角度來看,DOM是一個對象模型,它將文檔內容建模爲對象並組織爲樹狀結構,定義了這些對象的行爲和屬性以及這些對象之間的關係。

DOM不是什麼

  • DOM不是一個數據結構集,並沒有定義數據結構。
  • DOM沒有定義文檔中什麼信息是相關的或者文檔中的信息是如何組織的。

如對於XML,這些是在XML Information Set中指定的。DOM只是這些信息集的API。

鑑於水平有限,w3c資料中我沒有理解的部分此處沒有給出,詳細內容可參考What is the Document Object Model -> What the Document Object Model is not

DOM的分級

上面討論的DOM是1級DOM,具體就是 DOM CORE和DOM HTML,它將HTML和XML文檔映射爲對由層次對象(節點)組成的樹。
根據W3C DOM規範,DOM有1級、2級、3級以及最新的4級,本文只討論前3級DOM。

1級DOM

1級DOM在1998年10月份成爲W3C的提議,由DOM CORE與DOM HTML兩個模塊組成。DOM CORE能映射以XML爲基礎的文檔結構,允許獲取和操作文檔的任意部分。DOM HTML通過添加HTML專用的對象與函數對DOM核心進行了擴展。

2級DOM

鑑於1級DOM僅以映射文檔結構爲目標,DOM 2級面向更爲寬廣。通過對原有DOM的擴展,2級DOM通過對象接口增加了對鼠標和用戶界面事件(DHTML長期支持鼠標與用戶界面事件)、範圍、遍歷(重複執行DOM文檔)和層疊樣式表(CSS)的支持。同時也對DOM 1的核心進行了擴展,從而可支持XML命名空間。
2級DOM引進了幾個新DOM模塊來處理新的接口類型:
DOM視圖:描述跟蹤一個文檔的各種視圖(使用CSS樣式設計文檔前後)的接口;
DOM事件:描述事件接口;
DOM樣式:描述處理基於CSS樣式的接口;
DOM遍歷與範圍:描述遍歷和操作文檔樹的接口;

3級DOM

3級DOM通過引入統一方式載入和保存文檔和文檔驗證方法對DOM進行進一步擴展,DOM3包含一個名爲“DOM載入與保存”的新模塊,DOM核心擴展後可支持XML1.0的所有內容,包擴XML Infoset、 XPath、和XML Base。

"0級"DOM

當閱讀與DOM有關的材料時,可能會遇到參考0級DOM的情況。需要注意的是並沒有標準被稱爲0級DOM,它僅是DOM歷史上一個參考點(0級DOM被認爲是在Internet Explorer 4.0 與Netscape Navigator4.0支持的最早的DHTML)。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章