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