Photo
XAOS (XML Analysis, Optimization, and Stuff)

XPath, an integral component of XML standards such as SQLX, XQuery and XSLT, is a language for addressing portions of an XML document. The goal of the XAOS project is to support the use of XPath in large scale, real world applications by developing efficient techniques for processing XPath. The key contribution of the XAOS XPath processor is its ability to handle complex XPath expressions that include uses of forward and backward axes in a streaming fashion.

Streaming vs. Whole Document
Traditional XPath processors use a "whole document" model for processing XPath expressions. In such a model, the input XML document is parsed entirely and loaded into memory, and then, is searched for the portions which match the XPath expression. In many important situations, the whole document model is inefficient or infeasible. Such situations call for a "streaming" model of document processing, where information streams through the system rather than being loaded into memory and searched as a whole. Typical examples include searching in federated databases and publication / subscription systems. In these applications, the XML documents being processed might be very large, making loading and searching in memory prohibitive. Furthermore, data might stream through the application, giving rise to the desire that specified parts of the XML document be found dynamically as data became available.

Another drawback of the algorithms used in traditional processors is they may traverse an XML document several times while processing an XPath expression. The premise of streaming XPath processors is that many common XPath expressions can be resolved in one depth-first traversal of the input document, thus leading to better performance.

Forward and Backward Axes Processing
One of the key features of the XAOS XPath processor is its ability to handle backward axes (such as parent and ancestor) as well as forward axes (such as child and descendant) in a streaming fashion. Prior streaming XPath processors, such as TurboXPath, can only handle forward axes.