XML入門經典(第5版)是由作者福思特 (Joe Fawcett)/奎思 (Liam R.E.Quin)/艾爾斯 (Danny Ayers) 所著的一本書。本書主要講述了XML的構建規則等等!
內容簡介
使用XML可以做太多的事情,從簡單的數據傳輸到提供多通道的內容,《XML入門經典(第5版)》將幫助你開啟XML之旅。它將帶領你飽覽一切你需要知道的有關這門強大語言的知識,包括它是什么,它如何工作,與之相關的技術都有哪些,以及如何應用它。你將很快了解如何操縱XML文檔,在數據庫中存儲XML,提取數據,利用Web服務,甚至將其應用于網頁和圖像顯示。在一個案例分析的協助下,你甚至會學到如何提高程序設計
作者簡介
Joe Fawcett是卡普蘭金融學院的軟件開發主管,他是微軟最早的xml的mvp之一。
liamr.e.quin是w3cxml活動領導者,xmlquery工作組以及xsl工作組的xsl-fo分組的聯系人。dannyayers在talis從事由他們主辦的語義網絡平臺的應用開發工作。
目錄
第Ⅰ部分 XML介紹
第1章 什么是XML3
1.1 初識XML:數據描述和標記語言3
1.1.1 二進制文件4
1.1.2 文本文件4
1.1.3 標記語言簡史5
1.2 XML的誕生5
1.3 XML的優點8
1.3.1 XML規則8
1.3.2 數據的分層表示形式9
1.3.3 通用性10
1.4 XML的實際應用11
1.4.1 數據和文檔11
1.4.2 XML場景12
1.4.3 XML技術13
1.5 小結19
第2章 良構的XML21
2.1 良構的定義21
2.2 在文本編輯器中創建XML22
2.2.1 禁止的字符22
2.2.2 XML序言22
2.2.3 創建元素24
2.2.4 屬性27
2.2.5 元素與屬性內容28
2.2.6 處理指令32
2.2.7 CDATA節32
2.3 高級XML解析34
2.3.1 XMl等價性34
2.3.2 空白處理35
2.3.3 錯誤處理36
2.4 XML信息集39
2.4.1 文檔信息項39
2.4.2 元素信息項39
2.4.3 屬性信息項40
2.4.4 處理指令信息項40
2.4.5 字符信息項40
2.4.6 注釋信息項40
2.4.7 名稱空間信息項40
2.4.8 文檔類型聲明信息項40
2.4.9 未擴展實體引用信息項41
2.4.10 未解析實體信息項41
2.4.11 符號信息項41
2.5 小結41
第3章 XML名稱空間43
3.1 名稱空間的定義43
3.2 需要名稱空間的原因44
3.3 選擇名稱空間的方法45
3.3.1 URL、URI和URN46
3.3.2 創建第一個名稱空間46
3.4 聲明名稱空間的方法47
3.4.1 名稱空間的作用域50
3.4.2 聲明多個名稱空間50
3.4.3 修改名稱空間定義52
3.5 名稱空間的實際應用55
3.5.1 XML Schema55
3.5.2 多名稱空間文檔55
3.6 使用名稱空間的時機59
3.6.1 何時需要使用名稱空間59
3.6.2 何時不需要使用名稱空間60
3.6.3 版本控制和名稱空間60
3.7 常見的名稱空間61
3.7.1 XML名稱空間61
3.7.2 XMLNS名稱空間62
3.7.3 XML Schema名稱空間62
3.7.4 XSLT名稱空間62
3.7.5 SOAP名稱空間63
3.7.6 WSDL名稱空間63
3.7.7 Atom名稱空間63
3.7.8 MathML名稱空間63
3.7.9 Docbook名稱空間64
3.8 小結64
第Ⅱ部分 驗證
第4章 文檔類型定義69
4.1 文檔類型定義的概念69
4.1.1 使用DTD70
4.1.2 使用jEdit70
4.1.3 詳述DTD73
4.1.4 DTD共享76
4.2 DTD剖析77
4.2.1 元素聲明77
4.2.2 屬性聲明85
4.2.3 實體聲明90
4.3 DTD的局限性94
4.4 小結94
第5章 XML Schema97
5.1 XML Schema的優點98
5.1.1 XML Schema使用XML語法98
5.1.2 XML Schema支持名稱空間98
5.1.3 XML Schema的數據類型98
5.1.4 XML Schema的內容模型99
5.1.5 XML Schema規范99
5.2 XML Schema實踐99
5.3 XML Schema的定義103
5.3.1 (schema)聲明103
5.3.2 (element)聲明107
5.3.3 混合內容115
5.3.4 (group)聲明115
5.3.5 (attribute)聲明117
5.3.6 通訊錄的XML Schema117
5.3.7 數據類型123
5.3.8 (simpleType)聲明129
5.4 創建一個來自多個文檔的架構133
5.4.1 (import)聲明134
5.4.2 (include)聲明137
5.5 XML Schema的開發文檔139
5.6 XML Schema 1.1141
5.6.1 寬松的規則141
5.6.2 (assert)142
5.7 小結143
第6章 RELAX NG與Schematron145
6.1 為什么需要更多的XML驗證方法146
6.2 設置環境146
6.3 使用RELAX NG147
6.3.1 理解RELAX NG基礎147
6.3.2 理解RELAX NG緊湊語法152
6.3.3 兩種RELAX NG格式的轉換154
6.3.4 約束內容155
6.3.5 在RELAX NG 架構中復用代碼157
6.4 使用Schematron161
6.4.1 理解Schematron基礎161
6.4.2 選擇Schematron版本162
6.4.3 理解基本過程162
6.4.4 編寫Schematron基本規則162
6.4.5 創建Schematron文檔164
6.4.6 向消息添加更多信息165
6.4.7 Schematron約束取值167
6.4.8 Schematron處理協約束169
6.4.9 在XML Schema中使用
Schematron170
6.5 小結173
第Ⅲ部分 處理
第7章 從XML中提取數據177
7.1 文檔模型:XML的內存表示177
7.1.1 初識模型:DOM、XDM與PSVI177
7.1.2 一個樣例DOM樹178
7.1.3 DOM節點類型179
7.1.4 DOM節點列表180
7.1.5 DOM的限制180
7.2 XPath語言181
7.2.1 XPath基礎181
7.2.2 XPath謂詞:完整的故事183
7.2.3 XPath步與軸185
7.2.4 XPath表達式186
7.2.5 XPath表達式中的變量189
7.2.6 XPath 2中的新表達式190
7.2.7 XPath函數194
7.2.8 XPath集合運算196
7.2.9 XPath與名稱空間196
7.3 小結198
第8章 XSLT199
8.1 XSLT的用途200
8.1.1 XSLT作為聲明性語言200
8.1.2 XSLT作為功能性語言201
8.2 建立XSLT開發環境202
8.2.1 設置.NET版本的SAXON環境202
8.2.2 設置Java版本的Saxon環境203
8.3 基本的XSLT元素204
8.3.1 (xsl:stylesheet)元素205
8.3.2 (xsl:template)元素206
8.3.3 (xsl:apply-templates)元素209
8.3.4 (xsl:value-of)元素209
8.3.5 (xsl:for-each)元素211
8.3.6 推處理與拉處理211
8.3.7 XPath在XSLT中的作用211
8.3.8 使用命名模板213
8.3.9 (xsl:call-template)元素216
8.3.10 XSLT中document()函數217
8.3.11 條件邏輯222
8.3.12 (xsl:param)元素226
8.3.13 (xsl:sort)元素227
8.3.14 (xsl:copy)與(xsl:copy-of)元素229
8.4 在XSLT中復用代碼231
8.4.1 (xsl:include)元素231
8.4.2 (xsl:import)元素234
8.4.3 (xsl:template)Mode屬性234
8.5 理解內置模板與內置規則237
8.6 使用XSLT 2.0238
8.6.1 理解XSLT 2.0中的數據類型239
8.6.2 創建自定義函數239
8.6.3 創建多個輸出文檔243
8.6.4 使用collection()函數244
8.6.5 XSLT 2.0分組245
8.6.6 XSLT 2.0處理非XML輸入248
8.7 XSLT與XPATH 3.0:未來展望253
8.8 小結254
第Ⅳ部分 數據庫
第9章 XQuery257
9.1 XQuery、XPath和XSLT257
9.1.1 XQuery和XSLT258
9.1.2 XQuery和XPath258
9.2 XQuery實踐259
9.2.1 獨立XQuery應用259
9.2.2 SQL語句259
9.2.3 Java或其他編程語言調用259
9.2.4 原生XML服務259
9.2.5 無處不在的XQuery259
9.3 XQuery基礎模塊262
9.3.1 FLWOR表達式、模塊以及函數262
9.3.2 無默認上下文項的XQuery表達式266
9.4 查詢表達式詳解266
9.4.1 版本聲明267
9.4.2 序體267
9.4.3 查詢體272
9.5 一些可選的XQuery特性278
9.5.1 XQuery和XPath全文索引278
9.5.2 XQuery更新功能279
9.5.3 XQuery腳本擴展279
9.6 即將到來的XQuery 3.0279
9.6.1 group和window280
9.6.2 count子句281
9.6.3 try和catch281
9.6.4 switch表達式282
9.6.5 函數項和高階函數283
9.6.6 JSON特性284
9.6.7 XQuery、關聯數據和語義網284
9.7 小結284
第10章 XML與數據庫287
10.1 了解數據庫為什么需要能處理XML287
10.2 分析數據庫所需的XML功能288
10.2.1 檢索文檔289
10.2.2 在文檔中檢索數據289
10.2.3 更新XML文檔289
10.2.4 以XML形式展示關系型數據289
10.2.5 以關系型數據的形式顯示XML數據290
10.3 XML與MySQL數據庫290
10.3.1 安裝MySQL290
10.3.2 在MySQL中添加信息291
10.3.3 MySQL查詢命令293
10.3.4 用MySQL更新XML數據297
10.3.5 在MySQL中使用XML298
10.3.6 MySQL客戶端對XML的支持298
10.4 XML與SQL Server數據庫299
10.4.1 安裝SQL Server299
10.4.2 用XML顯示關系型數據300
10.4.3 了解XML數據類型313
10.4.4 為xml數據類型創建索引316
10.4.5 SQL Server的W3C XML Schema323
10.4.6 處理帶名稱空間的文檔324
10.5 XML與exist數據庫325
10.5.1 下載并安裝eXist325
10.5.2 交互操作eXist327
10.6 小結335
第Ⅴ部分 程序設計
第11章 事件驅動程序設計339
11.1 理解順序處理339
11.2 在順序處理中使用SAX340
11.2.1 準備工作341
11.2.2 接收SAX事件341
11.2.3 處理無效內容352
11.2.4 DTDHandler接口361
11.2.5 EntityResolver接口361
11.2.6 了解特性與屬性362
11.3 XMLREADER366
11.3.1 XmlReaderSettings372
11.3.2 管理外部資源376
11.4 小結377
第12章 LINQ to XML379
12.1 LINQ的概念379
12.1.1 需要LINQ to XML的原因381
12.1.2 使用LINQ to XML382
12.2 創建XML文檔384
12.2.1 創建帶名稱空間的文檔386
12.2.2 創建帶有前綴名的名稱空間的文檔387
12.3 從XML文檔中提取數據387
12.4 修改文檔394
12.4.1 添加內容394
12.4.2 刪除文檔中的內容395
12.4.3 更新和替換文檔中的內容396
12.5 轉換文檔397
12.6 VB.NET的XML屬性399
12.6.1 VB.NET的XML文本399
12.6.2 VB.NET的坐標軸屬性402
12.6.3 在VB.NET中管理名稱空間404
12.7 小結404
第Ⅵ部分 通信
第13章 RSS、Atom和內容聚合409
13.1 聚合409
13.1.1 XML聚合410
13.1.2 聚合系統412
13.1.3 格式剖析414
13.2 使用新聞feed422
13.2.1 新聞閱讀器423
13.2.2 數據質量423
13.3 一個簡單的聚合器423
13.3.1 feed模型424
13.3.2 程序流程426
13.3.3 實現程序426
13.3.4 用XSLT轉換RSS格式443
13.4 幾個有用的網站地址452
13.5 小結453
第14章 Web服務455
14.1 什么是遠程過程調用455
14.2 RPC協議456
14.2.1 DCOM457
14.2.2 CORBA與IIOP458
14.2.3 Java RMI458
14.3 新的RPC協議——Web服務459
14.3.1 同源策略460
14.3.2 理解XML-RPC461
14.3.2 選擇網絡傳輸463
14.4 理解REST服務473
14.5 Web服務的堆棧技術477
14.5.1 SOAP477
14.5.2 WSDL478
14.5.3 UDDI479
14.5.4 相關規范479
14.6 小結481
第15章 SOAP和WSDL483
15.1 SOAP基礎483
15.2 RPC新協議——SOAP484
15.2.1 SOAP與REST對比488
15.2.2 基本的SOAP消息488
15.2.3 比較復雜的SOAP交互496
15.3 定義Web服務語言——WSDL508
15.4.1 (definitions)509
15.4.2 (types)509
15.4.3 (messages)509
15.4.4 (portTypes)510
15.4.5 (binding)510
15.4.6 (soap:body)512
15.4.7 (service)513
15.4.8 其他綁定方式516
15.4 小結519
第16章 AJAX521
16.1 AJAX概述521
16.1.1 AJAX提供反饋521
16.1.2 使用AJAX加載未完成數據522
16.1.3 AJAX執行異步操作522
16.2 JavaScript簡介523
16.2.1 Web瀏覽器控制臺523
16.2.2 值、表達式與變量524
16.2.3 控制流語句526
16.2.4 Properties、Objects、Functions 與 Classes527
16.3 XMLHttpRequest函數528
16.4 使用HTTP方法與AJAX532
16.5 可達性考慮533
16.6 jQuery庫534
16.6.1 學習jQuery535
16.6.2 領域專用語言(DSL)方法535
16.6.3 jQuery插件和附加庫535
16.7 JSON與AJAX538
16.7.1 JSON示例538
16.7.2 JSON語法539
16.7.3 JSON與jQuery540
16.7.4 JSONP與CORS540
16.8 web服務器后端540
16.8.1 發送圖像以及其他非文本數據541
16.8.2 性能541
16.8.3 服務器日志是朋友541
16.9 一個更復雜的例子542
16.10 小結546
第Ⅶ部分 顯示
第17章 XHTML和HTML 5551
17.1 SGML的背景552
17.1.1 HTML和SGML552
17.1.2 XML和SGML552
17.2 開放式Web平臺553
17.3 XHTML簡介554
17.3.1 XHTML的(html)元素554
17.3.2 XHTML的(head)元素555
17.3.3 XHTML的(body)元素557
17.3.4 更多有關高級HTML的主題567
17.4 XHTML和HTML:問題以及解決方法568
17.5 級聯樣式表(CASCADING STYLE SHEETS,CSS)569
17.5.1 CSS等級和版本569
17.5.2 CSS一覽570
17.5.3 CSS選擇器572
17.5.4 CSS屬性574
17.5.5 CSS特殊規則578
17.5.6 CSS和XML579
17.5.7 分離樣式和標記:低調的CSS579
17.6 Unobtrusive JavaScript技術580
17.7 HTML 5580
17.7.1 HTML 5的優點580
17.7.2 HTML 5的注意事項581
17.7.3 HTML 5中的新元素581
17.8 小結582
第18章 可伸縮矢量圖形585
18.1 可伸縮矢量圖形和位圖585
18.1.1 過程式圖形585
18.1.2 聲明式圖形586
18.1.3 位圖圖像586
18.1.4 矢量圖像588
18.1.5 SVG圖像588
18.2 SVG圖像模型589
18.3 SVG和CSS591
18.4 SVG工具592
18.5 SVG基本內置圖形594
18.5.1 矩形595
18.5.2 圓形596
18.5.3 橢圓形596
18.5.4 直線597
18.5.5 折線和多邊形597
18.5.6 SVG路徑(SVG Path)598
18.6 SVG轉換和聚合601
18.6.1 轉換601
18.6.2 聚合602
18.7 SVG定義和元數據602
18.7.1 SVG的(title)元素和(desc)元素602
18.7.2 SVG的(metadata)元素603
18.7.3 SVG的(defs)元素以及可重用內容604
18.8 視窗和坐標604
18.9 SVG顏色和梯度605
18.10 在SVG中使用位圖圖像607
18.11 SVG文本和字體608
18.12 實現SVG動畫的4種方法609
18.12.1 同步多媒體集成語言(SMIL)609
18.12.2 腳本動畫610
18.12.3 CSS動畫611
18.12.4 外部庫文件611
18.13 SVG和HTML 5611
18.14 SVG和Web應用613
18.15 使用XQUERY或XSLT生成SVG圖像613
18.16 資源614
18.17 小結614
第Ⅷ部分 案例分析
第19章 案例分析:XML在出版業中的應用617
19.1 背景617
19.2 產品介紹:目前的工作流程618
19.3 引入一個全新的基于Web的工作流程618
19.3.1 協商618
19.3.2 編寫項目文檔619
19.3.3 原型設計619
19.4 創建新流程619
19.4.1 富有挑戰性的條件619
19.4.2 新的工作流620
19.4.3 記錄轉變過程和用到的技術620
19.4.4 成本收益分析621
19.4.5 部署621
19.5 一些技術要點622
19.5.1 XQuery和模塊622
19.5.2 XInclude622
19.5.3 方程和MathML623
19.5.4 XProc:一種XML管道語言625
19.5.5 XForms、REST和XQuery626
19.5.6 使用XSL-FO將對象格式化為PDF626
19.5.7 文檔類XML標簽628
19.5.8 人文科學類標簽:TEI629
19.6 Hoy Books的網站629
19.7 小結633
附錄A 習題參考答案635
附錄B XPath函數655
附錄C XML Schema數據類型673