《XML开发典型应用:数据标记、处理、共享与分析》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:张朝明等编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2008
  • ISBN:9787121053696
  • 页数:545 页
图书介绍:XML以其强大的发展态势,迅速地在各个领域得到了广泛的应用。本书由浅入深,循序渐进地向读者讲述了XML的三大技术——XML Schema、XSLT和XPath。全书的内容包括XML基础、XML架构——XML Schema、XML样式表转换语言——XSLT、XML路径语言——XPath,以及XSLT2.0和XPath2.0的知识。最后结合Java语言,讲述了JDOM和JAXB两大应用。本书适合XML初学者阅读,也适合专职的XSLT程序员、XML网站开发人员、XML技术爱好者、数据分析人员作为技术参考资料。

第一篇 XML简介 2

第1章 XML概述 2

1.1 什么是XML 3

1.2 比较XML和HTML 4

1.3 XML的用途 4

1.4 本章小结 4

第2章 XML基础知识 5

2.1 XML语法 6

2.1.1 理解XML文档的本质 6

2.1.2 文档类型声明 7

2.1.3 处理指令 8

2.1.4 文档注释 9

2.1.5 元素 10

2.1.6 属性 12

2.1.7 实体引用 14

2.1.8 CDATA段 15

2.1.9 字符引用 16

2.2 XML文件 16

2.2.1 XML开发工具 16

2.2.2 如何书写XML文档 17

2.2.3 格式良好和有效的XML文档 19

2.2.4 我的XML出了什么错 20

2.2.5 本节小结 23

2.3 开发前奏:XML和Schema,XSLT的关系 23

2.3.1 什么是Schema和XSLT 23

2.3.2 没有Schema和XSLT,XML世界将变成什么样子 24

2.4 本章小结 24

第二篇 XML模式——Schema 26

第3章 浅析Schema开发 26

3.1 Schema简介 27

3.1.1 Schema的本质 27

3.1.2 比较Schema和DTD 27

3.2 使用Schema验证XML文档 29

3.2.1 分析一个Schema 29

3.2.2 用Schema验证XML文档有效性 30

3.3 名称空间 31

3.3.1 什么是名称空间 31

3.3.2 如何理解名称空间 33

3.3.3 无名称空间和默认名称空间 34

3.3.4 名称空间的作用范围 35

3.3.5 本节小结 37

3.4 重新分析Schema文件 38

3.5 Schema内置数据类型 39

3.5.1 xs:string(字符型) 39

3.5.2 xs:decimal(小数型) 39

3.5.3 xs:integer(整型) 40

3.5.4 xs:boolean(布尔型) 40

3.5.5 xs:date(日期型) 41

3.5.6 xs:time(时间型) 41

3.5.7 xs:dateTime(日期时间型) 41

3.5.8 xs:gYearMonth(特定年中的特定月) 42

3.5.9 xs:gMonthDay(每年都会出现的某一天) 42

3.5.10 xs:gDay(每月都会出现的某一天) 42

3.5.11 xs:gMonth(每年都会出现的某个月份) 43

3.5.12 xs:timeDuration(时间段) 43

3.5.13 xs:anyURI(统一资源标识符) 43

3.6 XML元素类型 43

3.7 本章小结 44

第4章 Schema声明简单元素 45

4.1 基本数据类型的使用 46

4.1.1 字符型的使用 46

4.1.2 日期型的使用 46

4.1.3 数值型的使用 47

4.1.4 布尔型的使用 47

4.2 自定义简单类型的使用 48

4.2.1 枚举型——enumeration 48

4.2.2 限制长度——minLength、maxLength 50

4.2.3 取值范围——minInclusive、maxInclusive 51

4.2.4 小数位数限定——totoalDigits和fractionDigits 53

4.2.5 模式匹配——pattern 54

4.2.6 原子类型——atomic 54

4.2.7 列表类型——list 55

4.2.8 联合类型 56

4.2.9 分析type属性值的特殊性 58

4.2.10 type属性与名称空间 58

