文檔對象模型
對於計算機程序,後台決定前台,而設計器的後台就是文檔對象模型。相信大家對文檔對象模型有所了解,我們在WEB頁面中使用JavaSCRIPT腳本時就是訪問了Html文檔對象模型,我們操作XML文檔就是訪問XML文檔對象模型。
W3C國際組織對文檔對象模型是這樣定義的(摘自 http://www.w3.org/DOM/ )
The Document Object Model is a platform- and language-neutral interface that will allow programs and scripts to dynamically Access and update the content, structure and style of documents. The document can be further processed and the results of that processing can be incorporated back into the presented page. This is an overvIEw of DOM-related materials here at W3C and around the web.
以我個人的英文水平翻譯如下:
文檔對象模型是一種語言中立的接口或平台,程序或腳本能利用它來訪問和更新結構化的文檔。這些文檔可以被進一步的處理,處理結果可以組成一個有效頁面。這是W3C對web上的對文檔對象模型原理的一般看法。
我個人認為,對於編程,文檔對象模型其主要內容就是,面對比較復雜的文檔,使用面向對象的編程思想,使用一個個程序世界中的對象來映射文檔中的每一個特定的部分。加載文檔時,可以解析文檔,並把其表示的內容映射為一個個對象,此時應用程序可以修改這些對象的數據,當保存文檔時,可以將這些對象數據組織起來按照特定的格式保存到文檔中。這樣程序就通過訪問文檔對象來訪問文檔,也可以修改文檔對象來修改文檔,如此實現了對復雜文檔的處理。文檔對象模型是處理復雜文檔的標准操作模式。
設計器處理的是復雜的文檔,因此也需要使用文檔對象模型。文檔對象模型可分為三大部分:文檔基本元素,文檔對象和各種類型的從文檔基本元素派生出的文檔元素。
文檔基本元素是整個文檔對象模型的最基礎的對象(就像Object類型是.Net對象集團的基礎一樣),它定義了文檔元素的通用接口,一般定義為抽象類,類型名稱可以為DesignElement 。
文檔對象是文檔對象模型的頂級對象,它包含了整個文檔的內容,其類型名稱可以為 DesignDocument 。
各種類型的文檔元素,它是派生自文檔基本元素類型,用於描述文檔中各種實際存在的元素。其中可以定義一種文檔元素,它們可以容納其他的文檔元素,這些元素就是容器元素。實際上文檔對象就是最大的容器元素。由於文檔對象模型中存在容器元素,因此所有的對象都組成一個樹狀結構,稱為文檔對象樹,其中根節點就是文檔對象。各種文檔元素是文檔對象模型的活躍分子,擴展文檔對象模型大部分工作就是擴展這些文檔元素,擴展文檔元素需要擴展它們的兩個功能,一個是文檔的加載和保存,一個就是文檔本身保存的數據。
文檔對象模型可以和用戶界面相關,也可以不相關,例如XML文檔對象模型是無用戶界面的。設計器的文檔對象模型是和用戶界面相關的,對此,擴展設計文檔對象模型的文檔元素時還需要擴展它們的繪制圖形的能力以便設計器能繪制新型的文檔元素圖形。
對於設計文檔對象模型,其文檔基礎元素可以定義的內容有三個方面,文檔的加載和保存,用戶界面相關的接口,維護文檔對象樹的接口。