#!/usr/local/bin/perl

use strict;
use warnings;
use Sleepycat::DbXml ;

#
# Example 8
#
# Create an XML Container within a Berkeley DB environment,
# then within a Berkeley DB transaction, add a document,
# get the document, display the content of the document.
#

eval
{
	my $dbenv = new DbEnv ;
	$dbenv->open(undef,Db::DB_CREATE|Db::DB_INIT_LOCK|Db::DB_INIT_LOG|Db::DB_INIT_MPOOL|Db::DB_INIT_TXN);
	my $txn = $dbenv->txn_begin ;
	my $container = new XmlContainer($dbenv, "test.dbxml");
	$container->open($txn, Db::DB_CREATE);
	my $document = new XmlDocument ;
	$document->setContent(
	    "<book><title>Knowledge Discovery in Databases.</title></book>");
	my $id = $container->putDocument($txn,$document);
	$document = $container->getDocument($txn,$id);
	print "$id = " . $document->getContentAsString() . "\n";
	$txn->commit;
	$container->close();
	$container->remove();
	$dbenv->close;
};

if (my $e = catch std::exception)
{
	warn $e->what . "\n";
}
elsif($@)
{
	warn $@;
}
