使用DB2 9 pureXML管理ODF和Microsoft Office 2007 文档
2007-09-13 16:22:38 来源:WEB开发网清单 5.1 显示了再利用 Word 2007 的代码,可以将该代码保存为 “msrepurpose.php”,以便后面引用。从 输出(一个 HTML 片段)中,很容易看到如何将这个文档重新格式化为一个新闻提要,或者将它并入到一个 Ajax 应用程序中!
清单 5.1 将 Word 2007 格式(submit.docx)再利用到一个简单的 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 =
<<<TXT
values(
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:text
let $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];
?>
要运行该代码,输入:
现在您也许会问,为什么不直接将它保存为 HTML 呢?XML 的生成会危害原始文档的完整性,并且会丢失 MS Office 特性。然而,文档的确小了很多,而且仍然可以用 XQuery 对它进行再利用,就像对待 Word 2007 文件格式一样。随着文档变得越来越大、越来越多(例如在大型会议中),您希望将这个逻辑应用到储存库中每个文档的每个部分。于是 XQuery 的威力就表现出来了!和 SQL 一样,XQuery 使您通过一个查询处理一组文档。实际上,如果您愿意,也可以使用 SQL 查询得到同样的结果,因为在 DB2 中这两种语言可以互换。
下面的清单显示了 odfrepurpose.php 或 msrepurpose.php 的结果:
清单 6. 输出
db2admin Connected
<h1>Introduction to Web 2.0</h1><p>This is a document
that will impress upon ...</p><h1>Abstract</h1><p>The nature of the industry is a
gain turning to the browser ...</p>
结束语
本文讨论的技巧在内容管理和文档管理解决方案中很有用。希望您已经发现,通过 IBM DB2 pureXML 特性使用和再利用 OpenOffice 和 MS Office 2007 文档十分容易。实际上这个过程不需要很多代码,这一点有助于取得好的性能。之后,考虑索引这些 XML 文档,以进一步利用 pureXML 混合存储特性的优点。
更多精彩
赞助商链接