标题：XMLXMLSchemaXSLT2.0和XQuery开发详解
图书信息

作　者：孙鑫 编著 
出 版 社： 电子工业出版社
出版时间： 2008-12-1 
页　数：443页
开　本： 16开
I S B N ：9787121076756
所属分类： 图书 >> 计算机/编程 >>JAVA
预估价：55.00元
宣传语

“孙鑫作品系列”之“Java Web开发三部曲”之二
国内第一本介绍XQuery和XQJ的图书
涵盖最新的XSLT2.0、XQuery1.0和XQL规范
7种最常用和最新的XML技术
4种Java解析XML文档技术
1种支持最新XQuery标准的查询API
内 容 简 介

本书内容全面，详细讲解了目前最常用和最新的XML技术，包括：XML、DTD、XML名称空间、XML Schema、XPath 1.0和XPath 2.0、XSLT 1.0和XSLT 2.0，以及XQuery。此外，本书还介绍了如何使用DOM、SAX、JDOM和dom4j来解析和验证XML文档，以及使用最新的XQJ API来查询XML数据。
本书语言生动、通俗易懂、讲解细致，所有章节都提供了大量的例子，以帮助读者更好地理解所学的内容。
本书在内容的安排上独具匠心，在知识体系的讲解上由浅入深、循序渐进。
本书不仅可以作为XML开发的学习用书，还可以作为从事XML开发的程序员的参考用书和必备手册。
前  言

本书内容丰富，讲解了7种最常用和最新的XML技术：XML、DTD、XML名称空间、XML Schema、XPath 1.0和XPath 2.0、XSLT 1.0、XSLT 2.0和XQuery；4种Java解析XML文档技术：DOM、SAX、JDOM，dom4j；1种支持最新XQuery标准的查询API：XQJ（XQuery for Java API）。
本书面向的读者
毫无XML经验的初学者
有一定的XML经验，但没有从事过XML开发的读者
正在从事XML开发的初中级程序
正在从事XSLT开发的程序员
正在从事XQuery开发的程序员
本书的内容组织
全书共分5部分，包括了XML篇、XML Schema篇、解析篇、XSLT篇和XQuery篇。本书在内容的安排上独具匠心，在知识体系的讲解上由浅入深、循序渐进。
本书第Ⅰ部分是XML篇，包括以下几个主题：
XML
DTD
XML名称空间
本书第Ⅱ部分是XML Schema篇，详细讲解了XML Schema这一功能强大的模式语言。这部分内容包括以下几个主题：
XML Schema初窥
内置简单类型
自定义简单类型
复杂类型
派生复杂类型
一致性约束
引入其他的模式文档
本书第Ⅲ部分是解析篇，详细讲解了DOM、SAX、JDOM和dom4j解析XML文档。这部分内容包括以下几个主题：
使用DOM、SAX和JAXP解析XML文档
使用JDOM解析XML文档
使用dom4j解析XML文档
解析名称空间
本书第Ⅳ部分是XSLT篇，介绍了XSLT1.0/XPath 1.0，以及最新的XSLT 2.0/XPath 2.0。这部分内容包括以下两个主题：
XSLT 1.0
XSLT 2.0
本书第Ⅴ部分是XQuery篇，介绍了XML查询语言XQuery，以及在Java中执行XQuery查询的标准API —— XQJ。这部分内容包括以下两个主题：
XQuery
在Java中使用XQuery —— XQJ
本书示例程序的下载
本书完整的示例程序可以从博文视点的网站（http://www.broadview.com.cn）和笔者的个人网站上下载（http://www.sunxin.org）。
最后，衷心地希望本书能够给读者带来知识，带来阅读上的快乐，读者对本书的肯定就是笔者最大的欣慰。由于本书的内容较多、牵涉的技术较广，错误和疏漏之处在所难免，欢迎广大技术专家和读者指正。作者的联系方式是csunxin@sina.com，读者也可以上作者的网站发表意见，网址是：http://www.sunxin.org/。
目  录

