The XML:DB API is designed to enable a common access mechanism to
XML databases.
The API enables the construction of applications
to store, retrieve, modify and query data that is stored in an XML database.
These facilities are intended to enable the construction of
applications for any XML database that claims conformance with the
XML:DB API.
The API can
be considered generally equivalent to technologies such as ODBC,
JDBC or Perl DBI.
A major goal of the XML:DB API is to be modular and to define a
simple baseline for
implementors to follow. To achieve this goal the API is
broken into small modules that are then
bundled together in the
form of API Core Level specifications.
The API Core Level specifications form the basis for interoperability by
enabling a vendor to specify the maximum Core Level at which they
are conformant. Applications can tailor their functionality based on
Core Level or may require a specific Core Level to function. Vendors
are free to add any additional modules beyond the base Core Level
requirements but they are not required to do so. This modular nature
provides a very clean path to increase support from one Core Level
to the next.
On the surface this structure may seem overly complex and at first
brush it is. However it is born out of the fact that the XML
database arena is very new and rapidly changing. At this stage of
evolution the playing field has not stabalized enough to know
exactly what level of functionality is required to build
applications. The Core Level mechanism is designed to keep things
simple while still allowing significant evolution of the
specification over the next few years. This model is in many ways
similar to that being taken by the W3C DOM working group and is in
the spirit of the
Internet Standards Process RFC2026.
All API functionality is specified in terms of OMG IDL. IDL is easy
to understand and acts as a filter to minimize language specific
functionality. Language bindings for specific languages will be
provided. Initial language support looks to consist of Java and
Python but is open to the contribution of additional languages as
interest dictates.