4.2.11 使用比喻来解释type属性和名称空间关系 62

4.2.12 简单数据类型小结 64

4.3 元素的默认值和固定值 65

4.3.1 元素默认值 65

4.3.2 元素默认值的用途 66

4.3.3 元素固定值 67

4.4 本章小结 68

第5章 Schema声明复杂元素 69

5.1 复杂元素的分类:simpleContent和complexContent 70

5.1.1 理解内容(content) 70

5.1.2 区分simpleContent和complexContent 70

5.2 声明simpleContent元素 71

5.2.1 如何声明simpleContent元素 71

5.2.2 关于类型派生——restriction和extension 73

5.2.3 属性声明 74

5.2.4 使用use定义属性 76

5.2.5 使用default给属性赋予默认值 78

5.2.6 使用fixed限制属性 80

5.3 声明complexContent元素 81

5.3.1 任意类型anyType 81

5.3.2 如何定义complexContent 82

5.3.3 complexContent定义的缩略模式 83

5.3.4 定义子元素顺序 84

5.3.5 定义子元素出现次数 87

5.3.6 顺序指示符及元素出现次数综合使用实例 89

5.3.7 顺序指示符和元素出现次数小结 89

5.3.8 综合使用子元素和属性声明 90

5.3.9 simpleContent和complexContent的几种理解 92

5.4 特殊的复杂类型 95

5.4.1 anyType的约束 95

5.4.2 anyType的约束派生 99

5.4.3 空元素的定义 99

5.4.4 混合内容类型的定义 101

5.5 ref引用 102

5.5.1 ref引用元素声明 103

5.5.2 元素组的使用 105

5.5.3 属性组的使用 106

5.6 全局声明与局部声明 109

5.6.1 什么是全局声明和局部声明 109

5.6.2 目标名称空间(targetNamespace) 111

5.6.3 限定与非限定 112

5.6.4 在Schema中声明名称空间 115

5.6.5 全局声明和局部声明的比较 118

5.6.6 无名称空间元素(属性)如何验证 119

5.7 本章小结 121

第6章 Schema使用技巧 122

6.1 指定唯一性——使用unique 123

6.1.1 定义元素唯一性 123

6.1.2 定义属性唯一性 124

6.1.3 慎用默认名称空间 126

6.2 key和keyref的使用 127

6.3 include的使用 129

6.4 import的使用 132

6.5 使用xml:lang 135

6.6 本章小结 136

第三篇 XML转换——XSLT 138

第7章 浅析XSLT开发 138

7.1 XSLT简介 139

7.1.1 XSLT的本质 139

7.1.2 XSL和XSLT的关系 139

7.1.3 XSLT的专用名称空间 140

7.1.4 XSLT处理器 140

7.2 第一个XSLT文档 140

7.2.1 编写第一个XSLT文档 140

7.2.2 查看第一个XSLT的输出结果 142

7.2.3 为XSLT转换选择处理器 142

7.2.4 修改XSLT文档的参数 143

7.2.5 分析第一个XSLT文档 144

7.2.6 在浏览器中使用XSLT 145

7.2.7 编写XSLT文档的注意事项 146

7.3 本章小结 146

第8章 XSLT基础 147

8.1 进一步思考XSLT的本质 148

8.1.1 XSLT是一门编程语言 148

8.1.2 XSLT相对其他语言的特点 148

8.2 XML文档结构描述——XPath 148

8.2.1 什么是XPath 149

8.2.2 XPath表达式简介 149

8.2.3 XPath和XSLT的关系 150

8.2.4 典型实例 150

8.3 常用XSLT函数概述 152

8.3.1 current()函数——返回当前节点 152

8.3.2 document()函数——使用外部XML文档 153

8.3.3 element-available()函数——判断元素可用性 154

8.3.4 format-number()函数——格式化数字 156

8.3.5 function-available()函数——判断函数可用性 157

8.3.6 generate-id()函数——生成节点id 158

8.3.7 key()函数——返回索引中的节点 158

8.3.8 system-property()函数——返回系统属性 158