第Ⅰ篇  XML篇
第1章  XML        2
1.1  XML的起源        2
1.2  W3C介绍        3
1.3  关于XML的两个问题        4
1.4  XML与HTML的比较        6
1.4.1  XML将数据与显示分开        6
1.4.2  XML对文档的格式要求更加严格        7
1.4.3  XML有且只能有一个根元素        8
1.5  XML的编辑工具        8
1.6  XML文档        12
1.6.1  XML文档的结构        12
1.6.2  在XMLSpy中创建XML文档        14
1.6.3  XML声明        15
1.6.4  文档类型声明        16
1.6.5  元素        17
1.6.6  注释        21
1.6.7  处理指令        22
1.6.8  空白处理        23
1.6.9  行尾处理        23
1.6.10  语言标识        23
1.7  格式良好的XML        24
1.8  小结        25
第2章  DTD        26
2.1  在XML文档中引入DTD        27
2.2  DTD的结构        29
2.2.1  元素类型声明        30
2.2.2  实体声明        34
2.2.3  属性表声明        37
2.2.4  记号声明        46
2.3  在XMLSpy中创建DTD文档        46
2.4  有效的XML        47
2.5  XML处理器/解析器        48
2.6  小结        49
第3章  XML名称空间        50
3.1  声明名称空间        50
3.2  名称空间在元素和属性中的运用        52
3.2.1  名称空间在元素中的运用        52
3.2.2  默认名称空间        54
3.2.3  名称空间在属性中的运用        55
3.3  名称空间和DTD        56
3.4  小结        58
第Ⅱ篇  XML Schema篇
第4章  XML Schema初窥        60
4.1  XML Schema推荐标准        60
4.2  XML Schema文档一瞥        61
4.3  XML Schema与DTD的比较        62
4.4  术语明晰        64
4.5  XML Schema概述        65
4.5.1  元素和属性的声明        65
4.5.2  元素和属性的类型        65
4.5.3  简单类型        66
4.5.4  复杂类型        68
4.5.5  全局声明和局部声明        69
4.5.6  模式与名称空间        70
4.5.7  在实例中引用模式文档        75
4.5.8  注解        78
4.6  在XMLSpy中创建模式文档        79
4.7  模式文档的验证        80
4.8  小结        80
第5章  内置简单类型        81
5.1  基于字符串的类型        83
5.1.1  string        83
5.1.2  normalizedString        83
5.1.3  token        84
5.1.4  Name        85
5.1.5  NCName        85
5.2  数字类型        86
5.2.1  float和double（浮点数和双精度浮点数）        86
5.2.2  decimal（小数）        86
5.2.3  integer（整数）        87
5.3  日期和时间类型        88
5.3.1  date        88
5.3.2  time        88
5.3.3  dateTime        89
5.3.4  gYear        89
5.3.5  gYearMonth        90
5.3.6  gMonth        90
5.3.7  gMonthDay        90
5.3.8  gDay        91
5.3.9  duration        91
5.4  其他数据类型        92
5.4.1  boolean        92
5.4.2  anyURI        92
5.4.3  QName        92
5.5  小结        93
第6章  自定义简单类型        94
6.1  面（facet）        95
6.1.1  限制范围        95
6.1.2  限制长度        96
6.1.3  指定精度        97
6.1.4  枚举值        98
6.1.5  模式匹配        98
6.1.6  空白处理        99
6.1.7  固定面        99
6.2  原子类型        100
6.3  列表类型        100
6.3.1  定义列表类型        100
6.3.2  限制列表类型        102
6.4  联合类型        104
6.4.1  定义联合类型        105
6.4.2  限制联合类型        106
6.5  阻止简单类型的派生        107
6.6  小结        108
第7章  复杂类型        109
7.1  从简单类型到复杂类型        110
7.2  xs:attribute元素的use、default和fixed属性        110
7.3  anyType        112
7.4  纯元素内容        112
7.4.1  sequence组        113
7.4.2  choice组        115
7.4.3  all组        117
7.5  元素的出现指示符        118
7.6  元素的默认值和固定值        122
7.7  空元素        124
7.8  混合内容        125
7.9  元素组        125
7.10  属性组        127
7.11  通配符        129
7.11.1  元素通配符        129
7.11.2  属性通配符        133
7.12  小结        134
第8章  派生复杂类型        135
8.1  扩展派生复杂类型        136
8.1.1  扩展简单内容        136
8.1.2  扩展纯元素内容        137
8.1.3  扩展混合内容        140
8.1.4  扩展空内容        141
8.2  限制派生复杂类型        142
8.2.1  限制简单内容        142
8.2.2  限制纯元素内容        143
8.2.3  限制混合内容        144
8.2.4  限制空内容        146
8.3  在实例文档中使用派生类型        147
8.4  替换组        149
8.5  抽象元素和类型        152
8.6  控制派生类型的创建和使用        153
8.7  小结        156
第Ⅲ篇  解析篇
第9章  一致性约束        158
9.1  unique约束        159
9.2  key约束        164
9.3  keyref约束        165
9.4  小结        167
第10章  引入其他的模式文档        168
10.1  包含        168
10.2  重定义        171
10.3  导入        172
10.4  小结        174
第11章  使用DOM、SAX和JAXP解析XML文档        176
11.1  DOM、SAX和JAXP概述        177
11.2  使用DOM解析XML文档        178
11.2.1  DOM结构模型        178
11.2.2  DOM树中的节点类型        180
11.2.3  DOM解析器工厂和
11.2.3  DOM解析器        186
11.2.4  JAXP的错误类和异常类        189
11.2.5  使用DOM解析XML文档的实例        190
11.3  使用SAX解析XML文档        203
11.3.1  SAX的处理机制        203
11.3.2  配置SAX解析器        207
11.3.3  SAX解析器工厂        208
11.3.4  SAX的异常类        210
11.3.5  ErrorHandler接口        212
11.3.6  使用SAX解析XML
11.2.3  文档的实例        213
11.4  使用XML Schema来
11.4  验证XML文档        224
114.1  模式工厂和验证        224
11.4.2  与解析API的集成        229
11.4.3  获取类型信息        229
11.5  小结        233
第12章  使用JDOM解析XML文档        234
12.1  下载并配置JDOM        235
12.2  JDOM API介绍        235
12.3  使用JDOM访问XML文档的实例        239
12.4  小结        241
第13章  使用dom4j解析XML文档        242
13.1  下载并配置dom4j        242
13.2  dom4j API介绍        243
13.3  使用dom4j访问XML文档的实例        247
13.3.1  使用XML Schema来验证XML文档        247
13.3.2  使用访问者模式遍历XML文档        249
13.3.3  使用dom4j的事件模型来访问XML文档        251
13.4  小结        254
第14章  解析名称空间        255
14.1  DOM和名称空间        256
14.2  SAX和名称空间        259
14.3  JDOM和名称空间        262
14.4  dom4j和名称空间        265
14.5  小结        268
第Ⅳ篇  XSLT篇
第15章  XSLT 1.0        270
15.1  XSLT概述        271
15.2  Xalan处理器        275
15.3  模板规则        276
15.4  <xsl:apply-templates>元素        277
15.5  <xsl:value-of>元素        278
15.6  <xsl:for-each>元素        281
15.7  匹配节点的模式        282
15.8  mode属性        284
15.9  内置的模板规则        285
15.10  对空白的处理        287
15.11  XPath语言        287
15.11.1  XPath上下文        287
15.11.2  位置路径        288
15.11.3  表达式        293
15.11.4  核心函数库        295
15.12  创建结果树        300
15.12.1  创建元素和属性        300
15.12.2  创建文本        305
15.12.3  创建处理指令        307
15.12.4  创建注释        307
15.12.5  复制节点        308
15.12.6  输出格式化的数字        309
15.13  条件处理        320
15.13.1  <xsl:if>        320
15.13.2  <xsl:choose>        321
15.14  排序        322
15.15  变量和参数        326
15.15.1  变量        326
15.15.2  参数        329
15.16  命名模板        330
15.17  合并样式表        331
15.17.1  导入样式表        332
15.17.2  包含样式表        333
15.18  模板规则冲突的解决        333
15.19  <xsl:output>元素        335
15.19.1  指定输出文档的格式        336
15.19.2  输出XML声明        336
15.19.3  输出文档类型定义        337
15.19.4  输出CDATA段        338
15.19.5  指定文档缩进        340
15.19.6  指定媒体类型        340
15.20  XSLT中的函数        340
15.21  数字格式化        341
15.22  查询和分组        343
15.23  处理多个输入文档        352
15.24  JAXP中的XSLT API        356
15.24.1  转换器工厂        356
15.24.2  Transformer和Templates        356
15.24.3  一个实例        358
15.25  在XMLSpy中创建样式表文档        360
15.26  小结        362
第16章  XSLT 2.0        363
16.1  Saxon处理器        364
16.2  XPath 2.0        365
16.2.1  一切都是序列        365
16.2.2  for表达式        366
16.2.3  条件表达式        367
16.2.4  限定性表达式        369
16.2.5  类型        371
16.2.6  日期和时间        372
16.2.7  函数        373
16.3  XSLT 2.0的新特性        375
16.3.1  分组        375
16.3.2  隐含文档节点（临时树）        381
16.3.3  使用<xsl:result-document>元素输出多个文件        383
16.3.4  <xsl:value-of>元素的改进        386
16.3.5  字符映射        386
16.3.6  自定义样式表函数        389
16.4  小结        390
第Ⅴ篇  XQuery篇
第17章  XQuery        392
17.1  XQuery简介        393
17.2  查看XQuery的查询结果        394
17.2.1  XMLSpy和Stylus Studio        394
17.2.2  Saxon        396
17.2.3  DataDirect XQuery        397
17.3  XQuery基础        398
17.3.1  处理模型        398
17.3.2  表达式上下文        398
17.3.3  数据模型        399
17.3.4  类型        400
17.3.5  注释        400
17.4  表达式        401
17.4.1  基本表达式        401
17.4.2  路径表达式        402
17.4.3  序列表达式        402
17.4.4  算术表达式        403
17.4.5  比较表达式        404
17.4.6  逻辑表达式        405
17.4.7  FLWOR表达式        406
17.4.8  有序和无序表达式        410
17.4.9  条件表达式        411
17.4.10  量化表达式        412
17.4.11  作用于序列类型的表达式        413
17.4.12  验证表达式        417
17.4.13  扩展表达式        418
17.5  查询的结构        419
17.5.1  主模块和库模块        419
17.5.2  版本声明        421
17.5.3  序言        421
17.5.4  设置器        422
17.5.5  名称空间声明        423
17.5.6  默认名称空间声明        424
17.5.7  模式导入        425
17.5.8  模块导入        426
17.5.9  变量声明        427
17.5.10  函数声明        430
17.5.11  选项声明        431
17.6  小结        432
第18章  在Java中使用
XQuery——XQJ        433
18.1  XQJ简介        433
18.2  开发一个XQJ应用        434
18.3  对XQuery上下文的支持        439
18.4  映射XQuery数据模型        440
18.5  对XQuery类型系统的支持        441
18.6  XQMetaData接口        441
18.7  小结        442
附录A  快速掌握HTML        443