|
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.
|