8.4 XPath节点集函数 159

8.4.1 count()函数——统计节点个数 159

8.4.2 position()函数——返回节点位置 160

8.4.3 last()函数——返回节点总数 161

8.4.4 name()函数——返回节点名称 162

8.5 XPath字符串函数 162

8.5.1 concat()函数——连接字符串 163

8.5.2 contains()函数——判断包含关系 164

8.5.3 normalize-space()函数——格式化空白符 165

8.5.4 starts-with()函数——判断开头字符串 166

8.5.5 string-length()函数——返回字符串长度 167

8.5.6 substring()函数——截取字符串 167

8.5.7 substring-before()函数——向前截取字符串 168

8.5.8 substring-after()函数——向后截取字符串 169

8.5.9 translate()函数——替换字符 170

8.6 XPath数值型函数 171

8.6.1 ceiling()函数——上取整 171

8.6.2 floor()函数——下取整 172

8.6.3 number()函数——数值转换 173

8.6.4 round()函数——四舍五入取整 174

8.6.5 sum()函数——求和 175

8.7 XPath布尔型函数 176

8.7.1 boolean()函数——计算布尔值 176

8.7.2 false()函数——返回false 177

8.7.3 lang()函数——判断xml:lang属性 177

8.7.4 not()函数——取反操作 178

8.7.5 true()函数——返回true 180

8.8 XPath函数小结 180

8.9 XSLT运算符 180

8.9.1 算术运算符 180

8.9.2 逻辑运算符 180

8.9.3 比较运算符 181

8.10 概念分析 181

8.10.1 当前节点和上下文节点 181

8.10.2 XPath表达式与字符串 183

8.11 本章小结 184

第9章 理解模板 185

9.1 定义和调用模板 186

9.1.1 模板定义语法 186

9.1.2 调用节点模板(xsl:apply-templates) 186

9.1.3 调用命名模板 190

9.2 模板冲突 193

9.2.1 最基本的模板冲突 193

9.2.2 mode属性的使用 195

9.2.3 设置模板优先级——priority属性的使用 197

9.2.4 包含模板 201

9.2.5 导入模板 205

9.3 XSLT执行过程 206

9.3.1 XSLT程序的入口点 206

9.3.2 XSLT程序哪些模板将被执行 207

9.3.3 模板调用顺序跟XML文档没有任何关系 209

9.4 内嵌模板 210

9.5 模板递归 211

9.5.1 节点模板递归 211

9.5.2 命名模板递归 214

9.6 本章小结 218

第10章 XSLT应用——输出 219

10.1 输出文档控制——〈xsl:output〉 220

10.1.1 〈xsl:output〉元素的使用语法 220

10.1.2 定义输出格式——method属性 221

10.1.3 设置输出编码格式——encoding属性 222

10.1.4 设置自动换行和缩进——indent属性 224

10.1.5 输出文档控制小结 225

10.2 输出文本——〈xsl:value-of〉 226

10.2.1 〈xsl:value-of〉语法 226

10.2.2 典型实例1——输出复杂元素 227

10.2.3 典型实例2——输出节点集合 228

10.3 节点复制——〈xsl:copy〉、〈xsl:copy-of〉 229

10.3.1 〈xsl:copy〉元素的使用 229

10.3.2 〈xsl:copy-of〉元素 230

10.4 生成元素——〈xsl:element〉 231

10.4.1 〈xsl:element〉语法 231

10.4.2 典型实例1——动态生成元素名 232

10.4.3 典型实例2——特殊名称空间元素 234

10.4.4 生成元素小结 235

10.5 生成属性——〈xsl:attribute〉 235

10.5.1 〈xsl:attribute〉语法 235

10.5.2 典型实例1——动态生成属性 235

10.5.3 典型实例2——属性值难以获得 237

10.5.4 典型实例3——所依附的元素为〈xsl:element〉 239

10.5.5 典型实例4——生成XSLT文档 241

10.5.6 生成属性小结 243

10.6 输出指令——〈processing-instruction〉 243

