疯狂XML讲义(第3版)

疯狂XML讲义(第3版)
作 者: 李刚
出版社: 电子工业出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  李刚,十余年软件开发从业经验,疯狂软件教育中心教学总监。疯狂Java实训营创始人,疯狂Java体系原创图书作者。广东技术师范学院计算机科学系兼职副教授,CSDN特邀讲师。培训的学生已在腾讯、阿里、华为、IBM、网易、唯品会、电信盈科等名企就职。国内知名高端IT技术图书作家,已出版《疯狂Java讲义》《疯狂Python讲义》《疯狂Android讲义》《轻量级Java EE企业应用实战》等著作。其中疯狂Java体系图书均已沉淀多年,赢得极高的市场认同,多次重印,多部著作印刷数量超过10万册,并被多所“985”“211”院校选作教材,部分图书已被翻译成繁体中文版,授权到中国台湾地区。

内容简介

主要分为五个部分。第一部分介绍了XML、DTD、XML Schema等基础知识,这些知识主要教读者如何定义有效的XML文档,这部分内容是深入学习后面知识的基础,也是每个使用XML的开发者都应该掌握的基础。第二部分介绍了CSS、XSLT和XPath等知识,通过使用CSS或XSLT,可直接将XML文档当成视图技术。第三部分介绍了DOM、SAX、JAXP、dom4j、JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery可以查询XML文档中的数据,就像使用SQL查询关系数据库的数据一样。第四部分介绍了Web ServicesService和CXF,其中CXF是Java领域的主流Web ServicesService框架,简单易用。第五部分则提供了两个综合性案例:基于XML的电子公告系统和电子拍卖系统,让读者将前面所学应用到实际项目中。尤其是电子拍卖系统。它是一个包含5个表,表之间具有复杂关联映射的系统,该案例采用目前流行、规范的轻量级Java EE架构,将整个应用分为领域对象层、DAO层和业务逻辑层,然后用CXF将业务逻辑组件包装成Web ServicesService,从而可以将现有的Java EE项目与其他平台的、其他语言的异构项目进行整合,具有极好的指导价值和借鉴意义。

图书目录

第1章 XML概述\t1

1.1 XML的起源\t2

1.1.1 标记语言\t2

1.1.2 XML的基本概念\t3

1.1.3 XML和HTML\t4

1.2 XML的优势\t4

1.2.1 简单易用的标记语言\t4

1.2.2 严格的格式\t5

1.2.3 数据逻辑和显示逻辑分离\t6

1.3 XML和Java EE\t6

1.3.1 配置描述\t6

1.3.2 简化的数据交换\t8

1.3.3 Web Service\t8

1.4 XML的编辑工具\t9

1.4.1 普通文本编辑工具\t9

1.4.2 XMLSpy简介\t9

1.4.3 使用XMLSpy编辑XML文档\t10

1.5 XML的竞争对手\t11

1.5.1 注解\t11

1.5.2 轻量级的数据交换格式―JSON\t13

1.6 本章小结\t16

第2章 XML文档规则\t17

2.1 XML文档的分类\t18

2.1.1 格式不好的XML文档\t18

2.1.2 格式良好但无效的XML文档\t19

2.1.3 有效的XML文档\t20

2.2 XML文档的整体结构\t21

2.2.1 有且仅有一个根元素\t21

2.2.2 元素必须合理结束\t22

2.2.3 元素之间必须合理嵌套\t22

2.2.4 元素的属性必须有值\t23

2.3 XML声明\t25

2.4 XML元素的基本规则\t27

2.4.1 合法的标签名\t27

2.4.2 嵌套子元素\t28

2.4.3 空元素\t28

2.5 字符数据\t29

2.5.1 使用实体引用\t30

2.5.2 使用CDATA标记\t30

2.6 注释\t31

2.7 处理指令\t32

2.8 W3C对于属性的使用建议\t33

2.9 换行处理\t35

2.10 本章小结\t35

本章练习\t35

第3章 DTD详解\t36

3.1 XML语义约束\t37

3.2 引入DTD\t38

3.2.1 内部DTD\t38

3.2.2 外部DTD\t39

3.2.3 公用DTD\t40

3.3 DTD文档概览\t41

3.3.1 DTD文档的结构\t41

3.3.2 验证XML文档的有效性\t41

3.4 定义元素\t42

