Axis step.
Axis step. For example: "child::book[@pageCount > 800]".
Braced URI literal.
Comparison expression, where the optional comparison operator is a value comparison operator, general comparison operator or node comparison operator.
EQName, so either a URIQualifiedName or a QName.
Optional expression enclosed in braces.
Expression, which is a sequence of 1 or more ExprSingle objects, separated by commas.
Expression-single, that is, an expression without any top-level commas.
Expression-single, that is, an expression without any top-level commas. Most XPath expressions are expression-singles.
Intersect or except expression, optionally using the "intersect" or "except" operator.
Any leaf element in the AST of an XPath expression.
NCName, that is, a non-colon name.
Path expression, so a relative path expression possibly preceded by "/" or "//" (or the expression "/" itself).
Path expression, so a relative path expression possibly preceded by "/" or "//" (or the expression "/" itself). Path expressions are used to locate nodes within trees.
Postfix expression, which is a primary expression succeeded by 0 or more predicates, arguments lists and/or lookups.
Primary expression, which are the basic primitives of the language.
Primary expression, which are the basic primitives of the language. Examples are literals, variable references, function calls etc. Note that primary expressions can be rather simple but they do not have to be simple. For example, function calls can have arguments that are themselves quite complex expressions.
Range expression, where the optional range uses keyword "to" as operator.
Relative path expression, consisting of a number of step expressions separated by step operators ("/" and "//").
Simple map expression, using the optional map operator ("!").
Single step in an absolute or relative path expression.
Single step in an absolute or relative path expression. Note that step expressions are either postfix expressions or axis steps.
String concatenation expression, where the optional string concatenation uses the "||" operator.
Union expression, where the optional union uses operator "union" or "|".
Binding of a variable name to an expression.
XPathElem that can introduce one or more variable bindings.
XPath 3.1 AST.
XPath 3.1 AST. The root of the type hierarchy is XPathElem. It offers the ElemApi query API.
The requirements on this AST are as follows:
It would be natural for the AST types to have IS-A relationships modeled as type inheritance, and HAS-A relationships modeled as composition. Where feasible, this approach has been followed.
Having such an AST of a successfully parsed XPath expression, it must be easy to reliably find used namespace prefixes, for example.
TODO Improve several class names.
XPath expression.
Names, as per the XML specification.
Names, as per the XML specification. See for example https://www.w3.org/TR/REC-xml/#NT-Name.
Only characters in the Unicode BMP (max. ) are considered. So the range from #x10000 to #xEFFFF is not recognized as valid name characters in this implementation.
The functions of this class must be fast, because they are typically called very many times during parsing of XPath expressions.
Classes like NCName lean on this object. An NCName is an XML name without colon.
Abstract syntax tree of XPath expressions, as produced by the parsers specified in the 'parse' package.