10.6.1 〈processing-instruction〉语法 243

10.6.2 典型实例——创建处理指令 243

10.7 输出注释——〈xsl:comment〉 245

10.7.1 〈xsl:comment〉使用语法 246

10.7.2 典型实例——存储报价 246

10.8 输出消息——〈xsl:message〉 248

10.8.1 〈xsl:message〉语法 248

10.8.2 典型实例1——文本提示 248

10.8.3 典型实例2——指令模板 250

10.9 替换名称空间——〈xsl:namespace-alias〉元素 251

10.9.1 〈xsl:namespace-alias〉语法 251

10.9.2 典型实例——生成XSLT文档 252

10.10 〈xsl:decimal-format〉元素 254

10.10.1 〈xsl:decimal-format〉语法 254

10.10.2 典型实例——常用属性使用 255

10.10.3 使用模式分隔符——pattern-separator属性 257

10.11 阻止名称空间的输出 258

10.12 空白符对输出的影响 260

10.12.1 无意义空白符 261

10.12.2 有意义空白符 264

10.12.3 XML Schema与空白符 265

10.13 本章小结 265

第11章 XSLT应用——变量定义和流程控制 266

11.1 定义变量——〈xsl:variable〉 267

11.1.1 使用语法 267

11.1.2 典型实例——select属性赋值 267

11.1.3 使用content赋值 270

11.1.4 select属性和content赋值的区别 271

11.1.5 临时结果树片段 273

11.1.6 变量的有效范围 275

11.1.7 定义变量小结 277

11.2 条件控制——〈xsl:if〉 277

11.2.1 〈xsl:if〉语法 277

11.2.2 分析test属性 277

11.2.3 字符串类型 278

11.2.4 数值类型 279

11.2.5 布尔类型 280

11.2.6 节点集合类型 281

11.2.7 典型实例 282

11.2.8 条件控制小结 283

11.3 多条件选择——〈xsl:choose〉 283

11.3.1 使用语法 284

11.3.2 典型实例 284

11.4 循环处理——〈xsl:for-each〉 287

11.4.1 〈xsl:for-each〉语法 287

11.4.2 典型实例 287

11.4.3 循环嵌套 288

11.4.4 分析〈xsl:for-each〉与〈xsl:apply-templates〉的关系 290

11.4.5 条件约束 292

11.4.6 多条件约束 293

11.4.7 循环处理小结 296

11.5 异常处理——〈xsl:fallback〉 296

11.5.1 〈xsl:fallback〉语法 297

11.5.2 典型实例 297

11.5.3 关于用element-available()函数代替〈xsl:fallback〉 299

11.6 本章小结 300

第12章 XSLT应用——排序、索引与编号 301

12.1 排序处理——〈xsl:sort〉 302

12.1.1 〈xsl:sort〉语法 302

12.1.2 典型实例——单关键字排序 302

12.1.3 典型实例——多关键字排序 304

12.1.4 典型实例——求极值 306

12.2 建立索引——〈xsl:key〉 308

12.2.1 〈xsl:key〉语法 308

12.2.2 典型实例1——一对一映射 308

12.2.3 典型实例2——一对多映射 310

12.2.4 典型实例3——多对多映射 312

12.3 生成编号——〈xsl:number〉 315

12.3.1 使用语法 315

12.3.2 典型实例1——默认输出 316

12.3.3 典型实例2——指定编号 317

12.3.4 典型实例3——指定计数层次和节点 318

12.3.5 典型实例4——指定计数开始位置 324

12.3.6 典型实例5——指定编号格式 326

12.4 本章小结 329

第13章 XSLT应用——分组 330

13.1 什么是分组 331

13.2 解决分组问题的思路 332

13.3 解决分组问题的办法 332

13.4 MuenChian方法分组 335

13.5 较为复杂的分组 338

13.6 本章小结 341

第14章 XPath的灵魂——轴 343

14.1 什么是轴 344

14.1.1 轴的本质 344

14.1.2 轴的分类 344

14.2 前驱轴——preceding 345