3.4.1 定义任意类型的元素\t42

3.4.2 定义空元素\t44

3.4.3 定义字符串内容的元素\t44

3.4.4 定义混合内容的元素\t45

3.5 定义子元素\t46

3.5.1 有序的子元素\t46

3.5.2 互斥的子元素\t47

3.5.3 子元素出现的频率\t48

3.5.4 组合子元素\t49

3.5.5 无序的子元素\t51

3.6 定义元素属性\t52

3.6.1 对属性的约束规则\t53

3.6.2 定义属性类型\t55

3.7 定义实体\t57

3.7.1 定义普通实体\t58

3.7.2 定义参数实体\t59

3.7.3 外部实体\t60

3.7.4 外部参数实体\t61

3.8 定义符号\t61

3.8.1 未解析实体\t62

3.8.2 ENTITY和ENTITIES类型的属性\t63

3.8.3 NOTATION类型的属性\t64

3.9 使用XMLSpy创建DTD\t64

3.10 本章小结\t66

本章练习\t66

第4章 XML Schema基本语法\t67

4.1 DTD和XML Schema\t68

4.1.1 XML Schema概述及其优势\t68

4.1.2 XML Schema在Java EE里的应用\t69

4.2 XML Schema入门\t70

4.2.1 XML Schema根元素\t70

4.2.2 在XML中引用无命名空间的XML Schema\t72

4.2.3 在XML中引用带命名空间的XML Schema\t72

4.3 XML Schema中的注释\t73

4.4 理解XML Schema的数据类型\t74

4.5 XML Schema的内置类型\t76

4.5.1 字符串及相关类型\t78

4.5.2 数值类型\t79

4.5.3 日期、时间类型\t81

4.5.4 boolean类型\t83

4.5.5 anyURI类型\t83

4.5.6 二进制数据类型\t84

4.5.7 XML Schema 1.1引入的anyAtomicType\t84

4.6 使用限制派生新类型\t85

4.6.1 指定基类型的两种方式\t86

4.6.2 指定类型的两种方式\t88

4.6.3 范围约束\t90

4.6.4 长度约束\t90

4.6.5 精度约束\t90

4.6.6 枚举约束\t91

4.6.7 正则表达式约束\t92

4.6.8 空白处理\t92

4.6.9 XML Schema 1.1新增的assertion约束\t94

4.6.10 XML Schema 1.1新增的时区约束\t95

4.7 使用<list.../>派生列表类型\t96

4.7.1 定义列表类型\t97

4.7.2 限制列表类型\t98

4.8 使用<union.../>派生联合类型\t100

4.8.1 定义联合类型\t100

4.8.2 限制联合类型\t102

4.9 列表类型和联合类型结合使用\t103

4.10 阻止派生新的简单类型\t104

4.10.1 使用final属性\t104

4.10.2 为约束指定fixed属性\t105

4.11 合并多个XML Schema\t105

4.11.1 使用include元素\t106

4.11.2 使用redefine元素\t107

4.11.3 使用import元素\t108

4.12 XMLSpy中关于XML Schema的操作\t109

4.12.1 创建新的XML Schema文档\t109

4.12.2 为XML文档创建XML Schema\t110

4.12.3 为XML文档分配XML Schema\t111

4.13 本章小结\t111

第5章 XML Schema高级知识\t112

5.1 使用anyType定义任意类型\t113

5.2 定义复杂类型\t114

5.2.1 定义复杂类型的方式\t115

5.2.2 扩展简单类型\t116

5.2.3 包含属性的两种方式\t117

5.2.4 扩展包含简单内容的复杂类型\t119

5.2.5 XML Schema 1.1改进的类型替换\t120

5.2.6 限制包含简单内容的复杂类型\t122

5.2.7 限制anyType派生新的类型\t123

5.2.8 XML Schema 1.1改进的all元素\t126

5.2.9 使用XML Schema 1.1的断言约束进行限制\t127

5.2.10 包含子元素的两种方式\t128

5.2.11 空元素类型\t131

5.2.12 混合内容类型\t132

5.3 复杂类型的进一步派生\t133

5.3.1 限制空元素类型\t133

5.3.2 扩展空元素类型\t134

5.3.3 XML Schema 1.1改进后的限制

派生\t135

5.3.4 扩展包含子元素的类型\t138

5.3.5 限制混合内容类型\t140

