一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python中的XML庫(kù)4Suite Server的介紹

Python中的XML庫(kù)4Suite Server的介紹

2020-06-06 11:05腳本之家 Python

這篇文章主要介紹了Python中的XML庫(kù)4Suite Server,來(lái)自于IBM官方網(wǎng)站,需要的朋友可以參考下

在繼續(xù)閱讀本文之前,您務(wù)必要對(duì)我們?cè)诒緦谥袑⒁懻摰囊恍┘夹g(shù)有所了解。我們要使用的技術(shù)包括:可擴(kuò)展的樣式表語(yǔ)言轉(zhuǎn)換(Extensible Stylesheet Language Transformations,XSLT)、XML 路徑語(yǔ)言(XML Path Language,XPath)和資源描述框架(Resource Description Framework,RDF)。在 參考資料部分有到關(guān)于所有這些技術(shù)的信息的鏈接。
4Suite Server 概述

我們將使用由本文作者參與開(kāi)發(fā)的 XML 資源庫(kù) 4Suite Server(4SS)作為本文中示例的應(yīng)用程序基礎(chǔ)。4Suite Server 是一個(gè) XML 資源庫(kù),它帶有許多用于 XML 數(shù)據(jù)和元數(shù)據(jù)管理的功能程序,無(wú)論使用 Python 與否,這些功能程序都使得 4Suite Server 非常適合 Web 服務(wù)的快速開(kāi)發(fā)。

本文中的示例是用 4Suite Server 0.11 編寫(xiě)的,需要使用 Python 1.5.2 或更高版本和 4Suite 0.11。在 參考資料部分有下載所有這些應(yīng)用程序的鏈接。
在線軟件資源庫(kù)

本文是“Python Web Services Developer”專欄的第二部分,卻是關(guān)于構(gòu)建在線軟件資源庫(kù)的三部分系列的第一部分。在這部分中,我們將構(gòu)建我們的基礎(chǔ)架構(gòu)。在隨后的專欄中,我們將特別描述如何使用各種協(xié)議(例如,簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(Simple Object Access Protocol,SOAP)、HTTP 和 WWW 分布式編寫(xiě)和版本控制(WWW Distributed Authoring and Versioning,WebDAV))搜索建立了索引的內(nèi)容和基于代理的內(nèi)容添加或內(nèi)容檢索。

我們的在線軟件資源庫(kù)服務(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,詳見(jiàn) 清單 1)。關(guān)于 RDF 的簡(jiǎn)短定義,請(qǐng)閱讀本專欄的前一期,或者去 參考資料部分查找這個(gè)簡(jiǎn)單格式基本介紹的鏈接。

XML 的實(shí)際格式是不相關(guān)的。事實(shí)上,因?yàn)樗枋龅募夹g(shù)適用于任何類型的 XML 內(nèi)容,所以根本沒(méi)必要去描述軟件。您可以用這種技術(shù)描述書(shū)的目錄、雇員信息,或者甚至是餐館的酒類一覽表。

這個(gè)示例中使用的所有代碼和數(shù)據(jù)文件都可以從 參考資料部分的鏈接下載。
文檔定義

在 4SS 的 XML 資源庫(kù)中,文檔定義允許您指定 XML 內(nèi)容和 RDF 元數(shù)據(jù)之間的一個(gè)映射。為此,您需要定義由三個(gè) XPath 表達(dá)式組成的集:一個(gè)主語(yǔ)(subject)表達(dá)式、一個(gè)謂語(yǔ)(predicate)表達(dá)式和一個(gè)賓語(yǔ)(object)表達(dá)式。XPath 表達(dá)式允許您在文檔中定義一個(gè)節(jié)點(diǎn)關(guān)系集,并允許根據(jù)這些關(guān)系從文檔返回內(nèi)容的子集。當(dāng)在資源庫(kù)中添加、修改和刪除每個(gè) XML 文檔時(shí),都要根據(jù) XML 文檔求這些 XPath 表達(dá)式的值。求得的語(yǔ)句,也被稱為 三元組(triple),被自動(dòng)添加到 RDF 數(shù)據(jù)庫(kù)(被稱作 模型)中,或從其中刪除。如果修改了文檔,也要更改元組以反映發(fā)生的更改,如果文檔被刪除了,就要把元組從 RDF 服務(wù)器上刪除。文檔定義可以從其它文檔繼承定義的信息,這允許您定義 XML 內(nèi)容到 RDF 元數(shù)據(jù)信息的復(fù)雜映射。