14.2.1 前驱轴应用1——分组 346

14.2.2 前驱轴应用2——统计节点 348

14.2.3 preceding轴只与源文档有关 351

14.2.4 preceding轴的方向 352

14.3 前驱兄弟轴——preceding-sibling 354

14.3.1 前驱兄弟轴的应用——分组 355

14.3.2 前驱兄弟轴的应用——统计节点 357

14.3.3 综合应用实例 357

14.4 后继轴——following 361

14.4.1 典型实例 363

14.4.2 following轴的方向 365

14.5 后继兄弟轴——following-sibling 366

14.5.1 典型示例 368

14.5.2 综合应用实例 370

14.6 子轴——child 372

14.6.1 子轴的方向 373

14.6.2 子轴和前驱、后继轴 375

14.7 父轴——parent 377

14.7.1 属性节点的父轴 378

14.7.2 上下文节点的父轴 380

14.8 属性轴——attribute 382

14.8.1 属性轴的方向 383

14.8.2 属性轴的缩略模式 385

14.9 本身轴——self 386

14.10 后代轴——descendant 390

14.10.1 后代轴的方向 391

14.10.2 后代轴的缩略模式 392

14.11 后代或本身轴——descendant-or-self 394

14.11.1 后代或本身轴的方向 395

14.11.2 后代或本身轴的应用 396

14.12 祖先轴——ancestor 397

14.12.1 祖先轴的方向 398

14.12.2 祖先轴的应用——输出XPath 400

14.13 祖先或本身轴——ancestor-or-self 401

14.13.1 祖先或本身轴的方向 402

14.13.2 祖先或本身轴应用——输出XPath 402

14.14 名称空间轴——namespace 403

14.14.1 名称空间轴的默认节点 404

14.14.2 名称空间的继承性 404

14.14.3 名称空间轴上节点的名称 405

14.15 常见问题 405

14.15.1 轴的分类问题 405

14.15.2 节点测试 407

14.15.3 重新理解XPath表达式 408

14.15.4 重新理解“/”和“∥” 408

14.16 本章小结 410

第四篇 EXSLT(扩展XSLT)和XSLT 2.0 412

第15章 EXSLT——扩展XSLT 412

15.1 EXSLT简介 413

15.1.1 EXSLT介绍 413

15.1.2 EXSLT的前景 413

15.2 应用方向一——获得日期和时间 414

15.3 应用方向二——将字符串当做XPath表达式进行计算 417

15.3.1 典型实例1——计算节点 417

15.3.2 典型实例2——变量传递 418

15.4 本章小结 422

第16章 XPath 2.0 423

16.1 XPath 2.0简介 424

16.1.1 XPath 2.0的使用环境 424

16.1.2 对XML Schema内建数据类型的支持 424

16.1.3 增加了XPath数据类型名称空间 426

16.1.4 注意非整数天数的处理 429

16.2 序列概念的引入 430

16.2.1 什么是序列 430

16.2.2 XPath 1.0表达式如何与XPath 2.0兼容起来 431

16.2.3 典型实例——实现循环次数 431

16.3 序列运算符 432

16.3.1 循环操作 432

16.3.2 条件判断 435

16.4 字符串函数 437

16.4.1 compare()函数——比较字符串 437

16.4.2 ends-with()函数——判断结尾字符串 438

16.4.3 starts-with()函数——判断开头字符串 439

16.4.4 string-join()函数——串联序列对象 439

16.4.5 subsequence()函数——获取子序列 441

16.4.6 matches()函数——匹配正则表达式 441

16.4.7 tokenize()函数——分割字符串为序列 443

16.4.8 replace()函数——替换字符串 443

16.4.9 lower-case()函数——返回小写字符 446

16.4.10 upper-case()函数——返回大写字符 447

16.5 数值型函数 448

16.5.1 avg()函数——获取平均值 448

16.5.2 max()函数——获取最大值 449

16.5.3 min()函数——获取最小值 449

16.6 日期型函数 451

16.7 本章小结 454

第17章 XSLT 2.0 455

