亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

使用DB2 9 pureXML管理ODF和Microsoft Office 2007 文檔(1)

瀏覽:4日期:2023-11-08 12:41:59
本文示例源代碼或素材下載 簡(jiǎn)介桌面文檔有什么新變化?假如您一直在關(guān)注 Microsoft Windows® 社區(qū),那么您會(huì)發(fā)現(xiàn)變化實(shí)在太大了。 Microsoft 為 MS Office 2007 產(chǎn)品引入了一種新格式,這種格式可以在內(nèi)部利用 XML。 之前,可以在 MS Office 應(yīng)用程序之間交換數(shù)據(jù);但是,MS Office 2007 和 Windows Vista® 答應(yīng)企業(yè)踏入數(shù)據(jù)孤島,而在以前,這些數(shù)據(jù)難以使用和再利用(re-purpose,即將用于某一目的的數(shù)據(jù)用于另一個(gè)目的)。雖然 Microsoft 正在推動(dòng)這個(gè)概念,但 OpenOffice 應(yīng)用程序已經(jīng)實(shí)現(xiàn)了 ODF,并從市場(chǎng)早已認(rèn)可的 XML 優(yōu)點(diǎn)中受益。讓我們來(lái)看一個(gè)典型的桌面應(yīng)用程序問(wèn)題。假設(shè)有這樣一家公司,它的市場(chǎng)部門(mén)正在計(jì)劃召開(kāi)一個(gè)會(huì)議。 他們要求預(yù)期的演講者在一份 MS Word 模板文檔中提交提議,然后,文檔內(nèi)容被用于以下任務(wù):審核提議 向成功提交提議的可能的演講者發(fā)送電子郵件 將相關(guān)信息發(fā)布到會(huì)議網(wǎng)站上 通過(guò)會(huì)議或公司的一個(gè)新提要(ATOM/RSS)發(fā)布內(nèi)容 按照傳統(tǒng)做法,市場(chǎng)人員從 Word 文檔中剪切文本,并將信息粘貼到不同的系統(tǒng)中,這種做法很費(fèi)時(shí)。 假如保留文檔原有格式,而為特定任務(wù)提取相關(guān)信息,則可以節(jié)省不少時(shí)間和精力。通過(guò) XQuery 就可以做到這一點(diǎn),而且只需很少的代碼。 在本文中,我們將簡(jiǎn)要地回顧 MS Office 應(yīng)用程序使用的一些舊的文檔數(shù)據(jù)交換方法。然后,我們將查看新的格式,并討論如何交換和再利用這種新格式。我們將使用 Zend Core for IBM、PHP、PDO 和 XQuery 等跨平臺(tái)技術(shù) —— 這些工具都可以與 DB2 結(jié)合使用。這種技巧可以成為內(nèi)容治理和文檔治理解決方案中很有價(jià)值的一部分。希望您閱讀本文之后發(fā)現(xiàn),通過(guò)使用 IBM DB2 pureXML™ 特性,使用和再利用 ODF 和 MS Office 2007 文檔不再是難事。這并不需要很多的代碼,所以這個(gè)解決方案很輕易實(shí)現(xiàn)。然后,您可能希望索引這些 Office 2007 文檔,以進(jìn)一步利用 pureXML 混合存儲(chǔ)特性。 12345678下一頁(yè) 桌面應(yīng)用程序和 XML 概述本文主要關(guān)注 OpenOffice 默認(rèn)格式 ODF 和 MS Office 2007 格式。您應(yīng)該清楚,這里談到的概念并不局限于這些格式和供給商。實(shí)際上,您會(huì)發(fā)現(xiàn),很多供給商都提供了 ODF,包括 Google Applications、KOffice 和 StarOffice。值得注重的是,Microsoft 有一個(gè)用于使用和導(dǎo)入 ODF 格式的轉(zhuǎn)換器 “插件,并且有一個(gè)兼容包,可以用舊版本的 Office 打開(kāi)和保存 MS Office 2007 文件格式。而且,Lotus Notes 和 Corel 也有 ODF 格式方面的計(jì)劃。Wikipedia 提供了有關(guān) ODF 格式及其在桌面應(yīng)用程序中的使用的討論,并提供了關(guān)于 ODF 的支持者的信息。所需資源雖然可以下載 Apache 2.0、PHP Version 5.21 或更高版本、DB2 Express-C 和 DB2 extensions for PHP,但是下載和安裝 Zend Core for IBM 是更好的選擇。安裝程序會(huì)徹底配置適合 PHP 和 DB2 的環(huán)境。安裝程序應(yīng)該包括 DB2 Express-C 9.1.2 的下載鏈接。可能需要調(diào)整配置,以添加 ZIP 支持,這一點(diǎn)我們?cè)诤竺鏁?huì)討論到。老式的文檔數(shù)據(jù)交換Windows 操作系統(tǒng)上的數(shù)據(jù)應(yīng)用程序編程接口(API)從 Data Access Objects (DAO) 開(kāi)始。它們經(jīng)歷了從 DAO(不是 Dead On Arrival)到 Remote Data Objects (RDO),再到 Open Database Connectivity (ODBC) 的過(guò)程。向 ODBC 的轉(zhuǎn)變意義重大,被認(rèn)為數(shù)據(jù)訪問(wèn)的一個(gè)里程碑。它實(shí)現(xiàn)了一種通用的方式,使開(kāi)發(fā)人員對(duì)一種 API 編碼,而不必考慮數(shù)據(jù)庫(kù)的類(lèi)型。通過(guò)使用 ODBC,可以借助 Mail Merge 之類(lèi)的程序?qū)㈥P(guān)系數(shù)據(jù)導(dǎo)入到 MS Office 應(yīng)用程序中。Object Linking and Embedding Data Base (OLE/DB) 支持不同數(shù)據(jù)源的數(shù)據(jù)交換,然而它的引入只是使市場(chǎng)感到困惑。對(duì)于 MS Office 生產(chǎn)率工具,這意味著文檔之間可以相互嵌套。實(shí)際上,當(dāng)將一個(gè)電子表格粘貼到一個(gè)演示文稿中時(shí),就是如此。然而,OLE/DB 是只用于 Windows 的解決方案。使用這些技術(shù)分解文檔并不輕易,并且這個(gè)過(guò)程難以自動(dòng)化。 上一頁(yè)12345678下一頁(yè) OpenOffice 和新的 MS Office 2007 格式概述這些格式實(shí)際上是一個(gè)包含資源和用于 XML 文檔的文件夾的 ZIP 文件。Word 文檔的實(shí)際文本內(nèi)容以 XML 文件的形式存儲(chǔ)。在我們的示例文檔中,它在歸檔文件中的 “word/document.xml 中。這種文件格式使開(kāi)發(fā)人員可以捕捉這些文檔中的實(shí)際數(shù)據(jù)。雖然 OpenOffice 使用這種格式已經(jīng)有一段時(shí)間了,但 MS Office 2007 只是最近才引入新的文檔格式。Microsoft 聲稱(chēng),這種格式易于訪問(wèn)和易于共享。很多年來(lái),MS Office 文檔一直都是專(zhuān)用的。令人振奮的是,Microsoft 的 Office 小組正在打開(kāi)這扇門(mén)。請(qǐng)看下面提供的用于 ODF 的 ZIP 文件內(nèi)容(可在 下載 小節(jié)中找到):圖 1. WinZip 中 opendoc.odt 的內(nèi)容使用DB2 9 pureXML管理ODF和Microsoft Office 2007 文檔(1)請(qǐng)看下面的 Microsoft 格式,注重其中有些不同,但概念和格式是類(lèi)似的:圖 1.1 WinZip 中 submit.docx 的內(nèi)容設(shè)置數(shù)據(jù)庫(kù)當(dāng)然,您需要?jiǎng)?chuàng)建一個(gè)表。您將把新的 Word 格式中的 XML 存儲(chǔ)在 XML 列中,而不是一個(gè) Character Large Object (CLOB) 中。為此,需要?jiǎng)?chuàng)建一個(gè)支持 XML 或 UTF-8 的數(shù)據(jù)庫(kù)。清單 1. 創(chuàng)建一個(gè)支持 XML 的數(shù)據(jù)庫(kù)CREATE DATABASE ODF AUTOMATIC STORAGE YES USING CODESET UTF-8 TERRITORY US現(xiàn)在,需要連接到數(shù)據(jù)庫(kù),并用下面的定義創(chuàng)建一個(gè)表。下面的代碼假設(shè)您有一個(gè)具有 CREATETAB 權(quán)限的用戶(hù)名 “db2admin。假如不具備這種用戶(hù)設(shè)置,可以修改這些腳本,使具有適當(dāng)?shù)臄?shù)據(jù)庫(kù)用戶(hù)。 上一頁(yè)12345678下一頁(yè) 清單 2. 創(chuàng)建用于包含 ODF 和 MS Office 2007 文檔的支持 XML 的表CREATE TABLE DB2ADMIN.DOCUMENT ( ID INT NOT NULL PRIMARY KEY, OWNER VARCHAR(128), DOC XML  )設(shè)置 PHP 和 Zend Core for IBM代碼將使用 PHP 的 ZIP 實(shí)用程序和 PDO。PDO 已經(jīng)針對(duì) Zend Core for IBM 設(shè)置完畢,但是需要將 “zip 添加到配置中:打開(kāi) Zend Core Administration Console。 切換到 Configuration 選項(xiàng)卡和 Extensions 子選項(xiàng)卡。 向下滾動(dòng)到 ZIP 擴(kuò)展。 單擊 switch 圖標(biāo)將其打開(kāi)。 單擊 Save Settings。 重新啟動(dòng) Apache2。 假如它不在運(yùn)行,即在系統(tǒng)托盤(pán)中顯示為紅色羽毛,那么啟動(dòng) C:Program FilesendApache2inApacheMonitor.exe。 單擊它,從菜單中重新啟動(dòng) Apache2 HTTP Server。 假如這樣不行,那么試著編輯文件,確保 “C:Program FilesendCore for IBMetc 文件夾下的 php.ini 文件中包含下面幾行。將下面用粗體表示的一行添加到 php.ini 中:清單 3. 對(duì) php.ini 的修改extension=php_zip.dllextension=php_pdo.dllextension=php_pdo_ibm.dllextension_dir="c:program filesendCore for IBMlibphpext"使用 ODF 和 MS Office 2007 文檔現(xiàn)在,可以開(kāi)始使用 opendoc.odt 了,它是下載小節(jié)中提供的一個(gè) ODF 文件。雖然 圖 2 顯示了該文檔的 MS Word 外觀,但這個(gè) ODF 文件看起來(lái)類(lèi)似于 清單 4。該文檔使用像 “Heading 1 和 “Heading 2 這樣的樣式作為格式。然后,我們將查詢(xún) Heading 2 樣式,因?yàn)?OpenOffice 格式中使用了它。注重,在生產(chǎn)代碼中,還需要包括適當(dāng)?shù)腻e(cuò)誤處理代碼。 上一頁(yè)12345678下一頁(yè) 我還在下載小節(jié)中包括了一個(gè) submit.docx 文檔,該文檔使用 MS Office 2007 格式。圖 2 顯示這個(gè)文檔在 Word 中的樣子。和 ODF 一樣,該文檔利用 “Heading 1 和 “Heading 2 之類(lèi)的 Word 樣式作為格式。然后,我們將查詢(xún) Heading 2 樣式。圖 2. OpenOffice 或 MS Word 中顯示的示例文檔下面的 PHP 代碼使用了這個(gè)文檔,它對(duì) ZIP 清單中的項(xiàng)進(jìn)行遍歷,并提取具有相關(guān)數(shù)據(jù)的 XML 文檔。清單 4 提供了該代碼。將該代碼保存為 “odfconsume.php,以便后面引用。清單 4. 使用 OpenOffice (ODF) 格式 (odfconsume.php) 的 PHP 代碼<?php$user = "db2admin";$password = "secret";$zip = zip_open("c:opendoc.odt");$db = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=ODF;" . "HOSTNAME=localhost;PORT=50000;PROTOCOL=TCPIP;", $user, $password);echo $user." Connected";if ($zip) {while ($zip_entry = zip_read($zip)) {if (zip_entry_open($zip, $zip_entry, "r")&& zip_entry_name($zip_entry) == 'content.xml' ) {$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));$insstr ="INSERT INTO DB2ADMIN.DOCUMENT (ID,OWNER,DOC)VALUES (2,'Linux Office',:buf)";$stmt = $db->prepare( $insstr );$stmt->bindParam( ':buf' , $buf , PDO::PARAM_LOB , strlen($buf) );$stmt->execute();echo "Result: ".$db->errorCode()."";zip_entry_close($zip_entry);}echo "";}zip_close($zip);}?> 上一頁(yè)12345678下一頁(yè) 使用下面的命令行運(yùn)行該代碼:php odfconsume.php這會(huì)將一個(gè) XML 文檔插入到數(shù)據(jù)庫(kù)中,并打印出一個(gè)錯(cuò)誤碼。這里錯(cuò)誤碼很可能是 0。清單 4.1 是使用 MS Word 的代碼。將該代碼保存為 “msconsume.php,以便后面引用。清單 4.1 使用 MS Office 2007 格式 (msconsume.php) 的 PHP 代碼<?php $user = "db2admin"; $password = "secret"; $zip = zip_open("c:submit.docx"); $db = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=ODF;" ."HOSTNAME=localhost;PORT=50000;PROTOCOL=TCPIP;", $user, $password); echo $user." Connected"; if ($zip) { while ($zip_entry = zip_read($zip)) {if (zip_entry_open($zip, $zip_entry, "r") & zip_entry_name($zip_entry) == 'word/document.xml' ) {$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));$insstr ="INSERT INTO DB2ADMIN.DOCUMENT VALUES (1,'BILLY ONAIRE',:buf)";$stmt = $db->prepare( $insstr );$stmt->bindParam( ':buf' , $buf , PDO::PARAM_LOB , strlen($buf) ); $stmt->execute();echo "Result: ".$db->errorCode();zip_entry_close($zip_entry);}echo "";}zip_close($zip); }?> 上一頁(yè)12345678下一頁(yè) 和前面一樣,用下面的命令行運(yùn)行該代碼:php msconsume.php這會(huì)將一個(gè) XML 文檔插入到數(shù)據(jù)庫(kù)中,并打印出一個(gè)錯(cuò)誤碼。同樣,這里錯(cuò)誤碼很可能是 0。 再利用 ODF 和 Word 2007 內(nèi)容現(xiàn)在,在數(shù)據(jù)庫(kù)中有了 OpenOffice 和 Word 2007 文檔的內(nèi)容,您需要再利用該文檔,將它用于網(wǎng)站。這就是我們例子中市場(chǎng)部門(mén)必須要做的事情。清單 5 顯示了用于 ODF 的代碼,可以將該代碼保存為 “odfrepurpose.php,以便后面引用。從 輸出(一個(gè) HTML 片段)中,很輕易看到如何將這個(gè)文檔重新格式化為一個(gè)新聞提要,或者將它并入到一個(gè) Ajax 應(yīng)用程序中!清單 5. 將 ODF 格式(opendoc.odt)再利用到一個(gè)簡(jiǎn)單的 HTML 片段中<?php$user = "db2admin";$password = "secret";$db = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=ODF;" . "HOSTNAME=localhost;PORT=50000;PROTOCOL=TCPIP;", $user, $password);echo $user." Connected";$xqry =<<<TXTvalues( XMLSERIALIZE( XMLQUERY(' declare boundary-space strip; declare namespace text0="urn:oasis:names:tc:opendocument:xmlns:text:1.0"; declare namespace office0="urn:oasis:names:tc:opendocument:xmlns:office:1.0";for $t0 in db2-fn:xmlcolumn("DB2ADMIN.DOCUMENT.DOC")/office0:document-content/office0:body  let $p0 := $body0/office0:text/text0:p  let $h0 := $body0/office0:text/text0:h  where fn:exists($p0) or $h0:h/@text:style-name ="Heading_20_2"  return  if ( fn:exists( $style ) ) thenif ($h0:h/@text:style-name ="Heading_20_2" ) then <h1>{$txt}</h1>else () else <p>{$txt}</p>') as VARCHAR(2000)))TXT;$result=$db->query( $xqry );$arr = $result->fetch();echo $arr[1];?> 上一頁(yè)12345678下一頁(yè) 清單 5.1 顯示了再利用 Word 2007 的代碼,可以將該代碼保存為 “msrepurpose.php,以便后面引用。從 輸出(一個(gè) HTML 片段)中,很輕易看到如何將這個(gè)文檔重新格式化為一個(gè)新聞提要,或者將它并入到一個(gè) Ajax 應(yīng)用程序中!清單 5.1 將 Word 2007 格式(submit.docx)再利用到一個(gè)簡(jiǎn)單的 HTML 片段中<?php$user = "db2admin";$password = "secret";$db = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=ODF;" ."HOSTNAME=localhost;PORT=50000;PROTOCOL=TCPIP;", $user, $password);echo $user." Connected";$xqry =<<<TXTvalues(XMLSERIALIZE( XMLQUERY('declare boundary-space strip;declare namespace text0="urn:oasis:names:tc:opendocument:xmlns:text:1.0";declare namespace office0="urn:oasis:names:tc:opendocument:xmlns:office:1.0";for $t0 in db2-fn:xmlcolumn("DB2ADMIN.DOCUMENT.DOC")/office0:document-content/office0:body/office0:textlet $p := (for $pp in $t0/text0:p return <p>{$pp/text()}</p>)let $h := (for $hh in $t0/text0:h[@text0:style-name="Heading_20_2"]return <hl>{$hh/text()}</hl>)return($h,$p)')as varchar(3000)))TXT;echo "";$result=$db->query( $xqry );$arr = $result->fetch();echo $arr[1];?>要運(yùn)行該代碼,輸入:php.exe msrepurpose.php現(xiàn)在您也許會(huì)問(wèn),為什么不直接將它保存為 HTML 呢?XML 的生成會(huì)危害原始文檔的完整性,并且會(huì)丟失 MS Office 特性。然而,文檔的確小了很多,而且仍然可以用 XQuery 對(duì)它進(jìn)行再利用,就像對(duì)待 Word 2007 文件格式一樣。隨著文檔變得越來(lái)越大、越來(lái)越多(例如在大型會(huì)議中),您希望將這個(gè)邏輯應(yīng)用到儲(chǔ)存庫(kù)中每個(gè)文檔的每個(gè)部分。于是 XQuery 的威力就表現(xiàn)出來(lái)了!和 SQL 一樣,XQuery 使您通過(guò)一個(gè)查詢(xún)處理一組文檔。實(shí)際上,假如您愿意,也可以使用 SQL 查詢(xún)得到同樣的結(jié)果,因?yàn)樵?DB2 中這兩種語(yǔ)言可以互換。下面的清單顯示了 odfrepurpose.php 或 msrepurpose.php 的結(jié)果:清單 6. 輸出db2admin Connected<h1>Introduction to Web 2.0</h1><p>This is a documentthat will impress upon ...</p><h1>Abstract</h1><p>The nature of the industry is again turning to the browser ...</p>結(jié)束語(yǔ)本文討論的技巧在內(nèi)容治理和文檔治理解決方案中很有用。希望您已經(jīng)發(fā)現(xiàn),通過(guò) IBM DB2 pureXML 特性使用和再利用 OpenOffice 和 MS Office 2007 文檔十分輕易。實(shí)際上這個(gè)過(guò)程不需要很多代碼,這一點(diǎn)有助于取得好的性能。之后,考慮索引這些 XML 文檔,以進(jìn)一步利用 pureXML 混合存儲(chǔ)特性的優(yōu)點(diǎn)。 上一頁(yè)12345678
標(biāo)簽: DB2 數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 成人免播放器午夜视频 | 一级aaaaaa毛片免费同男同女 | 妞干网在线视频 | 成人5252色| 亚洲日韩中文字幕 | 生活片一级播放免费 | 一级做a爱片特黄在线观看 一级做a爱片特黄在线观看免费看 | 日韩一级黄 | 久精品视频 | 一级毛片aaa片免费观看 | 北条麻妃99精品青青久久 | 午夜久久免影院欧洲 | 国产欧美久久一区二区 | 日韩精品一区二区三区免费视频 | 国产日产欧产精品精品推荐在线 | 99av在线 | 日韩中文字幕网 | 激情在线播放免费视频高清 | 精品久久中文网址 | 亚洲欧美一区二区三区在饯 | 午夜爱爱毛片xxxx视频免费看 | 久久久久国产精品免费免费不卡 | 欧美日韩另类国产 | 放几个免费的毛片出来看 | 国产成人自拍在线 | 精品国产免费一区二区 | 亚洲va久久久久 | 欧美另类网 | 国产色站 | 国产一区二区精品人妖系列 | 久久r这里只有精品 | 91免费高清视频 | 亚洲精品一二三四 | 国产精品亚洲综合久久 | 色一情一乱一伦一区二区三区 | 欧美日韩国产深夜福利视频 | 九九视频国产 | 99久久精品国产麻豆 | 亚洲十欧美十日韩十国产 | 一级欧美在线的视频 | 国产免费资源高清小视频在线观看 |