瘋狂 XML 講義, 3/e

瘋狂 XML 講義, 3/e

作者: 李剛
出版社: 電子工業
出版在: 2019-10-01
ISBN-13: 9787121375026
ISBN-10: 7121375028




內容描述


主要分為五個部分。第一部分介紹了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概述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 some/every判斷表達式281
8.6 XPath 2.0的類型支持282
8.7內置函數庫283
8.7.1字符串相關函數283
8.7.2數值相關函數285
8.7.3日期和時間相關函數286
8.7.4 boolean值相關函數288
8.7.5節點相關函數289
8.7. 6序列相關函數290
8.7.7 XPath 3.x新增的行內函數與動態函數調用292
8.8本章小結292
 
第9章DOM、SAX和JAXP解析293
9.1 DOM、SAX和JAXP概述294
9.2 JAXP的DOM支持299
9.2.1 XML文檔和DOM模型299
9.2.2 DOM樹中的對像類型301
9.2.3 DOM解析器301
9.2.4使用DTD驗證XML文檔302
9.2.5使用DOM解析XML文檔304
9.2.6使用DOM創建XML文檔307
9.2. 7使用DOM修改XML文檔309
9.2.8解析DTD信息310
9.2.9 DOM和命名空間313
9.3 JAXP的SAX支持314
9.3.1 SAX的處理機制314
9.3.2 SAX解析器和監聽器315
9.3.3使用DTD驗證XML文檔的有效性319
9.3.4使用SAX解析XML文檔320
9.3.5 SAX和命名空間323
9.4 DOM和SAX的比較326
9.5使用XML Schema驗證XML文檔的有效性327
9.5.1 SchemaFactory和驗證327
9.5.2獲取節點的類型信息331
9.6瀏覽器對DOM的支持333
9.7本章小結335
本章練習336
 
第10章使用dom4j處理XML文檔337
10.1 dom4j簡介338
10.1.1 dom4j的封裝和優勢338
10.1.2下載和安裝dom4j 339
10.2 dom4j常用API 340
10.3使用dom4j訪問XML文檔341
10.3.1驗證XML文檔的有效性341
10.3.2使用dom4j解析XML文檔342
10.3.3使用訪問者模式遍歷XML文檔344
10.4使用dom4j創建XML文檔346
10.5修改XML文檔347
10.6使用dom4j獲取命名空間信息348
10.7本章小結350
本章練習351
 
第11章使用JDOM處理XML文檔352
11.1 JDOM簡介353
11.1.1 JDOM常用API 353
11.1.2下載和安裝JDOM 354
11.2使用JDOM訪問XML文檔的實例355
11.2.1驗證XML文檔的有效性355
11.2.2使用JDOM解析XML文檔356
11.3使用JDOM創建XML文檔358
11.4修改XML文檔359
11.5使用JDOM獲取命名空間信息360
11.6選擇dom4j還是JDOM 362
11.7本章小結363
本章練習363
 
第12章XQuery詳解364
12.1 XQuery簡介365
12.1.1 XQuery和XPath的關係365
12.1.2 XQuery和XSLT的關係366
12.2使用XQuery 366
12.2.1使用XMLSpy查看XQuery查詢結果367
12.2.2使用Saxon執行XQuery查詢368
12.3基本表達式369
12.3. 1直接量369
12.3.2變量引用369
12.3.3圓括號表達式369
12.3.4上下文項表達式369
12.3.5函數調用370
12.4序列表達式370
12.4.1構造序列370
12.4.2過濾表達式370
12.4.3組合節點序列371
12.5算術表達式372
12.6比較表達式373
12.6.1值比較373
12.6.2通用比較373
12.6.3節點比較374
12.7邏輯表達式374
12.8構造器375
12.8.1直接構造375
12.8.2計算構造375
12.9 FLWOR表達式376
12.9 .1 for、let和return子句376
12.9.2 where子句378
12.9.3 order by子句378
12.10 if表達式379
12.11 some/every判斷表達式379
12.12與序列類型有關的表達式380
12.12.1 instance of 380
12.12.2 typeswitch 380
12.12.3 cast 381
12.12.4 castable 382
12.13模塊和序言382
12.13.1序言382
12.13.2版本聲明382
12.13.3模塊聲明383
12.13.4設置器383
12.13.5導入設置385
12.13.6命名空間聲明387
12.13.7默認命名空間聲明387
12.13.8變量聲明388
12.13.9函數聲明389
12.13.10選項聲明390
12.14 XQuery 3的數組和Map 391
12.14.1數組支持391
12.14.2 Map支持392
12.14.3數組和Map支持的“?”運算符393
12.15使用XQJ執行XQuery查詢394
12.15.1 XQJ和JDBC的類似性394
12.15.2 XQJ的編程步驟395
12.16本章小結398
 