17.1 XSLT 2.0简介 456

17.1.1 XSLT 2.0的地位 456

17.1.2 如何使用XSLT 2.0 456

17.1.3 XSLT 2.0增加的新内容 456

17.2 XSLT 2.0——分组 457

17.2.1 分组的使用 457

17.2.2 分组排序 459

17.2.3 分组中的上下文节点 461

17.2.4 分组嵌套 462

17.2.5 动态分组 465

17.2.6 利用group-adjacent属性进行相邻分组 468

17.2.7 利用group-starting-with和group-ending-with属性指定分组条件 470

17.3 多文件输出——〈xsl:result-document〉 472

17.3.1 〈xsl:result-document〉语法 472

17.3.2 典型实例——分割XML文档 473

17.4 字符映射——〈xsl:character-map〉元素 475

17.4.1 〈xsl:character-map〉语法 475

17.4.2 典型实例——生成JSP文档 475

17.5 分析字符串——〈xsl:analyze-string〉元素 477

17.5.1 〈xsl:analyze-string〉元素简介 477

17.5.2 典型实例——获得文件名 478

17.5.3 关于regex属性中的“{}” 479

17.5.4 正则表达式分组——regex-group()函数的使用 480

17.6 定义变量〈xsl:variable〉和创建序列〈xsl:sequence〉 482

17.6.1 〈xsl:variable〉元素的变化 482

17.6.2 〈xsl:sequence〉元素 483

17.6.3 序列和临时结果树的优劣比较 485

17.7 本章小结 485

第18章 正则表达式 486

18.1 正则表达式在XML中的应用 487

18.1.1 在XML Schema中的应用 487

18.1.2 在XPath 2.0中的应用 487

18.1.3 在XSLT 2.0中的应用 487

18.2 XML正则表达式简介 488

18.2.1 元字符和普通字符 488

18.2.2 量词 488

18.2.3 字符转义与字符类 489

18.2.4 字符组的使用 490

18.2.5 正则表达式分支 490

18.3 本章小结 490

第五篇 XML在Java中的典型应用 492

第19章 用JDOM解析、处理XML文档 492

19.1 用JDOM解析XML文档 493

19.1.1 准备工作 493

19.1.2 创建Java类 494

19.2 用JDOM处理XML文档 496

19.2.1 创建XML文档 496

19.2.2 删除和修改节点 498

19.3 本章小结 500

第20章 用JAXB处理XML文档 501

20.1 准备工作 502

20.1.1 下载与安装JAXB 502

20.1.2 XJC简介 503

20.1.3 JXL简介 504

20.1.4 查看用来映射的XML Schema文档 504

20.2 项目开发 505

20.2.1 创建项目 505

20.2.2 利用XJC生成Java类 505

20.2.3 存储了字典表的Excel文档 509

20.3 本章小结 512

第六篇 XML在C#中的典型应用 514

第21章 使用XML DOM操作节点 514

21.1 C#中的XML DOM 515

21.1.1 XML DOM的操作对象XmlDocument 515

21.1.2 使用XML文件分析XmlDocument中的对象 515

21.1.3 使用DOM对象获取XML文件 516

21.1.4 使用DOM对象获取XML文件中的指定节点 517

21.1.5 使用DOM对象改变XML文件的数据顺序 519

21.2 XML文件读取器——XmlReader 520

21.2.1 XmlReader的作用 520

21.2.2 对XML的验证 521

21.2.3 使用XmlReader读取XML文件的一部分 521

21.2.4 使用XmlTextReader读取整个XML文件 523

21.3 XML文件编写器——XmlWriter 524

21.3.1 XmlWriter的作用 524

21.3.2 XmlWriter对XML文件的验证 525

21.3.3 用XmlWriter创建并编辑XML文件 525

21.4 XML与DataSet的交互 527

21.4.1 将XML文件转化为DataSet数据集 527

21.4.2 将DataSet数据集转换为XML文件 528

21.5 本章小结 531

附录A 本书光盘应用注意事项 532

附录B 光盘代码说明 533