您的位置:首页 > 服装鞋帽 > 休闲装 > 《 javascript高级程序设计》第六章 DOM基础

《 javascript高级程序设计》第六章 DOM基础

luyued 发布于 2011-04-11 07:17   浏览 N 次  

6.1 什么是DOM?

在开始详细介绍什么是DOM之前,你首先要了解是什么促使了它的诞生。尽管DOM很大程度上受到浏览器中动态HTML发展的影响,但W3C还是将它最先应用于XML。

6.1.1 XML简介

XML(可扩展标记语言)是从称为SGML(标准通用标记语言)的更加古老的语言派生出来的。SGML的主要目的是定义使用标签来表示数据的标记语言的语法。

XML去掉了之前令许多开发人员头疼的SGML的随意语法。

1任何的起始标签都必须有一个结束标签。

2可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如。XML解析器会将其翻译成

3标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如this is a sample string

4所有的特性都必须有值。

5所有的特性都必须在值的周围加上双引号。

xml的主要目的是使用文本以结构化的方式来表示数据。在某些方面,XML文件也类似于数据库,提供数据的结构化视图。

每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言

第二行代码,,则是文档元素(document element),它是文件中最外面的标签(我们认为元素(element)是起始标签和结束标签之间的内容)。

然后其中的具体内容就可能包括注释,处理指令,代码.

6.1.2 针对XML的API

将XML定义为一种语言之后,就出现了使用常见的编程语言(如Java)来同时表现和处理XML代码的需求。

首先出现的是Java上的SAX(Simple API for XML)项目。SAX提供了一个基于事件的XML解析的API。从其本质上来说,SAX解析器从文件的开头出发,从前向后解析,每当遇到起始标签或者结束标签、特性、文本或者其他的XML语法时,就会触发一个事件。然后,当事件发生时,具体要怎么做就由开发人员决定。

DOM是针对XML的基于树的API。它关注的不仅仅是解析XML代码,而是使用一系列互相关联的对象来表示这些代码,而这些对象可以被修改且无需重新解析代码就能直接访问它们。DOM是语言无关的API,他没有与某种语言绑定。

6.1.3 节点的层次

DOM定义了Node的接口以及许多种节点类型来表示XML节点的多个方面:

1Document——最顶层的节点,所有的其他节点都是附属于它的。

2DocumentType——DTD引用(使用语法)的对象表现形式,例如。它不能包含子节点。

3DocumentFragment——可以像Document一样来保存其他节点。

4Element——表示起始标签和结束标签之间的内容,例如或者。这是唯一可以同时包含特性和子节点的节点类型。

5Attr——代表一对特性名和特性值。这个节点类型不能包含子节点。

6 Text——代表XML文档中的在起始标签和结束标签之间,或者CData Section内包含的普通文本。这个节点类型不能包含子节点。

8CDataSection——的对象表现形式。这个节点类型仅能包含文本节点Text作为子节点。

9Entity——表示在DTD中的一个实体定义,例如。这个节点类型不能包含子节点。

10EntityReference——代表一个实体引用,例如"。这个节点类型不能包含子节点。

11ProcessingInstruction——代表一个PI。这个节点类型不能包含子节点。

12Comment——代表XML注释。这个节点类型不能包含子节点。

13Notation——代表在DTD中定义的记号。这个很少用到,所以在本书中不会讨论。

Node接口定义了对应不同节点类型的12个常量(它们会在即将讨论的nodeType特性中使用到):

1Node.ELEMENT_NODE (1)

2Node.ATTRIBUTE_NODE (2)

3Node.TEXT_NODE (3)

4Node.CDATA_SECTION_NODE (4)

5Node.ENTITY_REFERENCE_NODE (5)

6Node.ENTITY_NODE (6)

7Node.PROCESSING_INSTRUCTION_NODE (7)

8Node.COMMENT_NODE (8)

9Node.DOCUMENT_NODE (9)

10Node.DOCUMENT_TYPE_NODE (10)

11Node.DOCUMENT_FRAGMENT_NODE (11)

12Node.NOTATION_NODE (12)

Node接口也定义了一些所有节点类型都包含的特性和方法。我们在下面的表格中列出了这些特性和方法:

特性/方法

类型/返回类型

说明

nodeName

String

节点的名字;根据节点的类型而定义

nodeValue

String

节点的值;根据节点的类型而定义

nodeType

Number

节点的类型常量值之一

ownerDocument

Document

指向这个节点所属的文档

firstChild

Node

指向在childNodes列表中的第一个节点

lastChild

Node

指向在childNodes列表中的最后一个节点

childNodes

NodeList

所有子节点的列表

previousSibling

Node

指向前一个兄弟节点;如果这个节点就是第一个兄弟节点,那么该值为null

nextSibling

Node

指向后一个兄弟节点;如果这个节点就是最后一个兄弟节点,那么该值为null

hasChildNodes()

Boolean

当childNodes包含一个或多个节点时,返回真

attributes

NamedNodeMap

包含了代表一个元素的特性的Attr对象;仅用于Element节点

appendChild(node)

Node

node添加到childNodes的末尾

removeChild(node)

图文资讯
广告赞助商