第Ⅰ部分 W3C文档对象模型概述 1
第1章 DOM简介 1
1.1 DOM的定义 1
1.2 DOM的基本原理 2
1.2.1 设计原理 3
1.2.2 面向对象和DOM接口的平面视图 3
1.3 DOM的发展 3
1.3.1 客户端上的DOM 4
1.3.2 服务器上的DOM 4
1.4 DOM的层 4
1.4.1 Level 1 5
1.4.2 Level 2 5
1.5 DOM规范中使用的约定 6
1.4.3 Level 3 6
1.6 DOM不是什么 8
1.7 小结 8
第2章 DOM表示结构化文档的方式 9
2.1 基本的DOM数据类型 9
2.1.1 DOMString类型 9
2.1.2 DOMTimeStamp类型 10
2.1.3 处理错误:DOMException接口 10
2.2 文档树结构 10
2.3 DOM节点类型 12
2.4 基础的Core DOM接口 13
2.4.1 DOMException代码 14
2.4.2 DOM Node接口 15
2.4.3 节点辅助程序接口:NodeList和NamedNodeMap 18
2.4.4 DOMImplementation接口 20
2.4.5 Document接口 21
2.4.6 DocumentFragment接口 23
2.4.7 Element接口 23
2.4.8 Attr接口 26
2.4.9 CharacterData接口 26
2.4.10 Comment接口 27
2.4.11 Text接口 28
2.5 Extended Core接口 28
2.5.1 CDATASection接口 28
2.5.2 DocumentType接口 29
2.5.3 Notation接口 29
2.5.5 EntityReference接口 30
2.5.6 ProcessingInstruction接口 30
2.5.4 实体接口 30
2.6 小结 31
第3章 导航和处理结构化文档 32
3.1 处理节点 32
3.1.1 命名空间 33
3.1.2 获得对节点的对象引用 33
3.1.3 检查节点 34
3.1.4 处理节点 37
3.1.5 创建新节点 41
3.1.6 从其他文档中导入节点 43
3.2 遍历文档 45
3.2.1 使用Node接口属性 45
3.2.2 使用DOM Level 2 Traversal模块 46
3.3 小结 58
4.2 基本的节点遍历算法 59
4.1 DOM算法 59
第Ⅱ部分 实际操作中的DOM 59
第4章 算法 59
4.3 基于位置的算法 61
4.3.1 确定节点是否具有一种给定类型的祖先节点 61
4.3.2 确定节点是否具有给定类型的兄弟节点 63
4.4 基于内容的算法 63
4.4.1 确定一个节点是否包含另一个节点 63
4.4.2 更好的Node接口版本:按照类型检索相关节点 65
4.4.3 按照属性值寻找节点 66
4.5 小结 68
第5章 浏览器 69
5.1 主要浏览器中的DOM支持 69
5.1.3 Opera 6 70
5.2 在浏览器环境中使用DOM 70
5.1.2 Netscape Navigator 6.x 70
5.1.1 Microsoft Internet Explorer 6 70
5.2.1 获得对文档的引用 71
5.2.2 检查页面的结构和内容 72
5.2.3 创建和修改页面元素 75
5.2.4 使用DOM Level 2 Events接口处理事件 80
5.3 Internet Explorer的特有方法和属性 89
5.3.1 Internet Explorer的特有属性 89
5.3.2 Internet Explorer特有的方法 90
5.4 浏览器特别之处 91
5.4.1 Internet Explorer 91
5.4.2 Netscape Navigator 91
5.5 小结 92
6.1 DOM实现不仅限于浏览器 93
6.2 独立的DOM实现和嵌入式DOM实现 93
第6章 应用程序 93
6.3 Apache Xerces分析程序 94
6.3.1 怎样获取Xerces 94
6.3.2 安装Xerces 95
6.3.3 逐步了解API 97
6.3.4 使用Xerces 98
6.3.5 如何获取Xerces的更多信息 107
6.4 Microsoft MSXML分析程序 107
6.4.1 如何获取MSXML 4 107
6.4.2 安装MSXML 4 107
6.4.3 逐步了解API 107
6.4.4 使用MSXML 4 108
6.4.5 如何获取关于MSXML的更多信息 112
6.5.2 Dreamweaver中的DOM 113
6.5.3 逐步了解API 113
6.5.1 如何获取Dreamweaver 113
6.5 Macromedia Dreamweaver 113
6.5.4 使用Dreamweaver DOM 115
6.5.5 如何获取Dreamweaver DOM的更多信息 119
6.6 小结 119
第7章 调试DOM应用程序 120
7.1 良好的调试技术的重要性 120
7.2 保持自信:使用Assert()方法 121
7.2.1 定义ASSERT()方法 121
7.2.2 有效地使用ASSERT()宏 122
7.2.3 充满想象地运用ASSERT() 125
7.3 TraceConsole的使用 127
7.3.1 使用TraceConsole 128
7.3.2 TraceConsole函数 129
7.4.1 DOMDumper输出结果 138
7.4 DOMDumper 138
7.4.2 DOMDumper代码 139
7.4.3 使用DOMDumper 143
7.5 小结 144
第Ⅲ部分 DOM的实际应用 146
第8章 提供自动文档定位 146
8.1 使用DOM提供更好的文档定位 146
8.2 示例:动态书签 147
8.2.1 设置 150
8.2.2 创建用户界面元素 150
8.2.3 建立书签列表 151
8.2.4 把书签列表插入文档 152
8.2.5 响应用户的书签选择 152
8.3 示例:自动生成目录 153
8.3.2 扫描文档的节点 156
8.3.1 设置 156
8.3.3 建立TOC目标 157
8.3.4 添加TOC条目 158
8.4 示例:文档占位符 159
8.4.1 设置 161
8.4.2 处理单击事件 162
8.4.3 发现包含段落节点 163
8.5 小结 163
第9章 动态用户界面 164
9.1 用DOM创建动态用户界面 164
9.2 创建一个颜色拾取器 164
9.3 现场列表编辑 171
9.4 基于DOM的弹出式菜单 177
9.5 小结 183
10.2 客户端排序 184
第10章 数据驱动型文档的客户端处理 184
10.1 在客户端处理数据驱动型文档 184
10.2.1 对列表进行排序 185
10.2.2 对表进行排序 189
10.3 服务器端生成文档的后处理 195
10.4 处理Web页面中的嵌入式XML数据 199
10.4.1 Internet Explorer中的数据岛 200
10.4.2 Netscape Navigator中的数据岛 203
10.5 示例:Joe s Café Menu应用程序 205
10.5.1 菜单页面 205
10.5.2 菜单的XML代码 207
10.5.3 生成菜单的HTML文档 209
10.5.4 处理用户交互 216
10.6 小结 220
11.1 DOM的发展方向 221
第11章 DOM未来的发展方向 221
11.2 DOM Level 3中已被提议的修改 222
11.2.1 一般性修改 222
11.2.2 抽象模式支持 225
11.2.3 错误处理 225
11.2.4 加载和保存DOM文档 226
11.2.5 把应用程序指定的数据添加给节点 229
11.2.6 判断节点的相对文档位置 231
11.2.7 对XPath的支持 232
11.3 DOM有待增强的其他功能 238
11.3.1 DOM对XSLT的支持 238
11.3.2 面向事务的处理 243
11.4 小结 245
A.2 Attr接口 246
附录A DOM Core Leve 1 API参考 246
A.1 DOM接口继承树 246
A.2.1 属性 247
A.2.2 方法 247
A.3 CDATA接口 247
A.3.1 属性 247
A.3.2 方法 247
A.4 CharacterData接口 247
A.4.1 属性 248
A.4.2 方法 248
A.5.2 方法 250
A.6 Document接口 250
A.6.1 属性 250
A.5.1 属性 250
A.5 Comment接口 250
A.6.2 方法 251
A.7 DocumentFragment接口 253
A.7.1 属性 253
A.7.2 方法 254
A.8 DocumentType接口 254
A.8.1 属性 254
A.8.2 方法 254
A.9 DOMImplementation接口 254
A.9.1 属性 255
A.9.2 方法 255
A.10 DOMException接口 255
A.10.1 常量 255
A.10.2 属性 255
A.11.2 方法 256
A.11.1 属性 256
A.10.3 方法 256
A.11 Element接口 256
A.12 Entity接口 258
A.12.1 属性 258
A.12.2 方法 259
A.13 EntityReference接口 259
A.13.1 属性 259
A.13.2 方法 259
A.14 NamedNodeMap接口 259
A.14.1 属性 259
A.14.2 方法 260
A.15.1 常量 261
A.15.2 属性 261
A.15 Node接口 261
A.15.3 方法 263
A.16 NodeList接口 265
A.16.1 属性 265
A.16.2 方法 265
A.17 Notation接口 266
A.17.1 属性 266
A.17.2 方法 266
A.18 ProcessingInstruction接口 266
A.18.1 属性 266
A.18.2 方法 267
A.19 Text接口 267
A.19.1 属性 267
A.19.2 方法 267