新書推薦:
《
现代无人机鉴赏(珍藏版)
》
售價:HK$
78.2
《
汗青堂丛书·晚清风云(4册套装):帝国的切口 清朝与中华传统文化 太平天国运动史 冲击与回应
》
售價:HK$
427.8
《
穿在身上的历史:世界服饰图鉴(增订珍藏版)
》
售價:HK$
557.8
《
历史的严妆:解读道学阴影下的南宋史学(中华学术·有道)
》
售價:HK$
109.8
《
海外中国研究·江南:中国文雅的源流
》
售價:HK$
76.2
《
迟缓的巨人:“大而不能倒”的反思与人性化转向
》
售價:HK$
77.3
《
我们去往何方:身体、身份和个人价值
》
售價:HK$
67.0
《
大学问·批判的武器:罗莎·卢森堡与同时代思想者的论争
》
售價:HK$
98.6
|
編輯推薦: |
1.知识全面、专业性强
本书并不是一本关于XML基础的图书,系统而深入地介绍了XML相关知识,不仅包括DTD、XML、Schema等基础知识,而且包括XSLT、XPath、XQuery、DOM、SAX、JDOM和dom4j等高级内容。除此之外,还介绍了XML在企业开发中一个重要的应用方向Web Service,并介绍了Java领域Web Service框架CXF的用法。
2.案例实际、实用性强
不仅介绍了基本用法,还提供了与之对应的示例,读者通过边读边练来掌握相应的知识。本书重点介绍了如何将XML知识融入实际的应用开发中。例如书中*后两个案例,都是实际企业开发中的XML应用范例。
3.深入浅出、易读性强
通过类比帮助读者理解,并配合针对性强、重点突出的示例来说明这些知识,降低初学者的学习难度。
4.提供代码下载、不定期答疑等增值服务
扫图书封面折回处的二维码,关注疯狂图书,可获得配套代码,和进群与读者朋友交流、作者不定期答疑等服务。
|
內容簡介: |
主要分为五个部分。*部分介绍了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项目与其他平台的、其他语言的异构项目进行整合,具有极好的指导价值和借鉴意义。
|
關於作者: |
李刚,十余年软件开发从业经验,疯狂软件教育中心教学总监。疯狂Java实训营创始人,疯狂Java体系原创图书作者。广东技术师范学院计算机科学系兼职副教授,CSDN特邀讲师。培训的学生已在腾讯、阿里、华为、IBM、网易、唯品会、电信盈科等名企就职。国内知名高端IT技术图书作家,已出版《疯狂Java讲义》《疯狂Python讲义》《疯狂Android讲义》《轻量级Java EE企业应用实战》等著作。其中疯狂Java体系图书均已沉淀多年,赢得极高的市场认同,多次重印,多部著作印刷数量超过10万册,并被多所“985”“211”院校选作教材,部分图书已被翻译成繁体中文版,授权到中国台湾地区。
|
目錄:
|
第1章 XML概述 1
1.1 XML的起源 2
1.1.1 标记语言 2
1.1.2 XML的基本概念 3
1.1.3 XML和HTML 4
1.2 XML的优势 4
1.2.1 简单易用的标记语言 4
1.2.2 严格的格式 5
1.2.3 数据逻辑和显示逻辑分离 6
1.3 XML和Java EE 6
1.3.1 配置描述 6
1.3.2 简化的数据交换 8
1.3.3 Web Service 8
1.4 XML的编辑工具 9
1.4.1 普通文本编辑工具 9
1.4.2 XMLSpy简介 9
1.4.3 使用XMLSpy编辑XML文档 10
1.5 XML的竞争对手 11
1.5.1 注解 11
1.5.2 轻量级的数据交换格式JSON 13
1.6 本章小结 16
第2章 XML文档规则 17
2.1 XML文档的分类 18
2.1.1 格式不好的XML文档 18
2.1.2 格式良好但无效的XML文档 19
2.1.3 有效的XML文档 20
2.2 XML文档的整体结构 21
2.2.1 有且仅有一个根元素 21
2.2.2 元素必须合理结束 22
2.2.3 元素之间必须合理嵌套 22
2.2.4 元素的属性必须有值 23
2.3 XML声明 25
2.4 XML元素的基本规则 27
2.4.1 合法的标签名 27
2.4.2 嵌套子元素 28
2.4.3 空元素 28
2.5 字符数据 29
2.5.1 使用实体引用 30
2.5.2 使用CDATA标记 30
2.6 注释 31
2.7 处理指令 32
2.8 W3C对于属性的使用建议 33
2.9 换行处理 35
2.10 本章小结 35
本章练习 35
第3章 DTD详解 36
3.1 XML语义约束 37
3.2 引入DTD 38
3.2.1 内部DTD 38
3.2.2 外部DTD 39
3.2.3 公用DTD 40
3.3 DTD文档概览 41
3.3.1 DTD文档的结构 41
3.3.2 验证XML文档的有效性 41
3.4 定义元素 42
3.4.1 定义任意类型的元素 42
3.4.2 定义空元素 44
3.4.3 定义字符串内容的元素 44
3.4.4 定义混合内容的元素 45
3.5 定义子元素 46
3.5.1 有序的子元素 46
3.5.2 互斥的子元素 47
3.5.3 子元素出现的频率 48
3.5.4 组合子元素 49
3.5.5 无序的子元素 51
3.6 定义元素属性 52
3.6.1 对属性的约束规则 53
3.6.2 定义属性类型 55
3.7 定义实体 57
3.7.1 定义普通实体 58
3.7.2 定义参数实体 59
3.7.3 外部实体 60
3.7.4 外部参数实体 61
3.8 定义符号 61
3.8.1 未解析实体 62
3.8.2 ENTITY和ENTITIES类型的属性 63
3.8.3 NOTATION类型的属性 64
3.9 使用XMLSpy创建DTD 64
3.10 本章小结 66
本章练习 66
第4章 XML Schema基本语法 67
4.1 DTD和XML Schema 68
4.1.1 XML Schema概述及其优势 68
4.1.2 XML Schema在Java EE里的应用 69
4.2 XML Schema入门 70
4.2.1 XML Schema根元素 70
4.2.2 在XML中引用无命名空间的XML Schema 72
4.2.3 在XML中引用带命名空间的XML Schema 72
4.3 XML Schema中的注释 73
4.4 理解XML Schema的数据类型 74
4.5 XML Schema的内置类型 76
4.5.1 字符串及相关类型 78
4.5.2 数值类型 79
4.5.3 日期、时间类型 81
4.5.4 boolean类型 83
4.5.5 anyURI类型 83
4.5.6 二进制数据类型 84
4.5.7 XML Schema 1.1引入的anyAtomicType 84
4.6 使用限制派生新类型 85
4.6.1 指定基类型的两种方式 86
4.6.2 指定类型的两种方式 88
4.6.3 范围约束 90
4.6.4 长度约束 90
4.6.5 精度约束 90
4.6.6 枚举约束 91
4.6.7 正则表达式约束 92
4.6.8 空白处理 92
4.6.9 XML Schema 1.1新增的assertion约束 94
4.6.10 XML Schema 1.1新增的时区约束 95
4.7 使用<list...>派生列表类型 96
4.7.1 定义列表类型 97
4.7.2 限制列表类型 98
4.8 使用<union...>派生联合类型 100
4.8.1 定义联合类型 100
4.8.2 限制联合类型 102
4.9 列表类型和联合类型结合使用 103
4.10 阻止派生新的简单类型 104
4.10.1 使用final属性 104
4.10.2 为约束指定fixed属性 105
4.11 合并多个XML Schema 105
4.11.1 使用include元素 106
4.11.2 使用redefine元素 107
4.11.3 使用import元素 108
4.12 XMLSpy中关于XML Schema的操作 109
4.12.1 创建新的XML Schema文档 109
4.12.2 为XML文档创建XML Schema 110
4.12.3 为XML文档分配XML Schema 111
4.13 本章小结 111
第5章 XML Schema高级知识 112
5.1 使用anyType定义任意类型 113
5.2 定义复杂类型 114
5.2.1 定义复杂类型的方式 115
5.2.2 扩展简单类型 116
5.2.3 包含属性的两种方式 117
5.2.4 扩展包含简单内容的复杂类型 119
5.2.5 XML Schema 1.1改进的类型替换 120
5.2.6 限制包含简单内容的复杂类型 122
5.2.7 限制anyType派生新的类型 123
5.2.8 XML Schema 1.1改进的all元素 126
5.2.9 使用XML Schema 1.1的断言约束进行限制 127
5.2.10 包含子元素的两种方式 128
5.2.11 空元素类型 131
5.2.12 混合内容类型 132
5.3 复杂类型的进一步派生 133
5.3.1 限制空元素类型 133
5.3.2 扩展空元素类型 134
5.3.3 XML Schema 1.1改进后的限制
派生 135
5.3.4 扩展包含子元素的类型 138
5.3.5 限制混合内容类型 140
5.3.6 扩展混合内容类型 142
5.4 阻止派生新的类型 143
5.5 通配符 144
5.5.1 元素通配符 144
5.5.2 属性通配符 146
5.5.3 XML Schema 1.1对通配符的改进 147
5.6 元素替换 149
5.6.1 阻止自己被替换 151
5.6.2 阻止指定派生类型的替换 153
5.7 抽象元素和抽象类型 154
5.7.1 抽象元素 154
5.7.2 抽象类型 156
5.8 一致性约束 157
5.8.1 key约束 158
5.8.2 unique约束 160
5.8.3 keyref约束 161
5.9 元素组与属性组 163
5.10 定义符号 165
5.11 本章小结 166
本章练习 166
第6章 命名空间 167
6.1 导入命名空间 168
6.2 XML Schema的命名空间支持 170
6.2.1 在XML Schema中使用命名空间 170
6.2.2 命名空间对XML文档的作用 173
6.2.3 为属性使用命名空间限定 178
6.2.4 命名空间对一致性约束的影响 180
6.2.5 局部元素和局部属性的强制限定 181
6.3 命名空间和DTD 185
6.4 本章小结 187
第7章 使用XSLT显示XML文档 188
7.1 XSL简介 189
7.1.1 两种常用样式单及其优势 189
7.1.2 XSL概述 190
7.2 XSLT入门 190
7.2.1 XSLT转换入门 191
7.2.2 使用template元素定义模板 193
7.2.3 使用apply-templates处理子节点 194
7.2.4 使用value-of输出节点内容 197
7.2.5 匹配节点的模式 199
7.2.6 mode属性 201
7.3 XSLT转换分类 203
7.3.1 客户端转换和服务器端转换 203
7.3.2 Xalan处理器 204
7.3.3 Saxon处理器 206
7.4 XSLT的内置模板规则 208
7.5 流程控制元素 210
7.5.1 分支处理 210
7.5.2 循环控制 212
7.5.3 排序控制 214
7.6 控制空白的处理方式 216
7.7 创建结果树 216
7.7.1 创建元素和属性 217
7.7.2 创建文本 222
7.7.3 创建处理指令 223
7.7.4 创建注释 223
7.7.5 复制 224
7.7.6 输出格式化数值 226
7.8 变量和参数 231
7.8.1 为变量和参数指定值 231
7.8.2 全局与局部的变量和参数 233
7.8.3 改变参数值 234
7.9 使用命名模板 236
7.10 包含和导入 238
7.10.1 使用import导入 238
7.10.2 使用include包含 240
7.10.3 解决模板定义冲突 241
7.11 XSLT 1.1的fallback支持 241
7.12 指定输出格式 242
7.12.1 转换XML文档的相关格式 243
7.12.2 转换HTML文档的相关格式 244
7.13 XSLT的内置函数 245
7.13.1 使用system-property函数 245
7.13.2 使用current函数返回当前节点集 246
7.13.3 使用element-available和function-available函数 247
7.13.4 使用unparsed-entity-uri函数 247
7.13.5 使用document 函数处理多个源XML文档 248
7.13.6 使用format-number 函数 250
7.13.7 使用key函数 252
7.13.8 使用generate-id函数 254
7.14 XSLT 2.0新增的功能 255
7.14.1 分组 255
7.14.2 多文档输出 258
7.14.3 字符映射 259
7.14.4 <xsl:value-of>元素的改进 260
7.14.5 数据类型绑定 261
7.14.6 正则表达式支持 262
7.14.7 用户自定义函数 263
7.15 使用XMLSpy管理XSLT操作 264
7.16 本章小结 265
本章练习 266
第8章 XPath详解 267
8.1 XPath语言简介 268
8.1.1 XPath节点 268
8.1.2 XPath基本概念 269
8.1.3 节点关系 269
8.2 绝对路径和相对路径 270
8.2.1 路径和步 270
8.2.2 XPath基路径 270
8.3 XPath基础语法 272
8.3.1 轴关系 272
8.3.2 节点测试 273
8.3.3 限定谓语 273
8.3.4 简化写法 274
8.4 运算符和表达式 274
8.4.1 算术运算符 275
8.4.2 比较运算符 275
8.4.3 逻辑运算符 276
8.4.4 XPath 3.x新增的字符串连接表达式 276
8.4.5 XPath 3.x新增的映射运算符 277
8.4.6 组合多个路径表达式的运算符 277
8.5 XPath 2.0新增的表达式 277
8.5.1 for表达式 278
8.5.2 if表达式 280
8.5.3 someevery判断表达式 281
8.6 XPath 2.0的类型8
|
內容試閱:
|
前言
自从1998年XML问世以来,XML已经广泛应用于各种开发平台、各种编程语言中,并以XML为基础衍生出大量新的标记语言,如SVG(Scalable Vector Graphics)、SMIL(Synchronized Multimedia Integration Language)等。这些都充分说明了XML具有强大的生命力和广泛的应用前景。
目前虽然XML在Java领域的热度不如以前,因为有不少框架都开始采用注解代替了原来的XML配置,但这并不意味着能彻底忽略XML,实际上XML在Android开发、Java Web开发中依然有着广泛的应用,掌握XML、XML Schema的语法能帮助开发者更好地理解Android开发、Java Web开发中的各种XML文档;在跨平台数据交换方面,XML依然是一个非常优秀的选择;此外,编写爬虫程序时还需要利用XPath来提取文档内目标节点的信息总之,XML可能不如以前热门,但XML依然是很多开发领域(甚至不局限于Java)的基础知识,扎实的XML基础可以让你在学习其他编程知识时事半功倍。
很多人可能都觉得XML非常简单,因为每天都会接触XML文档,但如果深入地问一下:XML除作为配置文件之外,还能干什么?他们往往一无所知。
他们知道XML可以作为配置文件,但可能不知道XML配置文件的结构是由DTD、XML Schema控制的因为我经常听到有人问web.xml文件能包含哪些元素、如何将JSP文件配置成一个Servlet等诸如此类的问题,如果知道阅读web.xml文件对应的DTD、XML Schema,那么他们就不会再存在这些疑问了。
他们可能不知道XML还可以作为一种轻量级的持久化解决方案,就像数据库一样,应用程序可以用类似于SQL的XQuery来查询XML文档中的信息;可能不知道XML可以直接作为表现层来代替传统的HTML
大部分人都知道XML可以作为配置文件,但即使只打算把XML作为配置文件使用,掌握XML Schema也能更好地理解配置文件的结构:配置文件能包含哪些元素、各元素之间的父子关系、各元素能指定哪些属性等。
实际上,XML作为配置文件只是XML的功能之一,不管是对于Java平台,还是其他如.Net平台,XML都具有非常重要的作用。就像做BS开发的程序员,可以选择Java、PHP或者其他语言,但是却无法回避JavaScript;XML也是如此,它不仅对于Java平台是有用的,而且对于其他开发平台也是有用的。
希望本书能让广大Java学习者、开发者掌握真正的XML及其相关知识,与疯狂Java体系中的其他图书类似,《疯狂XML讲义》也是一本立足实战的图书。本书不再是简单的知识点铺陈,而是致力于将知识点融入实际的项目开发中,因此仅仅阅读本书是不够的,一定要配合实际的代码练习才能真正掌握本书介绍的XML知识。
此外,本书大部分章节后都提供了相应的编程习题,供开发者巩固所学,将理论融入实际开发中。关于这些编程习题的解题思路可以通过本书学习交流群参与讨论。
本书有什么特点
在写作本书过程中大量参考了http:www.w3c.org站点中关于DTD、XML Schema、XSLT、XPath、XQuery等技术的最新规范。
本书系统、深入地介绍了XML以及相关技术,希望读者能通过本书更全面地掌握、使用XML的相关知识。归纳起来,本书大致有如下三个特点。
1. 知识全面、专业性强
本书并不是一本关于XML基础的图书。本书系统而深入地介绍了XML相关知识,不仅包括DTD、XML Schema等基础内容,而且包括XSLT、XPath、XQuery、DOM、SAX、JDOM和dom4j等高级内容。除此之外,还介绍了XML在实际企业开发中一个重要的应用方向Web Service,并介绍了Java领域的Web Service框架:CXF的用法。这些知识点覆盖了与XML相关的绝大部分内容,专业性非常强。
2.案例实际、实用性强
本书前面章节在讲解各知识点时,不仅介绍了它们的基本语法,还提供了与之对应的示例,希望读者能够理论结合实际,边读边练,通过编码来掌握相应的知识。本书除介绍XML及其相关知识之外,还重点介绍了如何将XML知识融入实际的应用开发中。例如书中最后两个案例,都是XML在实际企业开发中极好的范例。
3.深入浅出、易读性强
本书与疯狂Java体系的其他图书一样,即使在介绍专业性极强的知识时,也尽量使用深入浅出的类比法来帮助读者理解,并配合针对性很强、重点突出的示例来说明这些知识,降低初学者的学习难度。通过这种案例驱动的讲解方式,让读者在阅读时更容易理解各知识点的功能,并能迅速将所学知识应用于实际开发中。
本书写给谁看
本书是疯狂Java体系图书之一,在学习本书之前不需要任何XML基础,但DOM、SAX、dom4j、JDOM解析部分包含了大量Java编程,因此建议读者先阅读疯狂Java体系的《疯狂Java讲义》一书。如果时间允许,建议读者按照本书所附的学习线路图,遵循学习规律进行学习。
2019-09-16
|
|