Untitled

## BDB::XML::Container

The container name provides the base for the filenames of the database files used to store the container content. The directory within which the files are opened is taken from the environment passed through the Container constructor. If no environment was provided, then the directory used will be the current working directory.

### Class Methods

`allocate(name = nil, options = {})`
  allocate a new Container object
  name
    the name of the container
  options
    Hash with the possible keys
    env
      the Berkeley DB environment within which all database operations are to be performed.
    txn
      the transaction within which all database operations are to be performed.
    set_pagesize
      Set the pagesize of the primary database (512 < size < 64K)
`dump(name, filename)`
  Dump the container name into the specified file.
`load(name, filename)`
  Load data from the specified file into the container name
`remove(name)`
  Remove the container name
`rename(name, newname)`
  Rename the container name
`salvage(name, filename, flags = 0)`
  Verify the container name, and save the content in filename
  flags
    flags can has the value BDB::AGGRESSIVE
`set_name(name, str)`
  Set the name for the container name. The underlying files for the container are not renamed - for that, see Container::rename
`verify(name)`
  Verify the container name

### Methods

`close(flags = 0)`
  close an open container
  flags
    flags can has the value 0 or BDB::NOSYNC
`delete(document, flags = 0)`
  Remove the document from the container
  document
    document can be an ID or an BDB::XML::Document previously stored
  flags
    flags can has the value 0 or BDB::AUTO_COMMIT
`environment`
`env`
  return the current environment for the container, or nil
`environment?`
`env?`
  return true if the container was opend in an environment
`each {|doc| ... }`
  Iterate over all documents
`self[id]`
`get(id, flags = 0)`
  Fetch the document from the container
  id
    the id assigned to the document when it was first added to a container
  flags
    flags can has the value 0 or BDB::DIRTY_READ, BDB::RMW
`self[id] = document`
  Replace the document (see also #update)
`index=(index)`
  set the indexing : index must be an BDB::XML::Index object
`index`

  Retrieve the BDB::XML::Index

  Return nil if no indexing was specified

`initialize(name, flags = 0, mode = 0)`
  open the container
  name
    see allocate
  flags
    The flags must be the string "r", "r+", "w", "w+", "a", "a+" or and integer value.
  mode
    mode for creation (see chmod(2))
`modify(mod, context = nil, flags = 0)`

  in-place modification of all documents according to the state of the BDB::XML::Modify object, which contains an XPath expression to target document nodes, as well as specification of the modifications to perform

  context is an optional BDB::XML::Context used for the update operations on the container.

  flags must be set to zero or BDB::RMW to acquire a write lock

`name`
  return the name of the container
`name=(str)`
  Set the name of the container. Can be called only on a closed container See also Container::set_name
`open?`
  return true if the container is open
`parse(query, context = nil)`
  Pre-parse an XPath query and return an BDB::XML::XPath object
  query
    the XPath query to execute against the container
  context
    the context within which the query will be executed
`push(document, flags = 0)`
  Add a document to the container and return an ID
  document
    an object BDB::XML::Document or any object suitable for BDB::XML::Document::new
  flags
    flags can be 0 or BDB::AUTO_COMMIT
`<<(document)`
  Add a document to the container and return self
`query(xpath, flags = 0)`
`query(string, context, flags = 0)`

  Query the container with an XPath expression, which can be an object BDB::XML::XPath or a String

  flags
    flags can have the value 0 or BDB::DIRTY_READ, BDB::RMW

  return a BDB::XML::Results object

`search(xpath, returntype = BDB::XML::Context::Document) {|doc| ... }`

  Iterate over the result of a query

  returntype can have the values BDB::XML::Context::Document or BDB::XML::Context::Values

  the query is evaluated lazily

`transaction`
  return the transaction associated with the container, or nil
`in_transaction?`
`transaction?`
  return true if the container is associated with a transaction
`update(document)`
  Update a document within the container
`update_context {|cxt| ... }`
`context {|cxt| ... }`

  return an BDB::XML::UpdateContext which can be used to perform [], []=, push, delete, update operation

  This can be used for a performance improvement