曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
1. 接收到片
段上下文
說明
2. 請求片段
體
3. 接收到片
段體
4. 用相關上下
文信息解析
XML 接收應用程序片段體
程序段體形式如下:
程序清單8 - 7 7
這樣我們就僅采用一個文件:
程序清單8 - 7 8
值得注意的是我們不再為程序段體指明位置—它被認為假定在< p : b o d y >元素。這個方案
僅需要一個來回即可到達服務器(見圖8 - 1 5)。
圖8-15
這個技術使我們減少了達到服務器的循環次數,并且減輕了服務器應用程序本身的復雜性。
288使用XML 高級編程
下載
XML片段服務應用程序
XML接收應用程序
1. 分組包括片段的
專門上下文說明
并且片段被接收
2. 分組未解包,片
段的上下文說明
并且片段本被提
取
4. 用相關上下
文信息解析
片段體
8.5.7 小結
X M L程序段交換提供了一種方法,將一部分X M L文檔和足夠的環境信息疊加在一起發送到
接收方,使得這些文檔對接收方真正有用。讓我們看一下程序段發揮作用的集中方式—例如
允許多個作者同時操作文檔,或者減少通過網絡傳輸并經由X M L處理器處理的無用信息。不過
返回的程序段必須對應于原始文檔的鄰近元素,這就可能使對原始文檔的操作變得復雜。不過
目前還沒有適用性廣的識別片段處理器,熟悉程序段和上下文的概念當會使你為程序段做準備
當它們開始出現的時候。將各種X M L技術集中起來, X F I或許可以被用于傳輸通過查詢或者通
過利用XLi n k生成的程序段連結所產生的部分程序段文檔。
8.6 查詢
我們已經了解了如何從X M L文檔鏈接并指向它們的不同部位。如果能夠利用一種查詢語言
來獲取某一部分的X M L文檔并對之進行操作,就非常方便了。這下面的這一部分里,我們將討
論一下查詢X M L文件并從中提取內容的幾種方法。
8.6.1 什么是查詢語言
如果你使用過關系數據庫,可能熟悉一種形式的查詢語言: S Q L (結構化查詢語言),允許使
用者獲得數據庫中包含的信息,并可以以幾種方法對數據進行操作。在你深入了解查詢X M L文
檔和原始資料這個主題之前,我們將看一下查詢語言是如何工作的。那么現在讓我們看一下一
些可能利用S Q L的操作,那么對X M L來說使用一些假定的查詢語言應該是可能的。
1. 返回信息的行方式約束
當我們從數據庫中返回信息時最基本的一件事情是僅返回與特定規則相匹配的行來對行記
錄進行過慮,從而實現對信息進行限制。這可以利用S Q L語言中的S E L E C T語句的W H E R E子語
句來實現這個目標:
程序清單8 - 7 9
2. 返回信息的列方式約束
我們也可以通過從數據庫中僅返回感興趣的列來對列進行限制,達到對返回信息進行約束
的目的?梢栽赟ELECT 語句中使用下面方式指定:
程序清單8 - 8 0
3. 總結返回信息
我們也有必要對返回的信息進行歸納總結,把幾個不同行的一些信息塊集成在一起形成一
第8章鏈接和查詢使用289 下載
條信息。S Q L提供了一些可用的函數來實現在這個功能:
程序清單8 - 8 1
4. 對返回信息進行排序
對一個查詢返回的信息進行重新排序的能力是非常重要的, S Q L提供了ORDER BY語句做
為實現排序的方法:
程序清單8 - 8 2
5. 內部連接
由于S Q L表的本身性質決定,我們常從多于一個的表中返回信息來得到一個有意義的結果。
在S Q L中這個操作通過inner join 和e q u i j o i n來實現:
程序清單8 - 8 3
6. 外部連接
在S Q L中,當我們從多于一個的地方提取信息的時候,常希望從一個表中返回信息,而與此
相關的信息在其他表中并不存在。例如,我們希望返回所有書籍和它們所屬的類別,但是我們
也希望能夠得到那些沒有所屬類別的所有書籍,這在S Q L中可以通過outer join操作來實現:
程序清單8 - 8 4
7. 表內容操作
利用S Q L命令對數據庫中信息進行操作是可行的,可以在逐行的基礎上對信息進行添加、修
改、刪除等操作,這些命令分別是: I N S E RT、U P D AT E和D E L E T E:
程序清單8 - 8 5
290使用XML 高級編程
下載
這些功能確實超出我們假定X M L查詢引擎的范圍, X M L可以通過其他的方式來達到這個目
的,例如D O M。這個功能對一個強大的查詢語言來說不是基本要求,而可以很方便地實現。
8. 從不止一個的源獲得信息
S Q L可以實現經常從不止一個的地方返回信息的功能—有代表性的就是同一臺機器上存儲
有不同數據庫的信息。例如,在S Q L服務器的S Q L執行中,這可以通過為表名加上所屬數據庫名
稱的前綴來實現:
程序清單8 - 8 6
9. 程序處理
在大部分S Q L實現中,會產生一些形式的存儲查詢和存儲過程, S Q L語法雖還堅持這一點,
但是處理是通過程序的方式?匆幌孪旅娲鎯Τ绦虻睦樱
程序清單8 - 8 7
這個存儲程序實現兩個功能:首先,刪除指定書籍的所有目錄;其次,它為這本書添加一
個缺省目錄。有很多結構可以使用,例如臨時表、變量和指針,它們可以使存儲程序成為操作
關系數據的強大工具。
下面我們將會看到對于X M L可行的這些技術是如何實現這些相同的功能。不過,在我們了
解那些技術之前,我們有必要知道和關系數據庫不同的X M L文檔是如何構造的。
8.6.2 關系型數據庫和XML文檔之間的區別
在我們對X M L文檔進行查詢的時候,為了解即將面臨的問題,有必要簡要地回顧一下X M L
文檔的結構。首先為了對比的需要,我們來看一下S Q L的結構。
S Q L數據結構包含一系列表。每個表具有一列或多個列。例如,下面是我們正要討論的
B o o k表和R e c S u b j C a t e g o r i e s表的S Q L表生成腳本:
程序清單8 - 8 8
第8章鏈接和查詢使用291 下載
表8 - 8和表8 - 9顯示了這些表的樣本數據,第一個是B o o k表。
中國航空網 m.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(100)