5.3.6 扩展混合内容类型\t142

5.4 阻止派生新的类型\t143

5.5 通配符\t144

5.5.1 元素通配符\t144

5.5.2 属性通配符\t146

5.5.3 XML Schema 1.1对通配符的改进\t147

5.6 元素替换\t149

5.6.1 阻止自己被替换\t151

5.6.2 阻止指定派生类型的替换\t153

5.7 抽象元素和抽象类型\t154

5.7.1 抽象元素\t154

5.7.2 抽象类型\t156

5.8 一致性约束\t157

5.8.1 key约束\t158

5.8.2 unique约束\t160

5.8.3 keyref约束\t161

5.9 元素组与属性组\t163

5.10 定义符号\t165

5.11 本章小结\t166

本章练习\t166

第6章 命名空间\t167

6.1 导入命名空间\t168

6.2 XML Schema的命名空间支持\t170

6.2.1 在XML Schema中使用命名空间\t170

6.2.2 命名空间对XML文档的作用\t173

6.2.3 为属性使用命名空间限定\t178

6.2.4 命名空间对一致性约束的影响\t180

6.2.5 局部元素和局部属性的强制限定\t181

6.3 命名空间和DTD\t185

6.4 本章小结\t187

第7章 使用XSLT显示XML文档\t188

7.1 XSL简介\t189

7.1.1 两种常用样式单及其优势\t189

7.1.2 XSL概述\t190

7.2 XSLT入门\t190

7.2.1 XSLT转换入门\t191

7.2.2 使用template元素定义模板\t193

7.2.3 使用apply-templates处理子节点\t194

7.2.4 使用value-of输出节点内容\t197

7.2.5 匹配节点的模式\t199

7.2.6 mode属性\t201

7.3 XSLT转换分类\t203

7.3.1 客户端转换和服务器端转换\t203

7.3.2 Xalan处理器\t204

7.3.3 Saxon处理器\t206

7.4 XSLT的内置模板规则\t208

7.5 流程控制元素\t210

7.5.1 分支处理\t210

7.5.2 循环控制\t212

7.5.3 排序控制\t214

7.6 控制空白的处理方式\t216

7.7 创建结果树\t216

7.7.1 创建元素和属性\t217

7.7.2 创建文本\t222

7.7.3 创建处理指令\t223

7.7.4 创建注释\t223

7.7.5 复制\t224

7.7.6 输出格式化数值\t226

7.8 变量和参数\t231

7.8.1 为变量和参数指定值\t231

7.8.2 全局与局部的变量和参数\t233

7.8.3 改变参数值\t234

7.9 使用命名模板\t236

7.10 包含和导入\t238

7.10.1 使用import导入\t238

7.10.2 使用include包含\t240

7.10.3 解决模板定义冲突\t241

7.11 XSLT 1.1的fallback支持\t241

7.12 指定输出格式\t242

7.12.1 转换XML文档的相关格式\t243

7.12.2 转换HTML文档的相关格式\t244

7.13 XSLT的内置函数\t245

7.13.1 使用system-property函数\t245

7.13.2 使用current函数返回当前节点集\t246

7.13.3 使用element-available和function-available函数\t247

7.13.4 使用unparsed-entity-uri函数\t 247

7.13.5 使用document 函数处理多个源XML文档\t 248

7.13.6 使用format-number 函数\t250

7.13.7 使用key函数\t252

7.13.8 使用generate-id函数\t254

7.14 XSLT 2.0新增的功能\t255

7.14.1 分组\t255

7.14.2 多文档输出\t258

7.14.3 字符映射\t259

7.14.4 <xsl:value-of>元素的改进\t260

7.14.5 数据类型绑定\t261

7.14.6 正则表达式支持\t262

7.14.7 用户自定义函数\t263

7.15 使用XMLSpy管理XSLT操作\t264

7.16 本章小结\t265

本章练习\t266

第8章 XPath详解\t267

8.1 XPath语言简介\t268

8.1.1 XPath节点\t268

8.1.2 XPath基本概念\t269

8.1.3 节点关系\t269

8.2 绝对路径和相对路径\t270

8.2.1 路径和步\t270

8.2.2 XPath基路径\t270

8.3 XPath基础语法\t272

8.3.1 轴关系\t272

8.3.2 节点测试\t273

8.3.3 限定谓语\t273

8.3.4 简化写法\t274

