Active XML v1.0

 o AXML Home
 o Basics
   o AXML documents
   o AXML services
 o Architecture
 o Implementation
 o Download
   o AXML 1.0

 Related Links

Web standards

 o XML
 o XQuery


 o Apache Axis
 o X-OQL (V. Aguilera)

XML and Web Services provides standards for accessing more and more sources of dynamic, up-to-date, relevant information.

Active XML (AXML for short) is a declarative framework that harnesses web services for data integration, and is put to work in a peer-to-peer architecture. A detailed introduction to Active XML can be found in the Active XML Primer.
An overview of the project may be found in the AXML Overview.

This work is partially funded by EU IST project DBGlobe, "A Data-centric Approach to Global Computing" ( IST - 2001 - 32645 ) and partially funded by the French government grant ACI MDP2P.


Active XML relies on two key notions:

  • AXML documents, that contain calls to web services, and
  • AXML services, that are declaratively defined as XQuery queries over AXML documents.

They are used in a peer-to-peer architecture, where each AXML peer holds a repository of AXML documents and provides some AXML services.

AXML documents

Here is a sample AXML document:

<dep name="Toy">
<sc></sc> </dep> <dep name="DVD"> <sc></sc> </dept> </directory>

The <sc> elements are interpreted as calls to web services. After, say, the first service is called, the result of the call is integrated in the document, which becomes:

<dep name="Toy">
<sc></sc> <person pname="Smith">
<sc></sc> </pda>
</dep> <dep name="DVD"> <sc></sc> </dept> </directory>

Note that the service results and parameters can themselves be AXML documents. Therefore, AXML peers exchange intensional data.

The language also provide extra features to control when the web services are invoked and how long their results should be kept in the document.

AXML services

Here is a sample service definition:

let service Get-Toy-Personnel( ) be
for $a in document("")/member,
$b in $a//name,
$c in $a//phone,
$d in $a//pda
<person pname={ $b/text() }> { $c } { $d } </person>

Each AXML service is defined as a parameterized query over the peer's repository documents. They can be invoked using the SOAP protocol.

We also provide for continuous services, in the style of Pub/Sub systems.



The internal architecture of an AXML peer relies on the following modules:

  • The document store, which provides persistent storage for AXML documents,
  • The evaluator, whose role is to trigger the services calls embedded inside AXML documents and to update the latters accordingly.
  • The XQuery processor deals with the service requests, by evaluating the corresponding queries.

Peers communicate with each other only by the mean of web service invocations, through their SOAP wrapper modules. They can exchange XML data with any web service client/provider, and AXML data with AXML peers.


Our implementation of Active XML peers corresponds to the above architecture. It is implemented in Java, and relies on the following software:

  • The X-OQL query processor,
  • Apache Tomcat 4.0 servlet engine,
  • Apache Axis toolkit 1.0 for web services,
  • The JSTL 1.0 standard tag library.

It was demonstrated at the VLDB 2002 conference, running a peer-to-peer auctioning system (pdf slides).

An alternative implementation, in Caml, is currently being developed at Imperial College.

For any questions about this page, please contact