net.sf.saxon.expr
public class PathMap extends Object
The current implementation works only for XPath 2.0 expressions (for example, constructs like xsl:for-each-group are not handled.)
This class, together with the overloaded method Expression can be seen as an implementation of the static path analysis algorithm given in section 4 of A. Marian and J. Simeon, Projecting XML Documents, VLDB 2003.
Nested Class Summary | |
---|---|
static class | PathMap.PathMapArc
An arc joining two nodes in the path map. |
static class | PathMap.PathMapNode
A node in the path map. |
static class | PathMap.PathMapNodeSet
A (mutable) set of nodes in the path map |
static class | PathMap.PathMapRoot
A root node in the path map. |
Constructor Summary | |
---|---|
PathMap(Expression exp)
Create the PathMap for an expression |
Method Summary | |
---|---|
void | diagnosticDump(PrintStream out)
Display a printed representation of the path map |
PathMap.PathMapRoot | getContextRoot()
Get the path map root for the context document |
PathMap.PathMapNodeSet | getPathForVariable(Binding binding)
Get the path used when evaluating a given variable binding |
PathMap.PathMapRoot[] | getPathMapRoots()
Get all the root expressions from the path map |
PathMap.PathMapRoot | getRootForDocument(String requiredUri)
Get the path map root for a call on the doc() or document() function with a given literal argument |
static void | main(String[] args)
Main method for testing |
PathMap.PathMapRoot | makeNewRoot(Expression exp)
Make a new root node in the path map. |
PathMap.PathMapRoot | reduceToDownwardsAxes(PathMap.PathMapRoot root)
Given a PathMapRoot, simplify the tree rooted at this node so that
it only contains downwards selections: specifically, so that the only axes
used are child, attribute, namespace, and descendant. |
void | registerPathForVariable(Binding binding, PathMap.PathMapNodeSet nodeset)
Register the path used when evaluating a given variable binding |
Parameters: exp the expression whose PathMap is required
Parameters: out the output stream to which the output will be written
Returns: the path map root for the context document if there is one, or null if none is found.
Throws: IllegalStateException if there is more than one path map root for the context document
Parameters: binding the variable binding
Returns: the set of PathMap nodes reachable when evaluating that variable
Returns: an array containing the root expressions
Parameters: requiredUri the literal argument we are looking for
Returns: the path map root for the specified document if there is one, or null if none is found.
Throws: IllegalStateException if there is more than one path map root for the specified document
Parameters: args Takes one argument, the XPath expression to be analyzed
Throws: Exception
Parameters: exp the expression represented by this root node
Returns: the new root node
Parameters: root the root of the path to be simplified
Returns: the path map root after converting the tree to use downwards axes only
Parameters: binding the variable binding nodeset the set of PathMap nodes reachable when evaluating that variable