在繼續(xù)閱讀本文之前,您務(wù)必要對我們在本專欄中將要討論的一些技術(shù)有所了解。我們要使用的技術(shù)包括:可擴(kuò)展的樣式表語言轉(zhuǎn)換(Extensible Stylesheet Language Transformations,XSLT)、XML 路徑語言(XML Path Language,XPath)和資源描述框架(Resource Description Framework,RDF)。在 參考資料部分有到關(guān)于所有這些技術(shù)的信息的鏈接。
4Suite Server 概述
我們將使用由本文作者參與開發(fā)的 XML 資源庫 4Suite Server(4SS)作為本文中示例的應(yīng)用程序基礎(chǔ)。4Suite Server 是一個(gè) XML 資源庫,它帶有許多用于 XML 數(shù)據(jù)和元數(shù)據(jù)管理的功能程序,無論使用 Python 與否,這些功能程序都使得 4Suite Server 非常適合 Web 服務(wù)的快速開發(fā)。
本文中的示例是用 4Suite Server 0.11 編寫的,需要使用 Python 1.5.2 或更高版本和 4Suite 0.11。在 參考資料部分有下載所有這些應(yīng)用程序的鏈接。
在線軟件資源庫
本文是“Python Web Services Developer”專欄的第二部分,卻是關(guān)于構(gòu)建在線軟件資源庫的三部分系列的第一部分。在這部分中,我們將構(gòu)建我們的基礎(chǔ)架構(gòu)。在隨后的專欄中,我們將特別描述如何使用各種協(xié)議(例如,簡單對象訪問協(xié)議(Simple Object Access Protocol,SOAP)、HTTP 和 WWW 分布式編寫和版本控制(WWW Distributed Authoring and Versioning,WebDAV))搜索建立了索引的內(nèi)容和基于代理的內(nèi)容添加或內(nèi)容檢索。
我們的在線軟件資源庫服務(wù)模式是基于 RPMFind.net 中的 RDF 模式的,但關(guān)系不太緊密。RPMFind 是一個(gè)用流行的 Red Hat 包管理器(Red Hat Package Manager,RPM)格式為 UNIX 和 Linux 軟件包編制目錄的系統(tǒng)。它包含關(guān)于軟件包的關(guān)鍵元數(shù)據(jù)(包括作者、版本和描述,格式為 RDF,詳見 清單 1)。關(guān)于 RDF 的簡短定義,請閱讀本專欄的前一期,或者去 參考資料部分查找這個(gè)簡單格式基本介紹的鏈接。
XML 的實(shí)際格式是不相關(guān)的。事實(shí)上,因?yàn)樗枋龅募夹g(shù)適用于任何類型的 XML 內(nèi)容,所以根本沒必要去描述軟件。您可以用這種技術(shù)描述書的目錄、雇員信息,或者甚至是餐館的酒類一覽表。
這個(gè)示例中使用的所有代碼和數(shù)據(jù)文件都可以從 參考資料部分的鏈接下載。
文檔定義
在 4SS 的 XML 資源庫中,文檔定義允許您指定 XML 內(nèi)容和 RDF 元數(shù)據(jù)之間的一個(gè)映射。為此,您需要定義由三個(gè) XPath 表達(dá)式組成的集:一個(gè)主語(subject)表達(dá)式、一個(gè)謂語(predicate)表達(dá)式和一個(gè)賓語(object)表達(dá)式。XPath 表達(dá)式允許您在文檔中定義一個(gè)節(jié)點(diǎn)關(guān)系集,并允許根據(jù)這些關(guān)系從文檔返回內(nèi)容的子集。當(dāng)在資源庫中添加、修改和刪除每個(gè) XML 文檔時(shí),都要根據(jù) XML 文檔求這些 XPath 表達(dá)式的值。求得的語句,也被稱為 三元組(triple),被自動添加到 RDF 數(shù)據(jù)庫(被稱作 模型)中,或從其中刪除。如果修改了文檔,也要更改元組以反映發(fā)生的更改,如果文檔被刪除了,就要把元組從 RDF 服務(wù)器上刪除。文檔定義可以從其它文檔繼承定義的信息,這允許您定義 XML 內(nèi)容到 RDF 元數(shù)據(jù)信息的復(fù)雜映射。
新聞熱點(diǎn)
疑難解答
圖片精選