<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Oracle Berkeley DB 中国研发团队的博客 &#187; xml</title>
	<atom:link href="http://www.bdbchina.com/tag/xml/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bdbchina.com</link>
	<description>Oracle Berkeley DB 中国研发团队的博客</description>
	<lastBuildDate>Thu, 15 Dec 2011 10:35:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>采用Berkeley DB XML PHP建立原生XML Web服务器</title>
		<link>http://www.bdbchina.com/2009/10/%e9%87%87%e7%94%a8berkeley-db-xml-php%e5%bb%ba%e7%ab%8b%e5%8e%9f%e7%94%9fxml-web%e6%9c%8d%e5%8a%a1%e5%99%a8/</link>
		<comments>http://www.bdbchina.com/2009/10/%e9%87%87%e7%94%a8berkeley-db-xml-php%e5%bb%ba%e7%ab%8b%e5%8e%9f%e7%94%9fxml-web%e6%9c%8d%e5%8a%a1%e5%99%a8/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 05:58:39 +0000</pubDate>
		<dc:creator>赵汝聪</dc:creator>
				<category><![CDATA[Berkeley DB XML]]></category>
		<category><![CDATA[赵汝聪]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=618</guid>
		<description><![CDATA[近十年来，XML应用越发广泛，政府也推出了《基于XML的电子公文格式规范》等标准。那么，在需要XML数据库引擎的情况下，采用原生XML数据库Berkeley DB XML(以下简称BDB XML)取代MySQL(或其它传统DB)做后台数据库是一个更好的选择。
BDB XML是Oracle推出的一款开源原生XML数据库。与传统数据库相比，原生XML数据库的优势有：
1. 可以直接操作XML文件，XML数据无损&#8211;在某些场合，无损的数据源意味着法律效力。
2. 原生检索方式，支持XQuery和XPath，符合XML习惯。
3. 性能优化：原生XML数据库会针对XML特点进行各种优化，如插入文档索引、建立节点ID等。
4. 支持相同数据的不同视图。
和其它原生XML数据库相比，BDB XML优势有：
1. 完整的ACID 事务处理、自动恢复、热备份、用于分布式事务的HA支持。
2. 支持XQuery(含XQuery Update)和XPATH。
3. 可以利用其特有的二进制元数据存取大容量二进制对象(非XML数据)。
4. 支持全Unicode字符集，中文存储、查询都不成问题。
5. 提供一套容器和迭代器接口访问和操作查询结果。
6. 提供交互式命令行工具。

以上第三点是一个非常实用的特性，某种程度上它补足了XML应用的”最后一公里“：比方说，你正在为教育部门开发一个考生管理数据库，需要将考生的资料存成XML文档，那么存取照片(二进制数据)就相当麻烦。一般来讲传统的选择有两种：一是转换为Base64Binary格式嵌入到XML文档中，这意味着存取两端都需要转换大量图片数据，效率就很低下;二是为每个照片生成一个引用再另存它处，只在XML文档中保留一个引用，这种方法不但复杂，而且把数据从文档中分割了出来，损失了ACID特性，管理不便。而使用BDB XML就可以将照片数据直接以二进制元数据的形式嵌入到XML文档中，存取都非常方便，还可以基于数据库实现图像/视频检索。
下面，介绍一下BDB XML PHP的安装过程：
安装Apache+PHP环境
好吧，这是一个烂大街的话题，网上一抓一大把。下面以Debian 5.0和apache2为例：
用aptitude安装以下软件包：

apache2
libapache2-mod-php5
php5
php5-dev
php5-cgi
安装完毕。启动Apache服务器：
sudo /etc/init.d/apache2 start
测试一下是否安装成功，首先找到http的根目录(本机环境是/var/www)，在该目录下生成php测试文件test.php(内容如下)：
&#60;?phpinfo();?&#62;
用浏览器打开网页服务器的test.php，如果安装成功，会打开php信息页。
安装BDB XML PHP
移步http://www.oracle.com/technology/software/products/berkeley-db/xml/index.html下载源码包dbxml-2.5.13.tar.gz，并放置在$HOME目录下。下面以Linux上的安装为例：

cd $HOME
tar zxf dbxml-2.5.13.tar.gz
cd dbxml-2.5.13
./buildall
cd db-4.8.24/php_db4
phpize
./configure --with-db4=$PWD/../../install
make
sudo make install
cd ../../dbxml/src/php/
phpize
./configure --with-dbxml=$PWD/../../../install
make
sudo make install

接下来编辑/etc/php5/apache2/php.ini和/etc/php5/cgi/php.ini文件(可能路径略有不同)，把以下两行加到Dynamic Extensions段：
extension=db4.so
extension=dbxml.so
大功告成，为保安全，最好重启一下Apache服务器。到此BDB XML PHP全部安装成功。在实际应用中，需要特别注意帐户和权限问题：要保证Apache的运行帐户对容器(Container)文件及其所在目录有读写权限。
范例
从开心网的群共享页面http://www.kaixin001.com/group/file.php?gid=627784&#038;fid=450163&#038;start=0下载附件xmlData.tar.gz，解压后，将xmlData目录下的所有文件拷贝到http根目录下，然后执行：
./gen_cont.sh $HOME/dbxml-2.5.13/install/bin/dbxml
脚本即会生成一个容器：simple.dbxml。该容器内包含三百多个xml文档，形如：
&#60;?xml version="1.0"?&#62;
&#60;产品&#62;
    &#60;种类&#62;fruits&#60;/种类&#62;
    &#60;商品&#62;Avocado&#60;/商品&#62;
    &#60;存货&#62;
 [...]]]></description>
			<content:encoded><![CDATA[<p>近十年来，XML应用越发广泛，政府也推出了《基于XML的电子公文格式规范》等标准。那么，在需要XML数据库引擎的情况下，采用原生XML数据库Berkeley DB XML(以下简称BDB XML)取代MySQL(或其它传统DB)做后台数据库是一个更好的选择。</p>
<p>BDB XML是Oracle推出的一款开源原生XML数据库。与传统数据库相比，原生XML数据库的优势有：<br />
1. 可以直接操作XML文件，XML数据无损&#8211;在某些场合，无损的数据源意味着法律效力。<br />
2. 原生检索方式，支持XQuery和XPath，符合XML习惯。<br />
3. 性能优化：原生XML数据库会针对XML特点进行各种优化，如插入文档索引、建立节点ID等。<br />
4. 支持相同数据的不同视图。</p>
<p>和其它原生XML数据库相比，BDB XML优势有：<br />
1. 完整的ACID 事务处理、自动恢复、热备份、用于分布式事务的HA支持。<br />
2. 支持XQuery(含XQuery Update)和XPATH。<br />
3. 可以利用其特有的二进制元数据存取大容量二进制对象(非XML数据)。<br />
4. 支持全Unicode字符集，中文存储、查询都不成问题。<br />
5. 提供一套容器和迭代器接口访问和操作查询结果。<br />
6. 提供交互式命令行工具。<br />
<span id="more-618"></span><br />
以上第三点是一个非常实用的特性，某种程度上它补足了XML应用的”最后一公里“：比方说，你正在为教育部门开发一个考生管理数据库，需要将考生的资料存成XML文档，那么存取照片(二进制数据)就相当麻烦。一般来讲传统的选择有两种：一是转换为Base64Binary格式嵌入到XML文档中，这意味着存取两端都需要转换大量图片数据，效率就很低下;二是为每个照片生成一个引用再另存它处，只在XML文档中保留一个引用，这种方法不但复杂，而且把数据从文档中分割了出来，损失了ACID特性，管理不便。而使用BDB XML就可以将照片数据直接以二进制元数据的形式嵌入到XML文档中，存取都非常方便，还可以基于数据库实现图像/视频检索。</p>
<p>下面，介绍一下BDB XML PHP的安装过程：</p>
<h2>安装Apache+PHP环境</h2>
<p>好吧，这是一个烂大街的话题，网上一抓一大把。下面以Debian 5.0和apache2为例：<br />
用aptitude安装以下软件包：</p>
<pre>
apache2
libapache2-mod-php5
php5
php5-dev
php5-cgi</pre>
<p>安装完毕。启动Apache服务器：</p>
<pre>sudo /etc/init.d/apache2 start</pre>
<p>测试一下是否安装成功，首先找到http的根目录(本机环境是/var/www)，在该目录下生成php测试文件test.php(内容如下)：</p>
<blockquote><p>&lt;?phpinfo();?&gt;</p></blockquote>
<p>用浏览器打开网页服务器的test.php，如果安装成功，会打开php信息页。</p>
<h2>安装BDB XML PHP</h2>
<p>移步http://www.oracle.com/technology/software/products/berkeley-db/xml/index.html下载源码包dbxml-2.5.13.tar.gz，并放置在$HOME目录下。下面以Linux上的安装为例：</p>
<pre>
cd $HOME
tar zxf dbxml-2.5.13.tar.gz
cd dbxml-2.5.13
./buildall
cd db-4.8.24/php_db4
phpize
./configure --with-db4=$PWD/../../install
make
sudo make install
cd ../../dbxml/src/php/
phpize
./configure --with-dbxml=$PWD/../../../install
make
sudo make install
</pre>
<p>接下来编辑/etc/php5/apache2/php.ini和/etc/php5/cgi/php.ini文件(可能路径略有不同)，把以下两行加到Dynamic Extensions段：</p>
<pre>extension=db4.so
extension=dbxml.so</pre>
<p>大功告成，为保安全，最好重启一下Apache服务器。到此BDB XML PHP全部安装成功。在实际应用中，需要特别注意帐户和权限问题：<span style="color: #ff0000;"><strong>要保证Apache的运行帐户对容器(Container)文件及其所在目录有读写权限。</strong></span></p>
<h2>范例</h2>
<p>从开心网的群共享页面http://www.kaixin001.com/group/file.php?gid=627784&#038;fid=450163&#038;start=0下载附件xmlData.tar.gz，解压后，将xmlData目录下的所有文件拷贝到http根目录下，然后执行：</p>
<pre>./gen_cont.sh $HOME/dbxml-2.5.13/install/bin/dbxml</pre>
<p>脚本即会生成一个容器：simple.dbxml。该容器内包含三百多个xml文档，形如：</p>
<pre>&lt;?xml version="1.0"?&gt;
&lt;产品&gt;
    &lt;种类&gt;fruits&lt;/种类&gt;
    &lt;商品&gt;Avocado&lt;/商品&gt;
    &lt;存货&gt;
        &lt;库存量单位&gt;AvocfruijfHs18&lt;/库存量单位&gt;
        &lt;价格&gt;0.24&lt;/价格&gt;
        &lt;存货&gt;393&lt;/存货&gt;
    &lt;/存货&gt;
    &lt;厂家&gt;Simply Fresh&lt;/厂家&gt;
&lt;/产品&gt;</pre>
<p>使用浏览器访问服务器上的simple.php页面，即可看到转换后输出的数据表。simple.php的内容如下：</p>
<pre>&lt;html&gt;
&lt;body&gt;
&lt;?
$contName = 'simple.dbxml'; // Container名字

// 创建Manager和Context
$mgr = new XmlManager();
$qc = $mgr-&gt;createQueryContext(); // Query Context
$qc-&gt;setDefaultCollection($contName); // 设置默认Container

// 打开Container
$cont = $mgr-&gt;openContainer($contName);

// 创建XQuery查询表达式，将数据提取出来并转换为html表格
$query = 'for $产品 in collection()/产品';
$query .= ' return &lt;tr&gt;';
$query .= '&lt;td&gt;{$产品/种类/string()}&lt;/td&gt;';
$query .= '&lt;td&gt;{$产品/商品/string()}&lt;/td&gt;';
$query .= '&lt;td&gt;{$产品/存货/价格/string()}&lt;/td&gt;';
$query .= '&lt;td&gt;{$产品/存货/存货/string()}&lt;/td&gt;';
$query .= '&lt;td&gt;{$产品/厂家/string()}&lt;/td&gt;';
$query .= '&lt;/tr&gt;';

// 输出表格头
?&gt;&lt;table width='100%' border='frame'&gt;
&lt;tr&gt;&lt;td&gt;种类&lt;/td&gt;&lt;td&gt;商品&lt;/td&gt;&lt;td&gt;价格&lt;/td&gt;&lt;td&gt;存货&lt;/td&gt;&lt;td&gt;厂家&lt;/td&gt;&lt;/tr&gt;&lt;?

// 查询并遍历结果，输出到表格
$results = $mgr-&gt;query($query, $qc);
while ($results-&gt;hasNext())
echo $results-&gt;next()-&gt;asString();

// 输出表格尾
?&gt;&lt;/table&gt;&lt;?
?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>可见，只需30余行的代码就能完成xml数据库到网页表格的转换。例图：<br />
<img src="http://www.bdbchina.com/wp-content/uploads/2009/10/bdb_xml_php_web.png" alt="bdb_xml_php_web" title="bdb_xml_php_web" width="500" height="500" class="alignnone size-full wp-image-641" /></p>
<h2>总结</h2>
<p>至此，我们已经介绍了BDB XML PHP的安装和使用。至于更多BDB XML功能，如二进制元数据、环境、事务、排序、索引等，请关注后续文章。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2009/10/%e9%87%87%e7%94%a8berkeley-db-xml-php%e5%bb%ba%e7%ab%8b%e5%8e%9f%e7%94%9fxml-web%e6%9c%8d%e5%8a%a1%e5%99%a8/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Figaro – Berkeley DB XML for the .NET Framework</title>
		<link>http://www.bdbchina.com/2009/04/figaro-%e2%80%93-berkeley-db-xml-for-the-net-framework/</link>
		<comments>http://www.bdbchina.com/2009/04/figaro-%e2%80%93-berkeley-db-xml-for-the-net-framework/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 03:28:10 +0000</pubDate>
		<dc:creator>chaohuang</dc:creator>
				<category><![CDATA[Chao Huang]]></category>
		<category><![CDATA[bdb]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=195</guid>
		<description><![CDATA[在Endpoint Systems （2008年10月正式成为Oracle的合作伙伴）的博客： Introducing Figaro – the XML Database for the .NET Framework 中，作者以玩笑的口吻宣称2009年是 “(睡) 猫”年 &#8211; Endpoint Systems is declaring 2009 the Year of the (Sleepy) Cat。大家都知道，Sleepy Cat 正是Berkeley DB在被Oracle买下之前的公司名字。

该博客除了介绍说Figaro 是 Endpoint Systems 基于BDB-XML实现的，面向.NET用户的解决方案， 还简要提到了Berkeley DB及其产品家族的一些历史渊源。
英文好的同学以及在.NET平台上做XML相关应用的朋友可以看看。原文地址： http://endpointsystems.spaces.live.com/blog/cns!AFFCF464FE00AB35!248.entry。
]]></description>
			<content:encoded><![CDATA[<p>在<span id="ctl00_MainContentPlaceholder_ctl01_ctl00_lblEntry">Endpoint Systems （2008年10月正式成为Oracle的合作伙伴）的</span>博客： <a href="http://endpointsystems.spaces.live.com/blog/cns!AFFCF464FE00AB35!248.entry" target="_blank">Introducing Figaro – the XML Database for the .NET Framework</a> 中，作者以玩笑的口吻宣称2009年是 “(睡) 猫”年 &#8211; <span id="ctl00_MainContentPlaceholder_ctl01_ctl00_lblEntry">Endpoint Systems is declaring 2009 the Year of the (Sleepy) Cat。大家都知道，</span><span id="ctl00_MainContentPlaceholder_ctl01_ctl00_lblEntry">Sleepy Cat 正是Berkeley DB在被Oracle买下之前的公司名字。<br />
</span></p>
<p>该博客除了介绍<span id="ctl00_MainContentPlaceholder_ctl01_ctl00_lblEntry">说Figaro 是 Endpoint Systems 基于BDB-XML实现的，面向.NET用户的解决方案，</span> 还简要提到了Berkeley DB及其产品家族的一些历史渊源。</p>
<p>英文好的同学以及在.NET平台上做XML相关应用的朋友可以看看。原文地址： http://endpointsystems.spaces.live.com/blog/cns!AFFCF464FE00AB35!248.entry。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2009/04/figaro-%e2%80%93-berkeley-db-xml-for-the-net-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XqUSEme &#8211; 基于XQuery/BDBXML的Firefox Add-on</title>
		<link>http://www.bdbchina.com/2009/03/xquseme-%e5%9f%ba%e4%ba%8exquerybdbxml%e7%9a%84firefox-add-on/</link>
		<comments>http://www.bdbchina.com/2009/03/xquseme-%e5%9f%ba%e4%ba%8exquerybdbxml%e7%9a%84firefox-add-on/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 07:56:13 +0000</pubDate>
		<dc:creator>chaohuang</dc:creator>
				<category><![CDATA[Berkeley DB XML]]></category>
		<category><![CDATA[Chao Huang]]></category>
		<category><![CDATA[程序设计]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=139</guid>
		<description><![CDATA[Berkeley DB 开源社区的Brett Zamir基于XQuery/BDBXML做了一个Firefox的Add-on， 叫XqUSEme （https://addons.mozilla.org/en-US/firefox/addon/5515）。感兴趣的同学可以下载试试。
Brett Zamir在创建XqUSEme初期与Berkeley DB开发工程师的讨论在： http://forums.oracle.com/forums/thread.jspa?messageID=2239564。
有心的朋友，不知道有考虑过智能手机+浏览器+BDBXML的组合吗？欢迎和我讨论。
]]></description>
			<content:encoded><![CDATA[<p>Berkeley DB 开源社区的Brett Zamir基于XQuery/BDBXML做了一个Firefox的Add-on， 叫XqUSEme （<a href="https://addons.mozilla.org/en-US/firefox/addon/5515" target="_blank">https://addons.mozilla.org/en-US/firefox/addon/5515</a>）。感兴趣的同学可以下载试试。</p>
<p>Brett Zamir在创建XqUSEme初期与Berkeley DB开发工程师的讨论在： <a href="http://forums.oracle.com/forums/thread.jspa?messageID=2239564" target="_blank">http://forums.oracle.com/forums/thread.jspa?messageID=2239564</a>。</p>
<p>有心的朋友，不知道有考虑过智能手机+浏览器+BDBXML的组合吗？欢迎和我讨论。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2009/03/xquseme-%e5%9f%ba%e4%ba%8exquerybdbxml%e7%9a%84firefox-add-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
Դ
