From: Wolfgang M. <wol...@gm...> - 2005-05-30 19:45:17
|
> I can't understand the correct way to create the internal representation,= I > understood to call querylexer,queryparser to get AST but I don't understa= nd how > to set up the context, that is necessary to call the treeparser to get in= ternal > representation. The easiest way is to use the org.exist.xquery.XQuery class. It provides a compile method: CompiledXQuery compile(XQueryContext context, Reader reader, boolean xpoint= er); The returned CompiledXQuery object will always be an instance of org.exist.xquery.PathExpr and it is safe to just cast it to this type. PathExpr is a general container that contains one or more child expressions. This is the starting point to traverse the whole expression tree. However, I admit that eXist currently lacks a clean design for access to the expression tree (a visitor pattern or something would be nice here). So if you would like to contribute something while implementing your code ... You can get an XQuery instance from DBBroker.getXQueryService(). I guess you already know how to obtain a DBBroker instance (otherwise you would not have got so far). If not, check org.exist.xquery.test.LexerTest. Wolfgang |