在我們的示例應(yīng)用程序中,我們將擴(kuò)展其中一個(gè)缺省文檔定義。缺省文檔定義描述了嵌入在 XML 內(nèi)容中的 Dublin Core 標(biāo)記到 Dublin Core 語(yǔ)句的映射。Dublin Core 是一個(gè)元數(shù)據(jù)倡議,它定義了基于 Web 的通用對(duì)象(例如, Creator 、 Title 和 Date )的一組標(biāo)準(zhǔn)屬性。派生出的文檔定義將為每個(gè)文檔再添加一條語(yǔ)句。

如下所示,一個(gè)簡(jiǎn)單的聲明將把這個(gè)文檔的 Creator 元數(shù)據(jù)設(shè)置為求得的某個(gè) XPath 的結(jié)果:

?
1
2
3
RdfStatement(subject='$uri',
 predicate="http://purl.org/dc/elements/1.1#Title",
 object="/rdf:RDF/s:Software/dc:Creator")

(上面的代碼是一個(gè)單行語(yǔ)句,但是為了適合這個(gè)格式進(jìn)行了縮排。)

為了添加或更新系統(tǒng)缺省數(shù)據(jù),您應(yīng)該運(yùn)行 4SS 自帶的腳本 populate.py 。這樣將從 ftp://ftp.fourthought.com下載有用的數(shù)據(jù)來(lái)更新您的服務(wù)器。下載的數(shù)據(jù)包含一些常用的項(xiàng),如 Dublin Core 文檔定義和 Docbook 樣式表(Docbook 是技術(shù)文檔流行的 XML 格式)。

在安裝 4SS 時(shí),植入腳本將自動(dòng)安裝在演示應(yīng)用程序中。在基于 Unix 的機(jī)器上,植入腳本一般存儲(chǔ)在 /usr/doc/4SuiteServer-0.11 或 /usr/local/doc/4SuiteServer-0.11 中。在 Windows 機(jī)器上,存儲(chǔ)目錄一般是 c:\Program Files\Python 或 c:\Python20 。 清單 2展示了植入您的基于 4SS 的應(yīng)用程序的安裝過(guò)程。
清單 2:植入 4SS 應(yīng)用程序

 

復(fù)制代碼 代碼如下:
[molson@penny example]$ python /usr/doc/4SuiteServer-0.11/demo/populate.py
Downloading XML Documents
Downloading Stylesheets
Downloading DocDefs
Adding XML document: 'null'
Adding stylesheet: 'docbook_html1.xslt'
Adding stylesheet: 'presentation_toc.xslt'
Adding stylesheet: 'presentation.xslt'
Adding stylesheet: 'docbook_text1.xslt'
Adding document definition: 'dublin_core'
Adding document definition: 'docbook1'

 

接下來(lái),我們必須為軟件條目清單創(chuàng)建一個(gè)文檔定義。為了添加定義,我們使用命令行腳本 4ss deserialize docdef ,將序列化的文檔定義的文件名作為唯一的參數(shù)來(lái)傳遞。例如:

 

復(fù)制代碼 代碼如下:
[molson@penny example]$ 4ss deserialize docdef software.docdef

 

內(nèi)容

我們將從命令行用 4ss create document 給系統(tǒng)添加新內(nèi)容。在下載示例中,有兩個(gè)軟件清單,它們是名為 software1.rdf 和 software2.rdf 的 XML 文件。為了把這些文件添加到系統(tǒng)中,我們執(zhí)行 4ss create document ,為它指定要使用的文檔定義、要添加的文件的名稱以及要賦予系統(tǒng)內(nèi)資源的一列別名。

首先,我們要為我們服務(wù)器上的軟件資源庫(kù)創(chuàng)建一個(gè)容器,把容器的許可權(quán)設(shè)置成允許“uo”組有寫(xiě)訪問(wèn)權(quán)限,并允許所有人進(jìn)行讀訪問(wèn)(因?yàn)槲覀兿胍獜倪@個(gè)目錄提供 Web 頁(yè)面):

 

復(fù)制代碼 代碼如下:
[molson@penny example]$ 4ss create container /softrepo
[molson@penny example]$ 4ss set acl --write=uo --world-read /softrepo

 

