DOM概览

作者:常明 来源:- 添加时间:2006-5-21 9:52:24
 DOM另外又是一个接口,一个与语言无关的接口,应用通过这个接口来和XML或HTML内的数据打交道。无论是在浏览器里,还是在浏览器外,在服务器上,还是客户端,我们只要用XML就会碰到DOM。

  1. DOM的来由

  为什么要定义这样一个接口呢?这样讲吧,我们知道数据库有标准的ODBC/JDBC这样的接口规范,那么我们使用XML数据如果没有一个统一的接口,我们写程序是不是要每个人都要自己去处理XML的语法细节,如果我们手头有XML的语法分析器(有人译为解析器),它也必然有一个接口让我们通过它访问XML数据,所有语法分析器的接口如果都不相同,我们开发就必须针对某一个分析器,如果换了分析器,程序就必须重写。到这里,又和数据库有可比性了,我们编数据库应用可以不管后面的数据库系统究竟是ORACLE还是SYBASE,或INFORMIX,是因为有了ODBC,所以要是我们做XML应用开发,就应该有一个统一的XML数据接口,这个接口就是DOM。

  2. DOM的三部分

  目前的DOM分为核心(core)、HTML、XML三部分。
  核心:
  这部分是结构化文档比较底层的对象的集合,但他们就已经可以表达出任何HTML和XML文件了。
  HTML和XML
  这两部分是专为XML和HTML提供的另外的高级接口,使操纵者两类文件更方便。98年的只有HTML部分。

  3.DOM组成

  这里有Vance Christiaanse给出的DOM的一个整体的图,可以使大家有一个DOM模型基本组成的概念。要看此图请点这里(比较大哦)。

  4 文件树

  DOM中的最基本对象应该就是Node了。从它又派生出许多类型的node。所有这些node组成一棵文件树,它包含了XML或HTML文档的几乎全部信息。
  在结构化文档中,信息是按层次化的树形结构组织的。所以结构化文档的模型的组织也必然是树形的。
  如一本书的组成是
  书----标题
    |
    ---正文---第一章-----第一节---段
       |
       --第二章.....
  Node简单的说,就是上面树形结构中的节点,但对XML来说还包括其他XML语法相关的节点,包括XML声明,文件类型声明,处理指令等等。
  Node提供一些基本属性和操作,各种类型的Node则继承Node的属性和操作,同时有各自特殊的属性和操作。比如ElementNode

  5 基本对象

  上面已经讲了DOM中最基本的对象就是节点,它的接口定义如下:
  从NODE派生出的几个比较重要的节点类型有Document Element, Attribute,Text:
  Document是DOM树的根,它代表一个完整的XML文档。它会有一些自己的子节点,至少应该有一个文档元素的子节点,这个节点类型为Element,是XML文件最外层的根元素,此外他还可能有DocumentType(唯一),ProcessingInstruction,Comment这几种作为子节点。
  Element代表XML元素,是最常用的节点,它可以组成以它为根的DOM的子树。他还可以有Element子节点,以及Attribut,Text,ProcessingInstruction,CDATASection,Comment子节点。
  Attribute是XML元素的属性,它的父节点必然是Element,它的子节点有Text和EntityReference。
  除了Node,DOM里还有两个比较重要的对象:
  NodeList它实现的一个节点的序列,用于表示有顺序关系的一组节点,比如某个节点的孩子节点序列,它还出现在一些方法的返回值中,例如GetNodeByName。
  NamedNodeMap它表示的是一组节点和其唯一的名字的对应关系,这个对象主要用在属性节点的表示上。

  6 DOM的版本

  目前的DOM level one是W3C1998年8月18日通过的,现在w3c正在进行DOM2的制定。
  DOM2我们将在以后的文章中介绍。

  7 编程

  DOM 的具体使用和编程不是很难,现在DOM的实现主要是以部件的形式提供比如MSXML,和JAVA实现比如XML4J。这两种实现,对我们使用它的接口来说,大同小异,但许多实现都加了自己的扩展的接口,这也是我们选择时考虑比较多的。
  DOM接口的具体的使用,我会在相关的文章中讨论。(完)

上一篇:XML初级应用ABC
下一篇:XML常见问题
站内搜索