8.4 运算符和表达式\t274

8.4.1 算术运算符\t275

8.4.2 比较运算符\t275

8.4.3 逻辑运算符\t276

8.4.4 XPath 3.x新增的字符串连接表达式\t276

8.4.5 XPath 3.x新增的映射运算符\t277

8.4.6 组合多个路径表达式的运算符\t277

8.5 XPath 2.0新增的表达式\t277

8.5.1 for表达式\t278

8.5.2 if表达式\t280

8.5.3 some/every判断表达式\t281

8.6 XPath 2.0的类型支持\t282

8.7 内置函数库\t283

8.7.1 字符串相关函数\t283

8.7.2 数值相关函数\t285

8.7.3 日期和时间相关函数\t286

8.7.4 boolean值相关函数\t288

8.7.5 节点相关函数\t289

8.7.6 序列相关函数\t290

8.7.7 XPath 3.x新增的行内函数与动态函数调用\t292

8.8 本章小结\t292

第9章 DOM、SAX和JAXP解析\t293

9.1 DOM、SAX和JAXP概述\t294

9.2 JAXP的DOM支持\t299

9.2.1 XML文档和DOM模型\t299

9.2.2 DOM树中的对象类型\t301

9.2.3 DOM解析器\t301

9.2.4 使用DTD验证XML文档\t302

9.2.5 使用DOM解析XML文档\t304

9.2.6 使用DOM创建XML文档\t307

9.2.7 使用DOM修改XML文档\t309

9.2.8 解析DTD信息\t310

9.2.9 DOM和命名空间\t313

9.3 JAXP的SAX支持\t314

9.3.1 SAX的处理机制\t314

9.3.2 SAX解析器和监听器\t315

9.3.3 使用DTD验证XML文档的有效性\t319

9.3.4 使用SAX解析XML文档\t320

9.3.5 SAX和命名空间\t323

9.4 DOM和SAX的比较\t326

9.5 使用XML Schema验证XML文档的有效性\t327

9.5.1 SchemaFactory和验证\t327

9.5.2 获取节点的类型信息\t331

9.6 浏览器对DOM的支持\t333

9.7 本章小结\t335

本章练习\t336

第10章 使用dom4j处理XML文档\t337

10.1 dom4j简介\t338

10.1.1 dom4j的封装和优势\t338

10.1.2 下载和安装dom4j\t339

10.2 dom4j常用API\t340

10.3 使用dom4j访问XML文档\t341

10.3.1 验证XML文档的有效性\t341

10.3.2 使用dom4j解析XML文档\t342

10.3.3 使用访问者模式遍历XML文档\t344

10.4 使用dom4j创建XML文档\t346

10.5 修改XML文档\t347

10.6 使用dom4j获取命名空间信息\t348

10.7 本章小结\t350

本章练习\t351

第11章 使用JDOM处理XML文档\t352

11.1 JDOM简介\t353

11.1.1 JDOM常用API\t353

11.1.2 下载和安装JDOM\t354

11.2 使用JDOM访问XML文档的实例\t355

11.2.1 验证XML文档的有效性\t355

11.2.2 使用JDOM解析XML文档\t356

11.3 使用JDOM创建XML文档\t358

11.4 修改XML文档\t359

11.5 使用JDOM获取命名空间信息\t360

11.6 选择dom4j还是JDOM\t362

11.7 本章小结\t363

本章练习\t363

第12章 XQuery详解\t364

12.1 XQuery简介\t365

12.1.1 XQuery和XPath的关系\t365

12.1.2 XQuery和XSLT的关系\t366

12.2 使用XQuery\t366

12.2.1 使用XMLSpy查看XQuery查询结果\t367

12.2.2 使用Saxon执行XQuery查询\t368

12.3 基本表达式\t369

12.3.1 直接量\t369

12.3.2 变量引用\t369

12.3.3 圆括号表达式\t369

12.3.4 上下文项表达式\t369

12.3.5 函数调用\t370

12.4 序列表达式\t370

12.4.1 构造序列\t370

12.4.2 过滤表达式\t370

12.4.3 组合节点序列\t371

12.5 算术表达式\t372

12.6 比较表达式\t373

12.6.1 值比较\t373

12.6.2 通用比较\t373

12.6.3 节点比较\t374

12.7 逻辑表达式\t374

12.8 构造器\t375