然后,我們把我們的樣本下載文件添加到資源庫(kù)中。盡管 4SS 資源庫(kù)可以以任意格式存儲(chǔ)很多數(shù)據(jù),但是它針對(duì)存儲(chǔ) XML 數(shù)據(jù)進(jìn)行了高度優(yōu)化。當(dāng)我們把 .tar 文件添加到資源庫(kù)中時(shí),我們指定 --imt 選項(xiàng)來(lái)設(shè)置文件的因特網(wǎng)媒體類型(Internet Media Type,IMT)(在這里是 application/x-gzip )。這個(gè) IMT 除了其它作用,還可以被 HTTP 服務(wù)器用于檢索 Web 上的內(nèi)容。請(qǐng)注意,IMT 有時(shí)也叫“MIME 類型”。請(qǐng)參閱 清單 3,以了解添加內(nèi)容的命令。請(qǐng)注意,在一個(gè)更復(fù)雜的項(xiàng)目中,您可以考慮把二進(jìn)制文件放在一個(gè)單獨(dú)的容器中。
取內(nèi)容

取內(nèi)容就和添加內(nèi)容一樣簡(jiǎn)單。不過(guò),我們首先一定要將樣式表添加到資源庫(kù)中。我們的示例文件包含了一個(gè)非常簡(jiǎn)單的樣式表。為了添加它,您可以使用 4ss create document ,并為其取別名為 software.xslt 。例如:

 

復(fù)制代碼 代碼如下:
[molson@penny example]$ 4ss create document BASE_XSLT software.xslt softrepo/software.xslt

 

BASE_XSLT 是一個(gè)特殊的文檔定義,它告訴 4SS 將這個(gè)文檔作為一個(gè) XSLT 樣式表來(lái)進(jìn)行優(yōu)化。

添加文檔之后,您現(xiàn)在可以用您的 Web 瀏覽器連接到 4SS HTTP 服務(wù)器(支持普通的 Python 和 Apache 服務(wù)器)上,然后轉(zhuǎn)到 http://localhost:8080/softrepo/pong.xml 頁(yè)面。這將從資源庫(kù)中取出 pong 軟件描述文檔。如果您正在使用一個(gè)支持 IMT text/xml 的瀏覽器(如 Internet Explorer 或 Mozilla),那么您就可以查看已添加到資源庫(kù)中的 XML。要告訴 HTTP 偵聽(tīng)器(HTTP Listener)您想在頁(yè)面被返回之前處理頁(yè)面(通過(guò)在 XSLT 中運(yùn)行),請(qǐng)指定 xslt URI 查詢參數(shù) http://localhost/softrepo/pong.xml?xslt=software.xslt 。

請(qǐng)注意,頁(yè)面上下載包的鏈接也指向 localhost。這個(gè)鏈接還將檢查 HTTP 偵聽(tīng)器,并取出我們?yōu)?pong-0.0.2.tgz 添加的資源。當(dāng)它被返回到瀏覽器時(shí),它會(huì)指定我們把資源添加到系統(tǒng)時(shí)所定義的 IMT。

生成索引頁(yè)

為了生成索引頁(yè),我們將使用 4SS 的一些擴(kuò)展函數(shù),以使 XSLT 訪問(wèn) RDF 模型。對(duì)于在 4SS 中生成一個(gè)索引頁(yè)的問(wèn)題,還有其它的解決方案。其中一種解決方案是用 Python 為 HTTP GET 消息寫(xiě)一個(gè)定制處理程序。這樣做可能在請(qǐng)求 index.html 時(shí)需要查詢 RDF 模型。另一個(gè)解決方案是,每當(dāng)將一個(gè)新文檔添加到系統(tǒng)中或者從系統(tǒng)中刪除一個(gè)文件時(shí),都使用 4SS 事件系統(tǒng)來(lái)更新 index.html 文檔。

因?yàn)?XSLT 總是需要根據(jù)一個(gè)源文檔而被應(yīng)用,所以我們將給系統(tǒng)添加一個(gè)啞源文檔。在下載示例中有一個(gè)叫 index.doc 的源文檔。請(qǐng)用 4ss create document 將這個(gè)文檔添加到資源庫(kù)中,如下所示:

 

復(fù)制代碼 代碼如下:
[molson@penny example]$ 4ss create document index.doc BASE_XML softrepo/index.doc
[molson@penny example]$ 4ss set acl --world-read softrepo/index.doc

 