第13章Web Service詳解399
13.1 XML和Web Service 400
13.1.1 Web Service概述400
13.1.2 Web Service平台概述401
13.1.3 Web Service的廣泛應用402
13.2 SOA和雲計算404
13.2.1 SOA和Web Service 404
13.2.2雲計算和Web Service 405
13.3 Web Service開發406
13.3.1 CXF概述406
13.3.2下載和安裝CXF 407
13.3.3使用CXF開發Web Service 408
13.3.4客戶端開發413
13.3.5複雜類型的處理415
13.4 XML和WSDL 417
13.4.1 WSDL基本語法418
13.4.2 portType元素420
13.4.3 binding元素422
13.4. 4 service元素424
13.5 XML和SOAP協議425
13.5.1使用攔截器425
13.5.2 SOAP基本語法428
13.5.3 Header元素429
13.5.4 Body元素430
13.5.5 Fault元素431
13.5.6 SOAP、WSDL和UDDI 432
13.5.7使用攔截器進行權限控制433
13.6整合Spring開發Web Service 436
13.6.1在Spring中使用CXF 436
13.6.2通過Spring啟用CXF攔截器440
13.6.3在Spring容器中配置Web Service客戶端440
13.7本章小結443
 
第14章基於XML的電子公告系統444
14.1系統設計445
14.2設計XML文檔446
14.2.1保存狀態的XML文檔446
14.2.2定義XML Schema 448
14.3定義XSLT樣式單450
14.3.1為公告列表定義樣式單450
14.3.2為用戶評論設計樣式單452
14.4實現控制器454
14.4.1添加公告454
14.4.2查看評論列表457
14.4.3添加評論458
14.5本章小結461
本章練習461
 
第15章Web Service案例:電子拍賣系統462
15.1系統功能簡介和架構設計463
15.1.1系統功能簡介46


作者介紹


李剛,十餘年軟件開發從業經驗,瘋狂軟件教育中心教學總監。
瘋狂Java實訓營創始人,瘋狂Java體係原創圖書作者。廣東技術師範學院計算機科學系兼職副教授,CSDN特邀講師。培訓的學生已在騰訊、阿里、華為、IBM、網易、唯品會、電信盈科等名企就職。
國內知名高端IT技術圖書作家,已出版《瘋狂Java講義》《瘋狂Python講義》《瘋狂Android講義》《輕量級Java EE企業應用實戰》等著作。其中瘋狂Java體系圖書均已沉澱多年,贏得極高的市場認同,多次重印,多部著作印刷數量超過10萬冊,並被多所“985”“211”院校選作教材,部分圖書已被翻譯成繁體中文版,授權到台灣。




相關書籍

從大數據到智能製造

作者 李傑 倪軍 王安正

2019-10-01

基於 Ionic 的移動 App 開發

作者 克裡斯•格裡菲斯 (Chris Griffith)

2019-10-01

高性能 PHP7

作者 AltafHussain

2019-10-01