XML入門經(jīng)典(第5版)是由作者福思特 (Joe Fawcett)/奎思 (Liam R.E.Quin)/艾爾斯 (Danny Ayers) 所著的一本書。本書主要講述了XML的構(gòu)建規(guī)則等等!
內(nèi)容簡介
使用XML可以做太多的事情,從簡單的數(shù)據(jù)傳輸?shù)教峁┒嗤ǖ赖膬?nèi)容,《XML入門經(jīng)典(第5版)》將幫助你開啟XML之旅。它將帶領(lǐng)你飽覽一切你需要知道的有關(guān)這門強大語言的知識,包括它是什么,它如何工作,與之相關(guān)的技術(shù)都有哪些,以及如何應(yīng)用它。你將很快了解如何操縱XML文檔,在數(shù)據(jù)庫中存儲XML,提取數(shù)據(jù),利用Web服務(wù),甚至將其應(yīng)用于網(wǎng)頁和圖像顯示。在一個案例分析的協(xié)助下,你甚至?xí)W(xué)到如何提高程序設(shè)計
作者簡介
Joe Fawcett是卡普蘭金融學(xué)院的軟件開發(fā)主管,他是微軟最早的xml的mvp之一。
liamr.e.quin是w3cxml活動領(lǐng)導(dǎo)者,xmlquery工作組以及xsl工作組的xsl-fo分組的聯(lián)系人。dannyayers在talis從事由他們主辦的語義網(wǎng)絡(luò)平臺的應(yīng)用開發(fā)工作。
目錄
第Ⅰ部分 XML介紹
第1章 什么是XML3
1.1 初識XML:數(shù)據(jù)描述和標(biāo)記語言3
1.1.1 二進制文件4
1.1.2 文本文件4
1.1.3 標(biāo)記語言簡史5
1.2 XML的誕生5
1.3 XML的優(yōu)點8
1.3.1 XML規(guī)則8
1.3.2 數(shù)據(jù)的分層表示形式9
1.3.3 通用性10
1.4 XML的實際應(yīng)用11
1.4.1 數(shù)據(jù)和文檔11
1.4.2 XML場景12
1.4.3 XML技術(shù)13
1.5 小結(jié)19
第2章 良構(gòu)的XML21
2.1 良構(gòu)的定義21
2.2 在文本編輯器中創(chuàng)建XML22
2.2.1 禁止的字符22
2.2.2 XML序言22
2.2.3 創(chuàng)建元素24
2.2.4 屬性27
2.2.5 元素與屬性內(nèi)容28
2.2.6 處理指令32
2.2.7 CDATA節(jié)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 小結(jié)41
第3章 XML名稱空間43
3.1 名稱空間的定義43
3.2 需要名稱空間的原因44
3.3 選擇名稱空間的方法45
3.3.1 URL、URI和URN46
3.3.2 創(chuàng)建第一個名稱空間46
3.4 聲明名稱空間的方法47
3.4.1 名稱空間的作用域50
3.4.2 聲明多個名稱空間50
3.4.3 修改名稱空間定義52
3.5 名稱空間的實際應(yīng)用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 小結(jié)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 小結(jié)94
第5章 XML Schema97
5.1 XML Schema的優(yōu)點98
5.1.1 XML Schema使用XML語法98
5.1.2 XML Schema支持名稱空間98
5.1.3 XML Schema的數(shù)據(jù)類型98
5.1.4 XML Schema的內(nèi)容模型99
5.1.5 XML Schema規(guī)范99
5.2 XML Schema實踐99
5.3 XML Schema的定義103
5.3.1 (schema)聲明103
5.3.2 (element)聲明107
5.3.3 混合內(nèi)容115
5.3.4 (group)聲明115
5.3.5 (attribute)聲明117
5.3.6 通訊錄的XML Schema117
5.3.7 數(shù)據(jù)類型123
5.3.8 (simpleType)聲明129
5.4 創(chuàng)建一個來自多個文檔的架構(gòu)133
5.4.1 (import)聲明134
5.4.2 (include)聲明137
5.5 XML Schema的開發(fā)文檔139
5.6 XML Schema 1.1141
5.6.1 寬松的規(guī)則141
5.6.2 (assert)142
5.7 小結(jié)143
第6章 RELAX NG與Schematron145
6.1 為什么需要更多的XML驗證方法146
6.2 設(shè)置環(huán)境146
6.3 使用RELAX NG147
6.3.1 理解RELAX NG基礎(chǔ)147
6.3.2 理解RELAX NG緊湊語法152
6.3.3 兩種RELAX NG格式的轉(zhuǎn)換154
6.3.4 約束內(nèi)容155
6.3.5 在RELAX NG 架構(gòu)中復(fù)用代碼157
6.4 使用Schematron161
6.4.1 理解Schematron基礎(chǔ)161
6.4.2 選擇Schematron版本162
6.4.3 理解基本過程162
6.4.4 編寫Schematron基本規(guī)則162
6.4.5 創(chuàng)建Schematron文檔164
6.4.6 向消息添加更多信息165
6.4.7 Schematron約束取值167
6.4.8 Schematron處理協(xié)約束169
6.4.9 在XML Schema中使用
Schematron170
6.5 小結(jié)173
第Ⅲ部分 處理
第7章 從XML中提取數(shù)據(jù)177
7.1 文檔模型:XML的內(nèi)存表示177
7.1.1 初識模型:DOM、XDM與PSVI177
7.1.2 一個樣例DOM樹178
7.1.3 DOM節(jié)點類型179
7.1.4 DOM節(jié)點列表180
7.1.5 DOM的限制180
7.2 XPath語言181
7.2.1 XPath基礎(chǔ)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函數(shù)194
7.2.8 XPath集合運算196
7.2.9 XPath與名稱空間196
7.3 小結(jié)198
第8章 XSLT199
8.1 XSLT的用途200
8.1.1 XSLT作為聲明性語言200
8.1.2 XSLT作為功能性語言201
8.2 建立XSLT開發(fā)環(huán)境202
8.2.1 設(shè)置.NET版本的SAXON環(huán)境202
8.2.2 設(shè)置Java版本的Saxon環(huán)境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()函數(shù)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中復(fù)用代碼231
8.4.1 (xsl:include)元素231
8.4.2 (xsl:import)元素234
8.4.3 (xsl:template)Mode屬性234
8.5 理解內(nèi)置模板與內(nèi)置規(guī)則237
8.6 使用XSLT 2.0238
8.6.1 理解XSLT 2.0中的數(shù)據(jù)類型239
8.6.2 創(chuàng)建自定義函數(shù)239
8.6.3 創(chuàng)建多個輸出文檔243
8.6.4 使用collection()函數(shù)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 小結(jié)254
第Ⅳ部分 數(shù)據(jù)庫
第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應(yīng)用259
9.2.2 SQL語句259
9.2.3 Java或其他編程語言調(diào)用259
9.2.4 原生XML服務(wù)259
9.2.5 無處不在的XQuery259
9.3 XQuery基礎(chǔ)模塊262
9.3.1 FLWOR表達式、模塊以及函數(shù)262
9.3.2 無默認(rèn)上下文項的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 函數(shù)項和高階函數(shù)283
9.6.6 JSON特性284
9.6.7 XQuery、關(guān)聯(lián)數(shù)據(jù)和語義網(wǎng)284
9.7 小結(jié)284
第10章 XML與數(shù)據(jù)庫287
10.1 了解數(shù)據(jù)庫為什么需要能處理XML287
10.2 分析數(shù)據(jù)庫所需的XML功能288
10.2.1 檢索文檔289
10.2.2 在文檔中檢索數(shù)據(jù)289
10.2.3 更新XML文檔289
10.2.4 以XML形式展示關(guān)系型數(shù)據(jù)289
10.2.5 以關(guān)系型數(shù)據(jù)的形式顯示XML數(shù)據(jù)290
10.3 XML與MySQL數(shù)據(jù)庫290
10.3.1 安裝MySQL290
10.3.2 在MySQL中添加信息291
10.3.3 MySQL查詢命令293
10.3.4 用MySQL更新XML數(shù)據(jù)297
10.3.5 在MySQL中使用XML298
10.3.6 MySQL客戶端對XML的支持298
10.4 XML與SQL Server數(shù)據(jù)庫299
10.4.1 安裝SQL Server299
10.4.2 用XML顯示關(guān)系型數(shù)據(jù)300
10.4.3 了解XML數(shù)據(jù)類型313
10.4.4 為xml數(shù)據(jù)類型創(chuàng)建索引316
10.4.5 SQL Server的W3C XML Schema323
10.4.6 處理帶名稱空間的文檔324
10.5 XML與exist數(shù)據(jù)庫325
10.5.1 下載并安裝eXist325
10.5.2 交互操作eXist327
10.6 小結(jié)335
第Ⅴ部分 程序設(shè)計
第11章 事件驅(qū)動程序設(shè)計339
11.1 理解順序處理339
11.2 在順序處理中使用SAX340
11.2.1 準(zhǔn)備工作341
11.2.2 接收SAX事件341
11.2.3 處理無效內(nèi)容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 小結(jié)377
第12章 LINQ to XML379
12.1 LINQ的概念379
12.1.1 需要LINQ to XML的原因381
12.1.2 使用LINQ to XML382
12.2 創(chuàng)建XML文檔384
12.2.1 創(chuàng)建帶名稱空間的文檔386
12.2.2 創(chuàng)建帶有前綴名的名稱空間的文檔387
12.3 從XML文檔中提取數(shù)據(jù)387
12.4 修改文檔394
12.4.1 添加內(nèi)容394
12.4.2 刪除文檔中的內(nèi)容395
12.4.3 更新和替換文檔中的內(nèi)容396
12.5 轉(zhuǎn)換文檔397
12.6 VB.NET的XML屬性399
12.6.1 VB.NET的XML文本399
12.6.2 VB.NET的坐標(biāo)軸屬性402
12.6.3 在VB.NET中管理名稱空間404
12.7 小結(jié)404
第Ⅵ部分 通信
第13章 RSS、Atom和內(nèi)容聚合409
13.1 聚合409
13.1.1 XML聚合410
13.1.2 聚合系統(tǒng)412
13.1.3 格式剖析414
13.2 使用新聞feed422
13.2.1 新聞閱讀器423
13.2.2 數(shù)據(jù)質(zhì)量423
13.3 一個簡單的聚合器423
13.3.1 feed模型424
13.3.2 程序流程426
13.3.3 實現(xiàn)程序426
13.3.4 用XSLT轉(zhuǎn)換RSS格式443
13.4 幾個有用的網(wǎng)站地址452
13.5 小結(jié)453
第14章 Web服務(wù)455
14.1 什么是遠程過程調(diào)用455
14.2 RPC協(xié)議456
14.2.1 DCOM457
14.2.2 CORBA與IIOP458
14.2.3 Java RMI458
14.3 新的RPC協(xié)議——Web服務(wù)459
14.3.1 同源策略460
14.3.2 理解XML-RPC461
14.3.2 選擇網(wǎng)絡(luò)傳輸463
14.4 理解REST服務(wù)473
14.5 Web服務(wù)的堆棧技術(shù)477
14.5.1 SOAP477
14.5.2 WSDL478
14.5.3 UDDI479
14.5.4 相關(guān)規(guī)范479
14.6 小結(jié)481
第15章 SOAP和WSDL483
15.1 SOAP基礎(chǔ)483
15.2 RPC新協(xié)議——SOAP484
15.2.1 SOAP與REST對比488
15.2.2 基本的SOAP消息488
15.2.3 比較復(fù)雜的SOAP交互496
15.3 定義Web服務(wù)語言——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 小結(jié)519
第16章 AJAX521
16.1 AJAX概述521
16.1.1 AJAX提供反饋521
16.1.2 使用AJAX加載未完成數(shù)據(jù)522
16.1.3 AJAX執(zhí)行異步操作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函數(shù)528
16.4 使用HTTP方法與AJAX532
16.5 可達性考慮533
16.6 jQuery庫534
16.6.1 學(xué)習(xí)jQuery535
16.6.2 領(lǐng)域?qū)S谜Z言(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服務(wù)器后端540
16.8.1 發(fā)送圖像以及其他非文本數(shù)據(jù)541
16.8.2 性能541
16.8.3 服務(wù)器日志是朋友541
16.9 一個更復(fù)雜的例子542
16.10 小結(jié)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 更多有關(guān)高級HTML的主題567
17.4 XHTML和HTML:問題以及解決方法568
17.5 級聯(lián)樣式表(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特殊規(guī)則578
17.5.6 CSS和XML579
17.5.7 分離樣式和標(biāo)記:低調(diào)的CSS579
17.6 Unobtrusive JavaScript技術(shù)580
17.7 HTML 5580
17.7.1 HTML 5的優(yōu)點580
17.7.2 HTML 5的注意事項581
17.7.3 HTML 5中的新元素581
17.8 小結(jié)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基本內(nèi)置圖形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轉(zhuǎn)換和聚合601
18.6.1 轉(zhuǎn)換601
18.6.2 聚合602
18.7 SVG定義和元數(shù)據(jù)602
18.7.1 SVG的(title)元素和(desc)元素602
18.7.2 SVG的(metadata)元素603
18.7.3 SVG的(defs)元素以及可重用內(nèi)容604
18.8 視窗和坐標(biāo)604
18.9 SVG顏色和梯度605
18.10 在SVG中使用位圖圖像607
18.11 SVG文本和字體608
18.12 實現(xiàn)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應(yīng)用613
18.15 使用XQUERY或XSLT生成SVG圖像613
18.16 資源614
18.17 小結(jié)614
第Ⅷ部分 案例分析
第19章 案例分析:XML在出版業(yè)中的應(yīng)用617
19.1 背景617
19.2 產(chǎn)品介紹:目前的工作流程618
19.3 引入一個全新的基于Web的工作流程618
19.3.1 協(xié)商618
19.3.2 編寫項目文檔619
19.3.3 原型設(shè)計619
19.4 創(chuàng)建新流程619
19.4.1 富有挑戰(zhàn)性的條件619
19.4.2 新的工作流620
19.4.3 記錄轉(zhuǎn)變過程和用到的技術(shù)620
19.4.4 成本收益分析621
19.4.5 部署621
19.5 一些技術(shù)要點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標(biāo)簽628
19.5.8 人文科學(xué)類標(biāo)簽:TEI629
19.6 Hoy Books的網(wǎng)站629
19.7 小結(jié)633
附錄A 習(xí)題參考答案635
附錄B XPath函數(shù)655
附錄C XML Schema數(shù)據(jù)類型673