曝光臺 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費(fèi)者
內(nèi)。然而,后一種方式并不區(qū)分是哪一級別的標(biāo)記,所以如果叫< Ti t l e >元素出現(xiàn)在我們的不同
文檔中,它們將被找到。所以它們不能像我們在后面要說到的X P a t h一樣復(fù)雜。
第10章XML和數(shù)據(jù)庫使用365 下載
圖10-4
然而,一個非常有力的特點(diǎn)是重用內(nèi)容的能力。一個組件可以從其他的地方引用,但是只
需要維護(hù)一次。組件的方式仿佛確實(shí)是在它所引用的位置上(參見圖1 0 - 5)。
圖10-5
像其他的一些產(chǎn)品一樣, C M S具有組件登錄( c h e c k - i n)和注銷( c h e c k - o u t),版本控制和
樣式轉(zhuǎn)換等功能。更多的信息請?jiān)L問h t t p : / / w w w. p o e t . c o m /。
(8) 小結(jié)
O O數(shù)據(jù)庫的本地能力使它們成為操縱X M L文檔的最有可能的后選對象。獨(dú)立操縱節(jié)點(diǎn)的能
366使用XML 高級編程
下載
力—是否加鎖、安全或版本控制—給了它們滿足前面所提到的高級需求的潛力。這里提出
的兩個應(yīng)用程序的每一個都提供一個可靠的基礎(chǔ),用在一個基于需要先進(jìn)的存儲和獲取處理的
X M L的項(xiàng)目中。
如果每件事都很好,你可能會問自己收獲是什么。在許多方面,文化比技術(shù)更重要。O O數(shù)
據(jù)庫軟件安裝的庫只是關(guān)系數(shù)據(jù)庫的一小部分,這一點(diǎn)似乎也不會很快發(fā)生改變。當(dāng)然像這里
所介紹的產(chǎn)品可能會取得一些進(jìn)展,原因就是它們可以很好地管理X M L,但是用O O技術(shù)的產(chǎn)品
很少。
這不是說不存在技術(shù)問題。聽上去很明顯,但O O數(shù)據(jù)庫比對象數(shù)據(jù)更好。在模擬其他類型
的結(jié)構(gòu)時,它們不像關(guān)系數(shù)據(jù)庫一樣有效,然而在分級的情況下是非常快的—比方說幾個對
象,每一個都包含幾萬個其他的對象。
所以,盡管我們找到了一個用O O數(shù)據(jù)庫的很好的解決方案,但必需繼續(xù)探索,因?yàn)榇蟛糠?br />
你要處理的是關(guān)系型存儲介質(zhì)。
2. 關(guān)系數(shù)據(jù)庫
關(guān)系數(shù)據(jù)庫管理系統(tǒng)—或R D B M S—使用熟悉的行和列的方法來存儲數(shù)據(jù)(參見圖1 0 - 6)。
圖10-6
這個模式顯示了一張表,它將包含作者。每一個作者用一行表示,一個作者的每個屬性用
一列表示。
拋開O O數(shù)據(jù)庫的眾多優(yōu)勢,到目前為止R D B M S仍然是最流行的,因?yàn)樗鼈兛梢员硎咎?br />
的現(xiàn)實(shí)世界的問題,并且對很多這樣的問題給出更快的響應(yīng)時間。例如,貨物訂單。這些例子
都非常適用于這個模型,作為一個二維數(shù)組的集合,像聯(lián)系管理系統(tǒng),股票控制軟件包,等等
(參見圖1 0 - 7)。
圖10-7
第10章XML和數(shù)據(jù)庫使用367 下載
基本的關(guān)系數(shù)據(jù)庫概念是:
• 表
• 查詢
• 連接
下面的幾個部分介紹了這些概念,如果你對使用關(guān)系數(shù)據(jù)庫很有經(jīng)驗(yàn),可以忽略這些概念。
在學(xué)習(xí)過這些基礎(chǔ)知識后,將看一下如何用關(guān)系數(shù)據(jù)庫來模擬節(jié)點(diǎn)的分級,然后是如何自動完
成某些轉(zhuǎn)換。你將需要熟悉這些概念,并了解這個模擬是如何做的。
(1) 表
一個簡單的用來存儲作者的書目的數(shù)據(jù)表可能包含如表1 0 - 1所示的內(nèi)容:
表1 0 - 1
作者城市編號名M I 姓簡歷
1 S t e p h e n M o h r S t e p h e n高中起即開始編程,現(xiàn)在是Omicron Consulting的資
深軟件系統(tǒng)工程師。他使用C + +、J a v a、J a v a S c r i p t、C O M和各
種互聯(lián)標(biāo)準(zhǔn)和協(xié)議設(shè)計(jì)和開發(fā)系統(tǒng)
2 K a t h i e K i n g s l e y K a t h i e是K i n g s l e y - H u g h e s開發(fā)公司的M D,這是一家專注于
H u g h e s We b開發(fā)和可視化編程語言的培訓(xùn)和咨詢公司
3 F r a n k B o u m p h r e y Frank Boumphrey現(xiàn)在在Cormorant Consulting供職,這是一
家專門為醫(yī)藥和法律文檔提供服務(wù)的公司。它主要負(fù)責(zé)將X M L
應(yīng)用在We b文檔中
在表中每一個作者有著他們自己的入口或行。每一行是由許多字段組成的,對每一個作者
是通用的,例如,每個作者都有一個姓的字段和名的字段。即使一個特別的字段為空,像每一
個作者的M I字段,但在每一行中仍然會存在。
表頭對應(yīng)于表定義中的列。這些可以被定義如下形式(參見表1 0 - 2):
表1 0 - 2
列名數(shù)據(jù)類型是否允許空值
A u t h o r C i t e I D I n t e g e r 否
F i r s t N a m e S t r i n g 是
M I S t r i n g 是
L a s t N a m e S t r i n g 否
B i o g r a p h y S t r i n g 是
用這個定義,我們已經(jīng)指明了要存儲的每個作者的屬性,并且指出哪些字段必須存在,哪
些是可選的。因?yàn)楹苌儆凶髡邲]有一個唯一的I D和姓,我們已經(jīng)制訂了一條記錄的最小需求。
在決定了如何在表中存儲數(shù)據(jù)之后,我們需要一種機(jī)制來取出它。
(2) 查詢
處理存儲在關(guān)系數(shù)據(jù)庫中數(shù)據(jù)的通用辦法是使用結(jié)構(gòu)化查詢語言或S Q L。盡管在這幾年中對
于S Q L中的可用的特性有了改進(jìn)和增強(qiáng),它的核心仍是S E L E C T語句。使用這個語句,請求
R D B M S服務(wù)器返回給我們所有在數(shù)據(jù)庫中的作者的請求應(yīng)該是如下形式:
368使用XML 高級編程
下載
對那些新手來說的一個常見的錯誤是將星號讀成“請檢索所有的記錄”。這個理解是
將星號的作用等同于在目錄中查找文件時*的作用,但是在S Q L中,它的意思是“請檢索
所有的列”。
在前面我們定義的作者表的例子中,將意味著返回五列數(shù)據(jù)。一個只取出指定列的查詢,
應(yīng)該是這樣:
一個S E L E C T語句的結(jié)果形成一個結(jié)果集—一
個查詢結(jié)果的列表,可以被單步遍歷,取出每一行的
數(shù)據(jù)—在這個例子中將包含如下的結(jié)果(參見表
1 0 - 3):
如你所見,即使沒有星號我們也從數(shù)據(jù)庫中取回
了所有行,因?yàn)檫@是S E L E C T的缺省行為。一個限制
返回記錄的方法是使用一個W H E R E子句。例如,如果我們需要Stephen Mohr的傳記,我們應(yīng)該
書寫下面的查詢:
在這個例子中,我們要求數(shù)據(jù)庫返回字段L a s t N a m e被設(shè)成M o h r的所有記錄,然后只返回給
我們B i o g r a p h i c a l字段。你可能希望W H E R E子句非常豐富,下面舉出的例子將返回K a t h i e和
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(121)