ネイティブXML データベースの Berkeley DBXML をつかっています.

Oracle: Berkeley DB XML 2.4.16: (October 21, 2008)
Berkeley DB 4.6.21: (September 27, 2007)

と Mac OSX Leopard + Python API の組み合わせ.

DBXML は背後で BDB を走らせていてる.
なので, XMLデータを蓄積する Container をオープンするまえに
BDBを作成する必要がある.

env = bsddb3.db.DBEnv()
env.open("working-directory-name"
, bsddb3.db.DB_CREATE | bsddb3.db.DB_INIT_LOCK |
bsddb3.db.DB_INIT_MPOOL | bsddb3.db.DB_PRIVATE, 0)

BDBのオプションは上記のようにしている.
bsddb3.db.DB_PRIVATE オプションを指定することで,まず BDB が in-memory DB となる.
これを設定しないと working-directory-name の下に __db.001 といった名前のファイルが作成される.

続いて Container をオープンするために

mgr = dbxml.XmlManager(env, 0)
container = mgr.createContainer('', dbxml.XmlContainer.NodeContainer)
container.addAlias('container-name')

としている.
2行目の第1引数は container の名前を指定する.
これを空文字列にすることで container がメモリー上に作成される.
名前を指定すると working-directory-name の下に,ここで指定した名前の
Container がファイルとして作成される.

これで BDB も DBXML も in-memory になった.
3行目でメモリー上の container にエリアスで名前をつける.
この container 名は xquery を発行するときに使用する.

例えば, xpath の指定は

doc("container-name/document-name")/tag-a/tag-2/..

となる.