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