我們將在樣式表中使用擴(kuò)展函數(shù) rdf.complete 來(lái)收集關(guān)于系統(tǒng)中所有軟件的信息。擴(kuò)展函數(shù)調(diào)用 RDF 模型上的 complete 方法。 complete 方法允許您搜索 RDF 模型以找到一個(gè)匹配指定模式的語(yǔ)句。該方法最多要用三個(gè)參數(shù):一個(gè) subject 、一個(gè) predicate 和一個(gè)可選的 object 。這些參數(shù)都可以是空字符串。它將返回匹配所有指定值的一列語(yǔ)句。例如,如果您輸入主語(yǔ) foo,賓語(yǔ) bar,將返回有主語(yǔ) foo,任意謂語(yǔ)以及賓語(yǔ) bar 的語(yǔ)句。

4SS 自動(dòng)創(chuàng)建把文檔鏈接到文檔定義上的 RDF 語(yǔ)句。這些語(yǔ)句的主語(yǔ)是文檔的 URI,謂語(yǔ)是 http://schemas.4suite.org/4ss#metaxml.docdef ,賓語(yǔ)是文檔定義名。知道了這一點(diǎn),我們就可以用一個(gè)簡(jiǎn)單的 complete 調(diào)用指定謂語(yǔ)和賓語(yǔ),用 software 文檔定義在我們的系統(tǒng)中獲得一個(gè)文檔列表。

我們用來(lái)生成索引的樣式表叫 index.xslt 。與源文檔根目錄匹配的模板首先調(diào)用了 rdf.complete 。這個(gè)函數(shù)調(diào)用在 RDF 模型上為所有將 http://schemas.4suite.org/4ss#metaxml.docdef 作為謂語(yǔ),將 software 作為賓語(yǔ)的語(yǔ)句進(jìn)行了一次 complete 操作。 rdf.complete 函數(shù)調(diào)用的結(jié)果是 Statement 元素的一個(gè)節(jié)點(diǎn)集。每個(gè) Statement 元素有三個(gè)子元素: Subject 、 Predicate 和 Object 。如 清單 4 所示,我們根據(jù)函數(shù)的結(jié)果使用 xsl:apply-templates ,并且顯示模板內(nèi)每個(gè)在 Statement 上匹配的軟件項(xiàng)。

為了查看生成的索引頁(yè),請(qǐng)將您的瀏覽器轉(zhuǎn)到 http://localhost:8080/softrepo/index.doc?xslt=index.xslt 。

然而,這個(gè)索引并不是一成不變的,我們很容易就能夠明白如何將這個(gè)簡(jiǎn)單的頁(yè)擴(kuò)展為以任何風(fēng)格顯示軟件標(biāo)題。我們可以在樣式表中修改顯示每一項(xiàng)所用的方式,還可以通過(guò)向文檔定義添加更多的映射來(lái)調(diào)整可用于樣式表的數(shù)據(jù)。

結(jié)束語(yǔ)

哦,我們還是沒(méi)有編寫(xiě)任何 Python 代碼,但是我們確實(shí)粗略了解了一下 4Suite Server 的一些功能。在下個(gè)月的專欄中,我們將在本示例的基礎(chǔ)上加以擴(kuò)展,讓軟件資源庫(kù)具有內(nèi)容管理的功能,并能夠搜索生成的所有元數(shù)據(jù)。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲男人的天堂在线 | 俺去俺来也在线www色官网 | 亚洲成人国产 | 国产深夜视频 | 五月婷婷在线免费观看 | 九九精品免视看国产成人 | 处女摘花视频 | 91视频免费观看网站 | 深夜啪啪网站 | 欧美色图亚洲 | 男人和女人日比 | 精品无码国产AV一区二区三区 | a级在线看| 91精品婷婷国产综合久久8 | 九九精品国产兔费观看久久 | 女教师三级做受 | 四虎精品永久免费 | 亚洲 欧美 国产 综合首页 | 欧美怡红院视频一区二区三区 | 日本成日本片人免费 | 果冻传媒林予曦图片 | 日本肥熟 | 欧美va天堂va视频va在线 | 极品手交handjobtattoo | 包射屋| 国内自拍网红在线自拍综合 | 日韩先锋| 亚洲精品一区在线观看 | 亚洲午夜大片 | 无码中文字幕av免费放 | 和两个男人玩3p好爽视频 | 国内精品视频免费观看 | 门房秦大爷小说 | 操大姨子逼 | 国产爽视频 | 三级黄片毛片 | 国产网站免费看 | 国产一区日韩二区欧美三 | 超高清欧美同性videos | 91制片厂制作果冻传媒破解 | 亚洲国产五月综合网 |