12.8.1 直接构造\t375

12.8.2 计算构造\t375

12.9 FLWOR表达式\t376

12.9.1 for、let和return子句\t376

12.9.2 where子句\t378

12.9.3 order by子句\t378

12.10 if表达式\t379

12.11 some/every判断表达式\t379

12.12 与序列类型有关的表达式\t380

12.12.1 instance of\t380

12.12.2 typeswitch\t380

12.12.3 cast\t381

12.12.4 castable\t382

12.13 模块和序言\t382

12.13.1 序言\t382

12.13.2 版本声明\t382

12.13.3 模块声明\t383

12.13.4 设置器\t383

12.13.5 导入设置\t385

12.13.6 命名空间声明\t387

12.13.7 默认命名空间声明\t387

12.13.8 变量声明\t388

12.13.9 函数声明\t389

12.13.10 选项声明\t390

12.14 XQuery 3的数组和Map\t391

12.14.1 数组支持\t391

12.14.2 Map支持\t392

12.14.3 数组和Map支持的“?”运算符\t393

12.15 使用XQJ执行XQuery查询\t394

12.15.1 XQJ和JDBC的类似性\t394

12.15.2 XQJ的编程步骤\t395

12.16 本章小结\t398

第13章 Web Service详解\t399

13.1 XML和Web Service\t400

13.1.1 Web Service概述\t400

13.1.2 Web Service平台概述\t401

13.1.3 Web Service的广泛应用\t402

13.2 SOA和云计算\t404

13.2.1 SOA和Web Service\t404

13.2.2 云计算和Web Service\t405

13.3 Web Service开发\t406

13.3.1 CXF概述\t406

13.3.2 下载和安装CXF\t407

13.3.3 使用CXF开发Web Service\t408

13.3.4 客户端开发\t413

13.3.5 复杂类型的处理\t415

13.4 XML和WSDL\t417

13.4.1 WSDL基本语法\t418

13.4.2 portType元素\t420

13.4.3 binding元素\t422

13.4.4 service元素\t424

13.5 XML和SOAP协议\t425

13.5.1 使用拦截器\t425

13.5.2 SOAP基本语法\t428

13.5.3 Header元素\t429

13.5.4 Body元素\t430

13.5.5 Fault元素\t431

13.5.6 SOAP、WSDL和UDDI\t432

13.5.7 使用拦截器进行权限控制\t433

13.6 整合Spring开发Web Service\t436

13.6.1 在Spring中使用CXF\t436

13.6.2 通过Spring启用CXF拦截器\t440

13.6.3 在Spring容器中配置Web Service客户端\t440

13.7 本章小结\t443

第14章 基于XML的电子公告系统\t444

14.1 系统设计\t445

14.2 设计XML文档\t446

14.2.1 保存状态的XML文档\t446

14.2.2 定义XML Schema\t448

14.3 定义XSLT样式单\t450

14.3.1 为公告列表定义样式单\t450

14.3.2 为用户评论设计样式单\t452

14.4 实现控制器\t454

14.4.1 添加公告\t454

14.4.2 查看评论列表\t457

14.4.3 添加评论\t458

14.5 本章小结\t461

本章练习\t461

第15章 Web Service案例:电子拍卖系统\t462

15.1 系统功能简介和架构设计\t463

15.1.1 系统功能简介\t463

15.1.2 系统架构设计\t464

15.2 持久层设计\t465

15.2.1 系统实体\t465

15.2.2 系统E-R图和数据表\t465

15.2.3 实现Hibernate PO\t467

15.2.4 管理SessionFactory\t469

15.3 实现系统DAO层\t470

15.3.1 实现DAO组件的基类\t470

15.3.2 实现系统DAO组件\t473

15.3.3 配置系统DAO组件\t476

15.4 实现业务逻辑层\t477

15.4.1 定义业务逻辑组件接口\t477

15.4.2 依赖注入DAO组件\t479

15.4.3 业务逻辑组件中的异常处理\t480

15.4.4 处理用户竞价\t481

15.4.5 判断拍卖物品状态\t483

15.4.6 事务管理\t485

15.4.7 配置业务层组件\t486

15.5 使用CXF提供Web Service\t488

15.5.1 启用CXF支持\t488

15.5.2 实现Web Service组件\t489

15.5.3 测试Web Service\t495

15.6 本章小结\t497

本章练习