Towards the industrialization of XML processing

Last updated Friday, January 04, 2002

The Big Aspirational Plan

XPipe, as used over the last couple of years internally in Propylon is a combination of CPython, C++, Java and other bits and pieces.

In creating the XPipe open source project, the XPipe materials will be cleaned up prior to release. On the way, the following important modiifications are taking place:

  • All CPython is being moved to the Java Virtual Machine thanks to the magic of Jython.
  • The Pyxie library has undergone a significant overhaul for Java and for some other archictural reasons
  • All DTDs are being replaced with RelaxNG schemas

There are basically four levels to the XPipe architecture:

Level 0 - XComponents
Level 1 - XPipes
Level 2 - XRigs
Level 3 - XGrid

Each level is usable independantly of any higher levels providing a gradual increase in power.

XComponents can be treated as black boxes to be installed & executed standalone.

At the next level up, an XPipe combines one or more XComponents into a "daisy chain" providing some higher order transformation function.

At the next level up, an XRig combines XPipes into a dataflow that can have multiple data flows and complex inter-pipe connections providing data loops, splits and so on.

Finally at the XGrid level an XPipe/XRig is executed on a network using massively parallel distribution of the workload, P2P style, to get essentially arbitrarily high data throughput rates.

A collection of support tools ranging from editors to unit testers to information retrieval engines will exist at each level of the architecture. The common execution-level facet of each level is the Java Virtual Machine.


XComponents are the building blocks of applications. They typically consume XML and produce more XML. XComponents can be developed in any language that can execute on the JVM. For the moment we are concentrating on "the big three" of Java, Jython and XSLT.

Users will be able to grab an XComponent, install it and execute it with XPipe-supplied tools.

Without a solid Component model, XPipe cannot hope to suceed in its objective of industrializing XML processing. The focus of the current Version 0. 2 release is to solicit feedback on the XComponent model.


An XPipe is a collection of XComponents daisy chained together to achieve some cumulative transformation effect. XPipes are the focus of the 0.6 release.

Users will be able to grab an XPipe, install it and execute it with XPipe-supplied tools.


An XRigs is a collection of XPipes interconnected to achieve arbitrarily complex data flows - branches, loops, duplexers etc. XRigs are the focus of the 1.0 release.

Users will be able to grab an XRig, install it and execute it with XPipe-supplied tools.


An XGrid is an execution environment for XPipes or XRigs that allows an arbitrary number of processors (XNodes) to provide computational resources to achieve the data processing effects required in the shortest possible time with the highest possible throughput rate.

XGrids are planned that site natively on top of HTTP and also on top of P2P infrastructures such as JXTA.

For more information about this the whys and wherefores of this architecture see Presentation on XPipe presented at XML 2001 Florida USA and Draft Essay on the XPipe Approach.

A variety of mini-essays on aspects of XPipe are available here