| [1] | LocationPath | ::= | RelativeLocationPath | |
| | AbsoluteLocationPath | ||||
| [2] | AbsoluteLocationPath | ::= | '/' RelativeLocationPath? | |
| | AbbreviatedAbsoluteLocationPath | ||||
| [3] | RelativeLocationPath | ::= | Step | |
| | RelativeLocationPath '/' Step | ||||
| | AbbreviatedRelativeLocationPath | ||||
| [4] | Step | ::= | AxisSpecifier NodeTest Predicate* | |
| | AbbreviatedStep | ||||
| [5] | AxisSpecifier | ::= | AxisName '::' | |
| | AbbreviatedAxisSpecifier | ||||
| [6] | AxisName | ::= | 'ancestor' | |
| | 'ancestor-or-self' | ||||
| | 'attribute' | ||||
| | 'child' | ||||
| | 'descendant' | ||||
| | 'descendant-or-self' | ||||
| | 'following' | ||||
| | 'following-sibling' | ||||
| | 'namespace' | ||||
| | 'parent' | ||||
| | 'preceding' | ||||
| | 'preceding-sibling' | ||||
| | 'self' | ||||
| [7] | NodeTest | ::= | NameTest | |
| | NodeType '(' ')' | ||||
| | 'processing-instruction' '(' Literal ')' | ||||
| [8] | Predicate | ::= | '[' PredicateExpr ']' | |
| [9] | PredicateExpr | ::= | Expr | |
| [10] | AbbreviatedAbsoluteLocationPath | ::= | '//' RelativeLocationPath | |
| [11] | AbbreviatedRelativeLocationPath | ::= | RelativeLocationPath '//' Step | |
| [12] | AbbreviatedStep | ::= | '.' | |
| | '..' | ||||
| [13] | AbbreviatedAxisSpecifier | ::= | '@'? | |
| [14] | Expr | ::= | OrExpr | |
| [15] | PrimaryExpr | ::= | VariableReference | |
| | '(' Expr ')' | ||||
| | Literal | ||||
| | Number | ||||
| | FunctionCall | ||||
| [16] | FunctionCall | ::= | FunctionName '(' ( Argument ( ',' Argument )* )? ')' | |
| [17] | Argument | ::= | Expr | |
| [18] | UnionExpr | ::= | PathExpr | |
| | UnionExpr '|' PathExpr | ||||
| [19] | PathExpr | ::= | LocationPath | |
| | FilterExpr | ||||
| | FilterExpr '/' RelativeLocationPath | ||||
| | FilterExpr '//' RelativeLocationPath | ||||
| [20] | FilterExpr | ::= | PrimaryExpr | |
| | FilterExpr Predicate | ||||
| [21] | OrExpr | ::= | AndExpr | |
| | OrExpr 'or' AndExpr | ||||
| [22] | AndExpr | ::= | EqualityExpr | |
| | AndExpr 'and' EqualityExpr | ||||
| [23] | EqualityExpr | ::= | RelationalExpr | |
| | EqualityExpr '=' RelationalExpr | ||||
| | EqualityExpr '!=' RelationalExpr | ||||
| [24] | RelationalExpr | ::= | AdditiveExpr | |
| | RelationalExpr '<' AdditiveExpr | ||||
| | RelationalExpr '>' AdditiveExpr | ||||
| | RelationalExpr '<=' AdditiveExpr | ||||
| | RelationalExpr '>=' AdditiveExpr | ||||
| [25] | AdditiveExpr | ::= | MultiplicativeExpr | |
| | AdditiveExpr '+' MultiplicativeExpr | ||||
| | AdditiveExpr '-' MultiplicativeExpr | ||||
| [26] | MultiplicativeExpr | ::= | UnaryExpr | |
| | MultiplicativeExpr MultiplyOperator UnaryExpr | ||||
| | MultiplicativeExpr 'div' UnaryExpr | ||||
| | MultiplicativeExpr 'mod' UnaryExpr | ||||
| [27] | UnaryExpr | ::= | UnionExpr | |
| | '-' UnaryExpr | ||||
| [28] | ExprToken | ::= | '(' | ')' | '[' | ']' | '.' | '..' | '@' | ',' | '::' | |
| | NameTest | ||||
| | NodeType | ||||
| | Operator | ||||
| | FunctionName | ||||
| | AxisName | ||||
| | Literal | ||||
| | Number | ||||
| | VariableReference | ||||
| [29] | Literal | ::= | '"' [^"]* '"' | |
| | "'" [^']* "'" | ||||
| [30] | Number | ::= | Digits ('.' Digits?)? | |
| | '.' Digits | ||||
| [31] | Digits | ::= | [0-9]+ | |
| [32] | Operator | ::= | OperatorName | |
| | MultiplyOperator | ||||
| | '/' | '//' | '|' | '+' | '-' | '=' | '!=' | '<' | '<=' | '>' | '>=' | ||||
| [33] | OperatorName | ::= | 'and' | 'or' | 'mod' | 'div' | |
| [34] | MultiplyOperator | ::= | '*' | |
| [35] | FunctionName | ::= | QName - NodeType | |
| [36] | VariableReference | ::= | '$' QName | |
| [37] | NameTest | ::= | '*' | |
| | NCName ':' '*' | ||||
| | QName | ||||
| [38] | NodeType | ::= | 'comment' | |
| | 'text' | ||||
| | 'processing-instruction' | ||||
| | 'node' | ||||
| [39] | ExprWhitespace | ::= | S |
XPath语法产生式
最新推荐文章于 2025-12-24 13:32:58 发布
605

被折叠的 条评论
为什么被折叠?



