內容簡介
本書詳細講述了如何在OracleDatabase10g上創建和部署支持XML的電子商務應用程式。本書由OracleXML開發小組的成員撰寫,從XML標準等概念著手,內容涵蓋OracleXMLDatabase10g(XMLDB)以及OracleXMLDevelop’sKit10g(XDK)的所有內容,並講解了用於Java、C、C++和PL/SQL應用程式開發的OracleXML技術
目 錄
第Ⅰ部分 Oracle與XML標準
第1章 XML簡介 3
1.1 XML文檔 4
1.1.1 前序 5
1.1.2 主體 5
1.2 結構規範的XML文檔 6
1.3 有效的XML文檔 7
1.4 XML命名空間 8
1.5 XML與資料庫 9
1.6 資料庫模式與XML文檔 10
1.7 小結 13
第2章 使用DOM、SAX、JAXB和
StAX訪問XM L 15
2.1 解析和綁定XML文檔 16
2.2 使用DOM訪問XML 17
2.2.1 DOM API簡介 19
2.2.2 DOM Level 2 21
2.2.3 DOM Level 3 24
2.2.4 Oracle DOM API在C語言中
的應用程式 26
2.3 使用SAX訪問XML 26
2.3.1 SAX Level 1和Level 2 27
2.3.2 SAX API的用法 30
2.3.3 C語言版本的Oracle SAX API 35
2.4 使用Java綁定訪問XML 39
2.4.1 輸入的XML模式 40
2.4.2 生成XML類 40
2.4.3 綁定至XML實例 40
2.4.4 使用Java應用程式創建XML
文檔 42
2.5 使用StAX訪問XML 42
2.6 最佳實踐 44
2.6.1 DTD高速快取 44
2.6.2 忽略<!DOCTYPE>標記 44
2.6.3 文檔間的剪下與貼上 45
第3章 使用XSLT和XPath轉換XM L 47
3.1 XSLT處理器的編程式調用 48
3.2 使用XPath導航XML 51
3.3 XSLT樣式表簡介 52
3.4 XSL模板 52
3.5 XSLT處理模型 53
3.5.1 <xsl:apply-imports/> 53
3.5.2 <xsl:apply-templates> 53
3.6 XSLT 2.0簡介 53
3.6.1 分組 54
3.6.2 函式定義 54
3.6.3 多結果文檔 55
3.6.4 臨時樹 55
3.7 Oracle XSLT擴展 56
3.8 XSLT虛擬機 56
3.9 XSLT與資料庫 57
3.10 最佳實踐 57
3.10.1 XSLT的最佳化技巧 58
3.10.2 XSLT中的document()函式 58
3.10.3 用於多轉換的XSLT的總體
性能 58
第4章 使用DTD和XML Schema
驗證XML 59
4.1 DTD簡介 59
4.2 對照DTD驗證XML 61
4.3 XML模式語言簡介 62
4.4 基本數據類型和複雜數據類型 63
4.5使用XML模式(XSD)驗證XML 68
4.6XML文檔模型與資料庫 69
4.6.1映射DTD至資料庫模式 69
4.6.2映射XML文檔至資料庫模式 70
4.6.3支持的資料庫映射 71
4.7最佳實踐 72
4.7.1設計自己的模式 73
4.7.2元素與屬性 73
4.7.3元素和屬性名稱的設計 73
4.7.4載入來自JAR檔案的外部DTD 74
第5章使用XQuery的XML操作 75
5.1XQuery簡介 75
5.1.1基礎 76
5.1.2表達式 76
5.1.3查詢前序 78
5.1.4XQueryX簡介 79
5.2OracleXQuery引擎 80
5.2.1環境設定 80
5.2.2安裝測試 81
5.3查詢XML文檔 82
5.3.1在互動模式下運行 82
5.3.2由命令行方式查詢XML 82
5.3.3使用XQueryX查詢XML 82
5.4XQuery與Oracle資料庫 83
5.4.1Java語言的XQueryAPI 83
5.4.2查詢資料庫中的XML 83
5.5最佳實踐 84
5.5.1XQuery與XSLT2.0 84
5.5.2XQuery與SQL/SQL 85
第6章使用SOAP的XML訊息處理
機制和RPC 87
6.1SOAP簡介 87
6.1.1文本的和編碼的SOAP訊息 88
6.1.2單向和雙向SOAP訊息和RPC 89
6.2SOAP和OracleXDK的套用 90
6.2.1SOAP客戶端 90
6.2.2SOAP伺服器 90
6.2.3SOAP處理程式 91
6.3SOAP和Oracle資料庫的套用 91
6.3.1OracleStreamsAQ支持 91
6.3.2AQServlet 92
6.3.3訊息進隊與出隊 92
6.3.4通過PL/SQL使用SOAP 94
6.4最佳實踐 94
6.4.1SOAP與JAX-RPC 95
6.4.2SOAP與JMS 95
第7章藉助XML管道、JSP和XSQL
整合各種技術 97
7.1XMLPipelineProcessor簡介 98
7.2使用JSP和XMLBean處理
XML 100
7.2.1DOMBuilderBean 100
7.2.2XSLTransformerBean 102
7.2.3DBAccessBean 103
7.2.4XMLDBAccessBean 104
7.2.5XMLDiffbean 105
7.2.6XMLCompressBean 105
7.2.7XSDValidatorBean 105
7.2.8XMLBean在JSP中的用法 106
7.3XSQL頁面發布框架簡介 106
7.3.1XSQL頁面 107
7.3.2XSQLServlet安裝 108
7.3.3向XSQLServlet提交查詢 108
7.3.4使用樣式錶轉換XSQL結果 109
7.3.5使用XSQLServlet插入XML
文檔 111
7.3.6使用XSQLServlet更新數據 113
7.3.7JSP和XSQL頁面的用法 114
7.4最佳實踐 115
7.4.1創建更安全的連線 115
7.4.2簡單的JSPXML解決方案 115
第Ⅱ部分資料庫管理員對於
OracleXML的管理
第8章OracleXML資料庫 119
8.1Oracle資料庫支持XML的簡史 120
8.2設定OracleXML資料庫 122
8.2.1安裝OracleXML資料庫 122
8.2.2安裝示例資料庫模式 126
8.2.3創建用戶運行XMLType示例 126
8.2.4設定WebDAV資料夾 127
8.3.6Oracle高級佇列技術 135
8.4XML資料庫及標準 135
8.5設計XML資料庫 136
8.5.1存儲XML數據的方法 137
8.5.2檢索及生成XML 141
8.5.3搜尋XML數據的方法 141
8.5.4為Web應用程式設計XML
資料庫的方法 141
8.5.5為信息處理程式設計XML
資料庫的方法 142
8.6小結 142
第9章存儲XML數據 143
9.1在CLOBXMLType中存儲
XML文檔 143
9.1.1更新及查詢CLOBXMLType 144
9.1.2為CLOBXMLType處理字元
代碼 144
9.2在基於XML模式的XMLType
中存儲XML文檔 145
9.2.1XML模式註冊 145
9.2.2XML模式注釋 150
9.2.3XML數據載入 153
9.2.4XML模式驗證 155
9.2.5OracleXMLDB儲存庫 157
9.3在關係表中存儲XML文檔 160
9.3.1XMLSQL實用程式 160
9.3.2TransX實用程式 165
9.3.3DBMS_XMLSTORE 165
9.4使用外部表 167
9.5模式演進 168
9.6最佳實踐 168
9.6.1處理文檔類型定義 168
9.6.2創建XML基於模式的
XMLType 168
9.6.3指定命名空間 169
9.7小結 170
第10章生成及檢索XML 171
10.1利用SQLXML函式根據SQL
數據生成XML 172
10.2使用DBMXMLGEN根據SQL
數據生成XML 179
10.2.1規範映射 180
10.2.2列印格式 181
10.2.3數據取出 182
10.2.4使用REF游標 183
10.2.5使用捆綁變數 184
10.2.6處理特殊字元 185
10.3使用XMLType和SQL/XML
函式進行檢索 185
10.4生成XML模式 188
10.5創建XMLType視圖 190
10.6處理XML 191
10.6.1處理XML片斷 191
10.6.2DOM編輯 192
10.7最佳實踐 195
10.8小結 196
第11章搜尋XML數據 197
11.1基於XPath的搜尋 197
11.1.1使用XPath搜尋XML文檔 198
11.1.2基於XPath的搜尋的工作
方式 201
11.1.3使用索引最佳化基於XPath
的查詢 204
11.2全文搜尋 207
11.2.1使用OracleText搜尋XML 208
11.2.2OracleText搜尋的工作方式 211
11.2.3最佳化OracleText搜尋 212
11.2.4高級文本搜尋 213
11.3最佳實踐 215
11.3.1使用基於XPatH的搜尋的
時機 215
11.3.2使用OracleText搜尋的時機 215
11.3.3使用OracleText分區索引
的時機 215
11.4總結 216
第12章管理OracleXML資料庫 217
12.1安裝OracleXMLDB組件 217
12.2配置OracleXMLDB 220
12.2.1理解xdbconfig.xml 220
12.2.2配置xdbconfig.xml 220
12.3安全管理 223
12.3.1保護OracleXMLDB
Repository中的數據 223
12.3.2保護DBUri操作的安全 225
12.4小結 226
第Ⅲ部分針對Java程式設計師
的OracleXML
第13章OracleXML與Java 229
13.1OracleXDKJava庫 229
13.1.1xmlparserv2.jar 230
13.1.2xml.jar 230
13.1.3xschema.jar 230
13.1.4oraclexsql.jar和
xsqlserializers.jar 230
13.1.5xmlcomp.jar、xmlcomp2.jar、
xmldemo.jar和jdev-rt.zip 230
13.1.6xsu12.jar 230
13.1.7classgen.jar 230
13.1.8xdb.jar 231
13.1.9xmlmesg.jar 231
13.1.10transx.zip 231
13.1.11orai18n.jar 231
13.1.12classes12.jar和ojdbc14.jar 231
13.2JDK環境 232
13.3使用OracleJDeveloper的XDK 233
13.3.1建立XDK環境 233
13.3.2建立資料庫連線 234
13.3.3建立XDK組件面板 236
13.4小結 238
第14章構建XML驅動的網站 239
14.1支持XML的FAQ網站 239
14.2設計框架 240
14.3建立FAQ資料庫 240
14.3.1設計FAQ模式 240
14.3.2創建資料庫用戶 243
14.3.3註冊FAQ模式 243
14.3.4載入FAQ 244
14.4將FAQ網站連線到XML
資料庫 245
14.4.1建立XSQL主頁 245
14.4.2生成FAQ列表 246
14.4.3過濾FAQ列表 247
14.5為FAQ列表增加分頁功能 248
14.6顯示FAQ和答案 250
14.7創建辭彙表 253
14.7.1創建辭彙表模式 253
14.7.2載入辭彙表 253
14.7.3辭彙表連結 254
14.7.4顯示辭彙表定義 256
14.8搜尋FAQ 256
14.9小結 257
第15章用XML和WebServices構建
門戶站點 259
15.1設計框架 259
15.2設計靜態和動態區域 262
15.2.1創建動態區域 262
15.2.2創建靜態區域 268
15.3增加門戶功能 269
15.3.1創建用戶模板 269
15.3.2創建登錄區 270
15.3.3創建用戶申請表單 272
15.4創建管理頁面 274
15.5小結 277
第16章用SOAP和AQ開發XML
網關應用程式 279
16.1框架設計 279
16.1.1傳統方案 280
16.1.2基於流的單步方案 280
16.1.3與Internet的接口 281
16.2框架創建 282
16.2.1創建資料庫模式 282
16.2.2創建XML定單 285
16.3創建XML訊息處理網關 288
16.3.1創建訊息處理模式 288
16.3.2創建AQ代理和佇列 290
16.3.3創建AQPO處理程式 292
16.3.4擴展框架 296
16.4擴展應用程式的功能 304
16.4.1提交SOAP訊息 304
16.4.2PO中xsi:type的處理 304
16.4.3生成電子郵件確認 304
16.5小結 305
第17章開發XML可重用組件 307
17.1結構設計 307
17.2簡單管道示例 308
17.2.1SAX分析和列印 309
17.2.2分析、檢查差異 311
17.3建立管道應用程式 315
17.3.1XSDSchemaBuilder進程 316
17.3.2XSDValProcess進程 316
17.3.3XSDConditionalValProcess
進程 320
17.4運行管道應用程式 322
17.4.1處理無效文檔 322
17.4.2處理對遠端模式有效的文檔 323
17.4.3用一致的本地和遠端XSD
處理無效XML文檔 323
17.4.4處理兩種模式都改變的
無效文檔 323
17.5小結 324
第Ⅳ部分針對C程式設計師
的OracleXML
第18章OracleXML與C語言 327
18.1OracleXDKC庫 327
18.1.1libxml10.a、libxml10.so和
oraxml10.dll 327
18.1.2libcore10.a、libcoresh10.so
和libcore10.dll 328
18.1.3libnls10.a和oranls10.dll 328
18.1.4libunls10.a和oraunls10.dll 328
18.2建立自己的XML開發環境 328
18.2.1XDKC組件的UNIX設定 328
18.2.2檢驗C運行時環境 329
18.2.3設定C編譯時環境 330
18.2.4XDKC組件的Windows
設定 331
18.2.5檢驗C運行時環境 332
18.2.6設定C編譯時環境 332
18.2.7確認C編譯時環境 332
18.2.8設定MicrosoftVisualC/C++ 333
18.3小結 334
第19章構建管理XML的應用程式 335
19.1設計應用程式框架 335
19.2XML媒體檔案 336
19.3創建XML配置檔案 338
19.3.1定義XSLT樣式單 338
19.3.2定義配置檔案 340
19.4創建XSL樣式單 342
19.5創建publishcat應用程式 344
19.6小結 350
第20章構建XML資料庫OCI套用
程式 351
20.1設計框架 352
20.2建立OCI應用程式環境 352
20.2.1OCIXML應用程式頭檔案 352
20.2.2OCIXML應用程式庫 353
20.2.3OCIXML應用程式的
make檔案 354
20.3Update應用程式 354
20.4初始化OCI應用程式 355
20.5通過OCI檢索記錄列表的DOM 358
20.6執行統一的DOM操作 363
20.7運行xmlupdate應用程式 364
20.8小結 365
第21章創建配置了XML的高性能
轉換引擎 367
21.1設計框架 367
21.2使用xslcompile編譯樣式單 368
21.3使用xsbtransform運行XSLT
虛擬機 371
21.4小結 374
第Ⅴ部分針對C++程式設計師
的OracleXML
第22章OracleXML與C++ 377
22.1OracleXDKC++庫 377
22.1.1libxml10.a、libxml10.so和
libxml10.dll 377
22.1.2libcore10.a、libcoresh10.so
和libcore10.dll 378
22.1.3libnls10.a和oranls10.dll 378
22.1.4libunls10.a和oraunls10.dll 378
22.2設定自己的C++XML開發環境 378
22.2.1XDKC++組件的UNIX設定 379
22.2.2檢驗C運行時環境 379
22.2.3XDKC組件的Windows設定 381
22.2.4檢驗C++運行時環境 382
22.2.5設定C++編譯時環境 383
22.2.6設定MicrosoftVisualC/C++ 383
22.3小結 385
第23章構建XML資料庫OCIC++
應用程式 387
23.1設計框架 388
23.2設定C++OCIXML套用環境 388
23.2.1OCIXML應用程式頭檔案 389
23.2.2OCI和C++XML應用程式庫 390
23.3創建C++OCI幫助類 391
23.4初始化C++資料庫XML
應用程式 392
23.5處理OCI錯誤 392
23.6連線到資料庫 393
23.7斷開資料庫並進行清除 395
23.8創建C++查詢應用程式 396
23.9選擇到一個XMLType 397
23.10針對XMLTypeXOB訪問
初始化XDK 399
23.11使用C++XDKAPI查詢
XMLType 400
23.12運行應用程式 402
23.13小結 403
第24章構建XML數據檢索應用程式 405
24.1設計框架 406
24.2構建cppextract應用程式 406
24.2.1創建通用函式 406
24.2.2使用cppextractForce實例化
通用函式 411
24.2.3使用cppextractMain創建
Main程式 412
24.3運行cppextract應用程式 412
24.3.1在Extract模式下運行
cppextract 412
24.3.2在Splitter模式下運行
cppextract 413
24.4擴展框架 413
24.4.1cppextract的XML文檔
刪除案例 413
24.4.2cppextract的內容管理案例 414
24.5小結 414
第Ⅵ部分針對PL/SQL程式設計師
的OracleXML
第25章由OracleXML和PL/SQL
開始 417
25.1設定環境 417
25.2PL/SQLXML處理技術 418
25.2.1解析XML 418
25.2.2使用DOM處理XML 425
25.2.3使用XSLT處理XML 428
25.2.3設定OracleJVM 430
25.3小結 431
第26章構建PL/SQLWeb服務 433
26.1構建和發布第一個資料庫
Web服務 433
26.1.1建立資料庫方案 434
26.1.2使用OracleJDeveloper10g
發布PL/SQLWeb服務 436
26.1.3從客戶端調用Web服務 439
26.1.4調試Web服務 441
26.2在OracleDatabase中實現
Web服務 442
26.2.1構造SOAP訊息 442
26.2.2使用UTL_HTTP傳送
SOAP訊息 443
26.3擴展套用 446
26.3.1何時構建資料庫伺服器
中的Web服務 446
26.3.2建立安全防護 447
26.3.3構建不同類型的Web服務 447
26.4小結 448
第27章使用Java擴展PL/SQLXML
功能 449
27.1創建Java存儲過程處理XML 449
27.1.1實現Java代碼 450
27.1.2將Java代碼套用到
OracleJVM 451
27.1.3創建PL/SQL規範 451
27.2運行Java存儲過程 451
27.3使用OracleJDeveloper10g
簡化Java存儲過程的部署 452
27.4在OracleJVM中處理XML 454
27.4.1解析URL引用 454
27.4.2SAXXML處理 457
27.5開發定製的Java存儲過程 461
27.5.1使用Java存儲過程的場合 461
27.5.2如何調試Java存儲過程 462
27.6小結 463
第28章技術綜合 465
28.1OracleXML平台 465
28.2XML處理層決策 466
28.3針對XML的資料庫設計決策 467
28.3.1XMLTypeCLOB 468
28.3.2XMLType視圖 468
28.3.3存儲在OracleXMLDB倉庫
中的XML 469
28.4Java、C、C++和PL/SQL決策 469
28.5擴展OracleXML平台 471
附錄AXML標準社團與XML開放規範 473
A.1W3C規範簡介 473
A.1.1W3CXML規範 474
A.1.2W3CDOM規範 474
A.1.3SAX規範 475
A.1.4W3C命名空間規範 475
A.1.5W3CXMLSchema規範 475
A.1.6W3CXMLQuery規範 475
A.1.7W3CXSLT和XPath規範 476
A.1.8W3CXMLPipelineDefinition
Language規範 476
A.1.9W3CXMLProtocol 476
A.2Java社區過程規範 477
A.2.1SUNJAXB規範 477
A.2.2SunJAXP規範 477
A.2.3SunStAX規範 477
A.3 ISOSQL/XML規範 477
A.4 Oracle技術資源 477
A.5其他有用資源 478
術語表 479