《 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可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如
4所有的特性都必须有值。
5所有的特性都必须在值的周围加上双引号。
xml的主要目的是使用文本以结构化的方式来表示数据。在某些方面,XML文件也类似于数据库,提供数据的结构化视图。
每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言,。
第二行代码,
然后其中的具体内容就可能包括注释,处理指令,代码.
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)
- 07-01· 埃古RI&G:中国第三代休闲
- 07-01· 潇洒男士 Perry Ellis闲适生
- 07-01· 全明星阵容点亮CFDA颁奖红
- 07-01· 第十届中国休闲服装博览
- 07-01· tough jeans挎包 - 淘宝网商城
- 07-01· 钱包英语英文T开头的钱包
- 07-01· Toughjeans-散发着青春的活力
- 07-01· 平湖服装以“外”养“内
- 07-01· 护理液 海昌隐形眼镜护理
- 07-01· 潮流趋势 Red Carter 08春夏迈
- 07-01· 【中国服装面料行业投资
- 07-01· [转载]少年户外-2009中国户
- 07-01· 衡阳4s 衡阳nokia5320 nokia5
- 07-01· 挽春踏青 欢享夏风组图
- 07-01· Linux的硬链接(Hard Link)与
- 07-01· 共享精美边框和代码
- 07-01· Skyscraper Annual 航模比赛_
- 07-01· 小池一夫天涯孤客日文版
- 07-01· 绿竹与青萝
- 07-01· 四川水田惊现2亿年前生物