NCName | ::= | ( NCName_Without_CoreFunctions | <NODE> | <TEXT> | <COMMENT> | <PI> | <FUNCTION_LAST> | <FUNCTION_POSITION> | <FUNCTION_COUNT> | <FUNCTION_ID> | <FUNCTION_LOCAL_NAME> | <FUNCTION_NAMESPACE_URI> | <FUNCTION_NAME> | <FUNCTION_STRING> | <FUNCTION_CONCAT> | <FUNCTION_STARTS_WITH> | <FUNCTION_CONTAINS> | <FUNCTION_SUBSTRING_BEFORE> | <FUNCTION_SUBSTRING_AFTER> | <FUNCTION_SUBSTRING> | <FUNCTION_STRING_LENGTH> | <FUNCTION_NORMALIZE_SPACE> | <FUNCTION_TRANSLATE> | <FUNCTION_BOOLEAN> | <FUNCTION_NOT> | <FUNCTION_TRUE> | <FUNCTION_FALSE> | <FUNCTION_NULL> | <FUNCTION_LANG> | <FUNCTION_NUMBER> | <FUNCTION_SUM> | <FUNCTION_FLOOR> | <FUNCTION_CEILING> | <FUNCTION_ROUND> | <FUNCTION_KEY> | <FUNCTION_FORMAT_NUMBER> ) |
NCName_Without_CoreFunctions | ::= | ( <NCName> | <OR> | <AND> | <MOD> | <DIV> ) |
CoreFunctionName | ::= | ( <FUNCTION_LAST> | <FUNCTION_POSITION> | <FUNCTION_COUNT> | <FUNCTION_ID> | <FUNCTION_LOCAL_NAME> | <FUNCTION_NAMESPACE_URI> | <FUNCTION_NAME> | <FUNCTION_STRING> | <FUNCTION_CONCAT> | <FUNCTION_STARTS_WITH> | <FUNCTION_CONTAINS> | <FUNCTION_SUBSTRING_BEFORE> | <FUNCTION_SUBSTRING_AFTER> | <FUNCTION_SUBSTRING> | <FUNCTION_STRING_LENGTH> | <FUNCTION_NORMALIZE_SPACE> | <FUNCTION_TRANSLATE> | <FUNCTION_BOOLEAN> | <FUNCTION_NOT> | <FUNCTION_TRUE> | <FUNCTION_FALSE> | <FUNCTION_NULL> | <FUNCTION_LANG> | <FUNCTION_NUMBER> | <FUNCTION_SUM> | <FUNCTION_FLOOR> | <FUNCTION_CEILING> | <FUNCTION_ROUND> | <FUNCTION_KEY> | <FUNCTION_FORMAT_NUMBER> ) |
QName | ::= | NCName ( ":" NCName )? |
QName_Without_CoreFunctions | ::= | ( NCName ":" NCName | NCName_Without_CoreFunctions ) |
parseExpression | ::= | Expression <EOF> |
LocationPath | ::= | ( RelativeLocationPath | AbsoluteLocationPath ) |
AbsoluteLocationPath | ::= | ( ( LocationStep ( LocationStep )* ) | <SLASH> ) |
RelativeLocationPath | ::= | ( NodeTest ( LocationStep )* ) |
LocationStep | ::= | ( <SLASH> | <SLASHSLASH> ) NodeTest |
NodeTest | ::= | ( ( AxisSpecifier ( NodeType "(" ")" | <PI> "(" <Literal> ")" | WildcardName ) | "." | ".." ) ( Predicate )* ) |
AxisSpecifier | ::= | ( AxisName | AbbreviatedAxisSpecifier ) |
AxisName | ::= | ( <AXIS_SELF> | <AXIS_CHILD> | <AXIS_PARENT> | <AXIS_ANCESTOR> | <AXIS_ATTRIBUTE> | <AXIS_NAMESPACE> | <AXIS_PRECEDING> | <AXIS_FOLLOWING> | <AXIS_DESCENDANT> | <AXIS_ANCESTOR_OR_SELF> | <AXIS_FOLLOWING_SIBLING> | <AXIS_PRECEDING_SIBLING> | <AXIS_DESCENDANT_OR_SELF> ) |
Predicate | ::= | "[" Expression "]" |
AbbreviatedAxisSpecifier | ::= | ( "@" )? |
Expression | ::= | OrExpr |
PrimaryExpr | ::= | ( VariableReference | "(" Expression ")" | <Literal> | <Number> | CoreFunctionCall | FunctionCall ) |
FunctionCall | ::= | FunctionName ArgumentList |
CoreFunctionCall | ::= | ( CoreFunctionName ) ArgumentList |
ArgumentList | ::= | "(" ( Argument ( "," Argument )* )? ")" |
Argument | ::= | Expression |
UnionExpr | ::= | ( PathExpr ( <UNION> PathExpr )* ) |
PathExpr | ::= | ( FilterExpr | LocationPath ) |
FilterExpr | ::= | ( PrimaryExpr ( Predicate )* ( LocationStep )* ) |
OrExpr | ::= | ( AndExpr ( <OR> AndExpr )* ) |
AndExpr | ::= | ( EqualityExpr ( <AND> EqualityExpr )* ) |
EqualityExpr | ::= | ( RelationalExpr ( ( <EQ> RelationalExpr | <NEQ> RelationalExpr ) )* ) |
RelationalExpr | ::= | ( AdditiveExpr ( ( <LT> AdditiveExpr | <GT> AdditiveExpr | <LTE> AdditiveExpr | <GTE> AdditiveExpr ) )* ) |
AdditiveExpr | ::= | ( SubtractiveExpr ( ( <PLUS> SubtractiveExpr ) )* ) |
SubtractiveExpr | ::= | ( MultiplicativeExpr ( <MINUS> MultiplicativeExpr )* ) |
MultiplicativeExpr | ::= | ( UnaryExpr ( ( "*" UnaryExpr | <DIV> UnaryExpr | <MOD> UnaryExpr ) )* ) |
UnaryExpr | ::= | ( UnionExpr | <MINUS> UnaryExpr ) |
FunctionName | ::= | QName_Without_CoreFunctions |
VariableReference | ::= | <VARIABLE> QName |
WildcardName | ::= | ( ( "*" | NCName ) ( ":" ( "*" | NCName ) )? ) |
NodeType | ::= | ( <TEXT> | <NODE> | <COMMENT> | <PI> ) |