acerbic coffee
          走自己的路,讓別人跑步
          posts - 26,comments - 14,trackbacks - 0

          文件對象模型(Document Object Model,DOM)是給 HTML 與 XML 文件使用的一組 API。它提供了文件的結(jié)構(gòu)表述(representation),讓你可以更動其中的內(nèi)容及可見物。其本質(zhì)是建立網(wǎng)頁與 Script 或程序語言溝通的橋梁。

          所有網(wǎng)頁設計師可操作及建立文件的屬性、方法及事件都以[對象]來展現(xiàn)(例如,document 就代表「文件本身」這個對象,table 對象則代表 HTML 的表格對象等等)。這些對象可以由當今大多數(shù)的瀏覽器以 Script 來取用。

          DOM 最常被用以[與 JavaScript 溝通],也就是說雖然程序以 JavaScript? 寫成,但使用 DOM 來存取頁面及其元素。無論如何,DOM 本身是設計為一種獨立的程序語言,以一致的 API 存取文件的結(jié)構(gòu)表述;是以雖然本站的焦點放在 JavaScript? 上,但 DOM 其實可以與[任何程序語言]共同運作。

          [全球信息網(wǎng)協(xié)會](World Wide Web Consortium,W3C)建立了 [DOM] 的標準,稱之為「W3C DOM」。在當今主要瀏覽器都已正確實作的情況下,W3C DOM 使強大、跨瀏覽器的應用程序成真。這是眾網(wǎng)頁設計師在 Netscape 4 與 MSIE 多不相容的時代從未夢想過的事情。

          DOM的結(jié)構(gòu):

            ??在DOM 中,我們將代表XML 文件的程序設計對象,稱為節(jié)點(nodes)。當Internet Explorer 5 處理被鏈接的XML 文件并儲存于DOM 中時,它會為XML 文件的每一個基本組件建立一個節(jié)點。這些基本組件包括了元素、屬性,與處理指令DOM 會使用不同形態(tài)的節(jié)點來代表不同形態(tài)的XML 組件。例如,元素是儲存在Element 節(jié)點中,而屬性則是儲存在Attribute 節(jié)點中。表格1 列出了這些節(jié)點類型最重要的部分。

          節(jié)點形態(tài)

          節(jié)點對象所代表的XML文件組件

          節(jié)點名稱(nodeName 對象屬性)

          節(jié)點的值(nodeValue 對象屬性)

          文件(Document)

          文件階層中的根節(jié)點(代表整個XML 文件)

          #document

          Null

          元素(Element)

          元素

          元素形態(tài)名稱(例如,BOOK)

          null(包含在元素中的(Element)任何字符數(shù)據(jù),是位在一個或多個子文字節(jié)點中)

          文字(Text)

          屬于由這個節(jié)點的父節(jié)點所代表的元素,屬性及實體的文字。

          #text

          父XML 組件的文字

          屬性(Attribute)

          屬性 (以及其它的名值對,像處理指令中的名字與值)

          屬性名稱 (如Binding)

          屬性值(例如hardcover)

          處理指令 (Processing Instruction )

          處理指令(XML 宣告或自訂的處理指令)

          處理指令的目標(例如xml)

          除了目標之外整個處理指令的內(nèi)容(例如,Version "1.0")

          批注(Comment)

          批注

          #comment

          在批注符號中的文字

          CDATA 區(qū)段(CDATASection)

          CDATA 區(qū)段

          #cdata-section

          CDATA 區(qū)段中的內(nèi)容

          文件類型(Document
          Type)

          文件形態(tài)宣告

          出現(xiàn)在DOCTYPE 宣告中的根元素的名字(例如INVENTORY)

          Null

          實體(Entity)

          DTD 中的實體宣告

          實體名稱(例如image)

          null (實體值是位在子文字節(jié)點中)

          標簽

          DTD 中的標簽宣告

          標簽名稱(例如BMP)

          >null (卷標的系統(tǒng)literal(Notation)是位在名為SYSTEM 的 子Attribute node中)


          上表中用來表示不同XML 文件組件的基本節(jié)點形態(tài)。這些類型的每一個節(jié)點都是一個程序設計對象,提供了存取相關(guān)組件的屬性與方法。
          ????你可以從節(jié)點中的nodeName 屬性獲得每個節(jié)點的名稱(詳列于表格9-1 中的第三欄)。這個名稱是以字符#起始,代表那些未在文件中命名的XML 組件節(jié)點的標準名稱。(例如,在XML文件中的批注并未命名。因此,DOM 將使用標準名稱#comment。)其它節(jié)點的名稱則是由指定到XML 文件中相對應組件的名稱衍生而來。(例如,代表形態(tài)BOOK 元素的元素節(jié)點也可以命名為BOOK。)

          ????你可以從節(jié)點的 nodeValue 屬性取得每個節(jié)點的節(jié)點值(列于表格9-1 中最后一欄)。如果XML組件擁有一個相關(guān)的值(例如,屬性),該值將會被儲存于節(jié)點的節(jié)點值中。如果XML 組件并沒有節(jié)點值(例如,元素),則DOM 將會把節(jié)點值設成null。在本章稍后,你將學到更多有關(guān)列于表格9.1 中各種節(jié)點類型的相關(guān)知識。

          ????DOM 會將XML 文件的節(jié)點建構(gòu)成樹狀的階層結(jié)構(gòu),反映出XML 文件本身的階層結(jié)構(gòu)。DOM將會建立一個單一文件節(jié)點來表示整個XML 文件,并將其視為階層結(jié)構(gòu)的根節(jié)點。注意,XML元素的邏輯階層結(jié)構(gòu),包含了整個XML 文件,結(jié)構(gòu)中的根節(jié)點,只是DOM 節(jié)點的階層結(jié)構(gòu)的一個分枝。

          每個節(jié)點,就像可程序化的對象,提供了屬性和方法,讓你可以存取、顯示、管理,和取得對應到XML 組件上的信息。例如,nodeName 和nodeValue 屬性(表1 所示)提供了元素的名稱及內(nèi)含值。

          ????所有形態(tài)的節(jié)點共同分享一組公共的屬性與方法。這些屬性與方法一般是設計來偕同節(jié)點一起運作。表格2 列出了一些比較有用的共同屬性。在本章稍后你將獲得有關(guān)這些屬性的更多信息及范例。

            

          屬性

          描述

          范例

          attributes

          該節(jié)點的所有非屬性的子節(jié)點的NamedNodeMap 集合

          AttributeNode =Element.attributes.getNamedItem ("Binding");

          childNodes

          該節(jié)點的所有非屬性的子節(jié)點的NodeList 集合

          FirstNode =Element.childNodes (0);

          dataType

          該節(jié)點的數(shù)據(jù)類型(只適用于某些類型Attribute 節(jié)點)

          AttributeType =Attribute.dataType;

          firstChild

          該節(jié)點的第一個非屬性的子節(jié)點

          FirstChildNode =Element.firstChild;

          lastChild

          該節(jié)點的最后一個非屬性的子節(jié)點

          LastChildNode =Element.lastChild;

          nextSibling

          與本節(jié)點位于同一層級的后繼前一節(jié)點

          NextElement =Element.nextSibling;

          nodeName

          節(jié)點的名稱

          ElementName =Element.nodeName;

          nodeType

          表示該節(jié)點類型的數(shù)值碼

          NodeTypeCode =Node.nodeType;

          nodeTypeString

          包含該節(jié)點類型的字符串,以小寫字母撰寫(例如,"element"或"attribute")

          NodeTypeString=Node.nodeTypeString;

          nodeValue

          該節(jié)點的值(如果不含值則為null)

          AttributeValue =Attribute.nodeValue;

          ownerDocument

          包含本節(jié)點的文件的根Document 節(jié)點

          Document =Node.ownerDocument;

          parentNode

          該節(jié)點的父節(jié)點(并不適用于Attribute 節(jié)點)

          ParentElement =Element.parentNode;

          previousSibling

          與本節(jié)點位于同一層級的先前節(jié)點

          PreviousElement =Element.previousSibling;

          text

          該節(jié)點與其后裔節(jié)點的全部文字內(nèi)容

          AllCharacterData =Element.text;

          xml

          該節(jié)點與其后裔節(jié)點的全部XML 內(nèi)容

          XMLContent =Element.xml;


          posted on 2006-11-18 13:06 acerbic coffee 閱讀(803) 評論(1)  編輯  收藏 所屬分類: articles

          FeedBack:
          # re: dom介紹[未登錄]
          2008-12-17 17:15 | aa
          如果能詳細點就會更好
            回復  更多評論
            
          主站蜘蛛池模板: 昌乐县| 旌德县| 玉山县| 长葛市| 林芝县| 云阳县| 同德县| 彩票| 丹寨县| 江北区| 视频| 施甸县| 黄石市| 台山市| 遂川县| 禹州市| 阳泉市| 贵德县| 玉环县| 白山市| 嘉峪关市| 墨脱县| 新昌县| 佛学| 安远县| 三台县| 增城市| 民勤县| 永丰县| 阳信县| 资中县| 噶尔县| 西畴县| 都兰县| 呼伦贝尔市| 两当县| 前郭尔| 林西县| 锦屏县| 黄山市| 汉沽区|