XQuery 4.0 Grammar

QueryList::=Module ("%%%" Module)
AbbreviatedStep::=(".." | ("@" NodeTest) | SimpleNodeTest)
AbsolutePathExpr::=(("/" RelativePathExpr) | ("//" RelativePathExpr))
AdditiveExpr::=MultiplicativeExpr (("+" | "-") MultiplicativeExpr)
AllowingEmpty::="allowing" "empty"
AndExpr::=ComparisonExpr ("and" ComparisonExpr)
Annotation::="%" EQName ("(" Constant ")")
AnyArrayType::="array" "(" "*" ")"
AnyFunctionType::=("function" | "fn") "(" "*" ")"
AnyItemTest::="item" "(" ")"
AnyMapType::="map" "(" "*" ")"
AnyNodeKindTest::="node" "(" ")"
AposAttrContentChar::=Char
AposAttrValueContent::=(AposAttrContentChar | CommonContent)
AposStringLiteral::=("'" (PredefinedEntityRef | CharRef | EscapeApos | ['&]) "'")
Argument::=(ExprSingle | ArgumentPlaceholder)
ArgumentList::="(" ((PositionalArguments ("," KeywordArguments)) | KeywordArguments) ")"
ArgumentPlaceholder::="?"
ArrayConstructor::=(SquareArrayConstructor | CurlyArrayConstructor)
ArrayType::=(AnyArrayType | TypedArrayType)
ArrowExpr::=UnaryExpr (SequenceArrowTarget | MappingArrowTarget)
ArrowTarget::=(FunctionCall | RestrictedDynamicCall)
AttributeName::=EQName
AttributeTest::="attribute" "(" (NameTestUnion ("," TypeName)) ")"
Axis::=("ancestor" | "ancestor-or-self" | "attribute" | "child" | "descendant" | "descendant-or-self" | "following" | "following-or-self" | "following-sibling" | "following-sibling-or-self" | "parent" | "preceding" | "preceding-or-self" | "preceding-sibling" | "preceding-sibling-or-self" | "self") "::"
AxisStep::=(AbbreviatedStep | FullStep) Predicate
BaseChar::=[AAZZ aazz ÀÀÖÖ ØØöö øøÿÿ ĀĀıı ĴĴľľ ŁŁňň ŊŊžž ƀƀǃǃ ǍǍǰǰ ǴǴǵǵ ǺǺȗȗ ɐɐʨʨ ʻʻˁˁ ΆΆ ΈΈΊΊ ΌΌ ΎΎΡΡ ΣΣώώ ϐϐϖϖ ϚϚ ϜϜ ϞϞ ϠϠ ϢϢϳϳ ЁЁЌЌ ЎЎяя ёёќќ ўўҁҁ ҐҐӄӄ ӇӇӈӈ ӋӋӌӌ ӐӐӫӫ ӮӮӵӵ ӸӸӹӹ ԱԱՖՖ ՙՙ աաֆֆ אאתת װװײײ ءءغغ ففيي ٱٱڷڷ ںںھھ ۀۀێێ ېېۓۓ ەە ۥۥۦۦ अह ऽ क़ॡ অঌ এঐ ওন পর ল শহ ড়ঢ় য়ৡ ৰৱ ਅਊ ਏਐ ਓਨ ਪਰ ਲਲ਼ ਵਸ਼ ਸਹ ਖ਼ੜ ਫ਼ ੲੴ અઋ ઍ એઑ ઓન પર લળ વહ ઽ ૠ ଅଌ ଏଐ ଓନ ପର ଲଳ ଶହ ଽ ଡ଼ଢ଼ ୟୡ அஊ எஐ ஒக ஙச ஜ ஞட ணத நப மவ ஷஹ అఌ ఎఐ ఒన పళ వహ ౠౡ ಅಌ ಎಐ ಒನ ಪಳ ವಹ ೞ ೠೡ അഌ എഐ ഒന പഹ ൠൡ กฮ ะ าำ เๅ ກຂ ຄ ງຈ ຊ ຍ ດທ ນຟ ມຣ ລ ວ ສຫ ອຮ ະ າຳ ຽ ເໄ ཀཇ ཉཀྵ ႠჅ აჶ ᄀ ᄂᄃ ᄅᄇ ᄉ ᄋᄌ ᄎᄒ ᄼ ᄾ ᅀ ᅌ ᅎ ᅐ ᅔᅕ ᅙ ᅟᅡ ᅣ ᅥ ᅧ ᅩ ᅭᅮ ᅲᅳ ᅵ ᆞ ᆨ ᆫ ᆮᆯ ᆷᆸ ᆺ ᆼᇂ ᇫ ᇰ ᇹ Ḁẛ Ạỹ ἀἕ ἘἝ ἠὅ ὈὍ ὐὗ Ὑ Ὓ Ὕ Ὗώ ᾀᾴ ᾶᾼ ι ῂῄ ῆῌ ῐΐ ῖΊ ῠῬ ῲῴ ῶῼ Ω KÅ ℮ ↀↂ ぁゔ ァヺ ㄅㄬ 가힣 ]
BaseURIDecl::="declare" "base-uri" URILiteral
BinaryDigit::=[01]
BinaryDigits::=(BinaryDigit ((BinaryDigit | "_") BinaryDigit))
BinaryIntegerLiteral::=("0b" BinaryDigits)
BoundarySpaceDecl::="declare" "boundary-space" ("preserve" | "strip")
BracedAction::=EnclosedExpr
BracedSwitchCases::="{" SwitchCases "}"
BracedTypeswitchCases::="{" TypeswitchCases "}"
BracedURILiteral::="Q" "{" (PredefinedEntityRef | CharRef | [&{}]) "}"
CaseClause::="case" (VarName "as") SequenceTypeUnion "return" ExprSingle
CastableExpr::=CastExpr ("castable" "as" CastTarget "?")
CastExpr::=PipelineExpr ("cast" "as" CastTarget "?")
CastTarget::=(TypeName | ChoiceItemType | EnumerationType)
CatchClause::="catch" NameTestUnion EnclosedExpr
CDataSection::="<![CDATA[" CDataSectionContents "]]>"
CDataSectionContents::=Char
Char::=[&#x0009; &#x000D; &#x000A; &#x0020; &#xFFFD; ]
CharRef::="&#" (Digits | ("x" HexDigits)) ";"
ChoiceItemType::="(" ItemType ")"
CloseApos::="'"
CloseQuot::="""
CombiningChar::=[&#x0300;&#x0345; &#x0360;&#x0361; &#x0483;&#x0486; &#x0591;&#x05a1; &#x05a3;&#x05b9; &#x05bb;&#x05bd; &#x05bf; &#x05c1;&#x05c2; &#x05c4; &#x064b;&#x0652; &#x0670; &#x06d6;&#x06dc; &#x06dd;&#x06df; &#x06e0;&#x06e4; &#x06e7;&#x06e8; &#x06ea;&#x06ed; &#x0901;&#x0903; &#x093c; &#x093e;&#x094c; &#x094d; &#x0951;&#x0954; &#x0962;&#x0963; &#x0981;&#x0983; &#x09bc; &#x09be; &#x09bf; &#x09c0;&#x09c4; &#x09c7;&#x09c8; &#x09cb;&#x09cd; &#x09d7; &#x09e2;&#x09e3; &#x0a02; &#x0a3c; &#x0a3e; &#x0a3f; &#x0a40;&#x0a42; &#x0a47;&#x0a48; &#x0a4b;&#x0a4d; &#x0a70;&#x0a71; &#x0a81;&#x0a83; &#x0abc; &#x0abe;&#x0ac5; &#x0ac7;&#x0ac9; &#x0acb;&#x0acd; &#x0b01;&#x0b03; &#x0b3c; &#x0b3e;&#x0b43; &#x0b47;&#x0b48; &#x0b4b;&#x0b4d; &#x0b56;&#x0b57; &#x0b82;&#x0b83; &#x0bbe;&#x0bc2; &#x0bc6;&#x0bc8; &#x0bca;&#x0bcd; &#x0bd7; &#x0c01;&#x0c03; &#x0c3e;&#x0c44; &#x0c46;&#x0c48; &#x0c4a;&#x0c4d; &#x0c55;&#x0c56; &#x0c82;&#x0c83; &#x0cbe;&#x0cc4; &#x0cc6;&#x0cc8; &#x0cca;&#x0ccd; &#x0cd5;&#x0cd6; &#x0d02;&#x0d03; &#x0d3e;&#x0d43; &#x0d46;&#x0d48; &#x0d4a;&#x0d4d; &#x0d57; &#x0e31; &#x0e34;&#x0e3a; &#x0e47;&#x0e4e; &#x0eb1; &#x0eb4;&#x0eb9; &#x0ebb;&#x0ebc; &#x0ec8;&#x0ecd; &#x0f18;&#x0f19; &#x0f35; &#x0f37; &#x0f39; &#x0f3e; &#x0f3f; &#x0f71;&#x0f84; &#x0f86;&#x0f8b; &#x0f90;&#x0f95; &#x0f97; &#x0f99;&#x0fad; &#x0fb1;&#x0fb7; &#x0fb9; &#x20d0;&#x20dc; &#x20e1; &#x302a;&#x302f; &#x3099; &#x309a; ]
Comment::=CommentStart (CommentContents | Comment) CommentEnd
CommentContent::=Char
CommentContents::=CommentContent
CommentEnd::=":)"
CommentStart::="(:"
CommentTest::="comment" "(" ")"
CommonContent::=(PredefinedEntityRef | CharRef | LCurlyBraceEscape | RCurlyBraceEscape | EnclosedExpr)
ComparisonExpr::=OtherwiseExpr ((ValueComp | GeneralComp | NodeComp) OtherwiseExpr)
CompAttrConstructor::="attribute" CompNodeName EnclosedExpr
CompCommentConstructor::="comment" EnclosedExpr
CompDocConstructor::="document" EnclosedExpr
CompElemConstructor::="element" CompNodeName EnclosedContentExpr
CompNamespaceConstructor::="namespace" CompNodeNCName EnclosedExpr
CompNodeName::=(QNameLiteral | UnreservedName | ("{" Expr "}"))
CompNodeNCName::=(MarkedNCName | UnreservedNCName | ("{" Expr "}"))
CompPIConstructor::="processing-instruction" CompNodeNCName EnclosedExpr
CompTextConstructor::="text" EnclosedExpr
ComputedConstructor::=(CompDocConstructor | CompElemConstructor | CompAttrConstructor | CompNamespaceConstructor | CompTextConstructor | CompCommentConstructor | CompPIConstructor)
Constant::=(StringLiteral | ("-" NumericLiteral) | QNameLiteral | ("true" "(" ")") | ("false" "(" ")"))
ConstructionDecl::="declare" "construction" ("strip" | "preserve")
ContextValueDecl::="declare" "context" (("value" ("as" SequenceType)) | ("item" ("as" ItemType))) ((":=" VarValue) | ("external" (":=" VarDefaultValue)))
ContextValueRef::="."
CopyNamespacesDecl::="declare" "copy-namespaces" PreserveMode "," InheritMode
CountClause::="count" VarName
CurlyArrayConstructor::="array" EnclosedExpr
CurrentVar::=VarName
DecDigit::=[09]
DecimalFormatDecl::="declare" (("decimal-format" EQName) | ("default" "decimal-format")) (DFPropertyName "=" StringLiteral)
DecimalLiteral::=(("." Digits) | (Digits "." Digits))
DefaultCollationDecl::="declare" "default" "collation" URILiteral
DefaultNamespaceDecl::="declare" "fixed" "default" ("element" | "function") "namespace" URILiteral
DFPropertyName::=("decimal-separator" | "grouping-separator" | "infinity" | "minus-sign" | "NaN" | "percent" | "per-mille" | "zero-digit" | "digit" | "pattern-separator" | "exponent-separator")
Digit::=[&#x0030;0&#x0039;9 &#x0660;٠&#x0669;٩ &#x06f0;۰&#x06f9;۹ &#x0966;&#x096f; &#x09e6;&#x09ef; &#x0a66;&#x0a6f; &#x0ae6;&#x0aef; &#x0b66;&#x0b6f; &#x0be7;&#x0bef; &#x0c66;&#x0c6f; &#x0ce6;&#x0cef; &#x0d66;&#x0d6f; &#x0e50;&#x0e59; &#x0ed0;&#x0ed9; &#x0f20;&#x0f29; ]
Digits::=(DecDigit ((DecDigit | "_") DecDigit))
DirAttributeList::=(S (QName S "=" S DirAttributeValue))
DirAttributeValue::=((OpenQuot (EscapeQuot | QuotAttrValueContent) CloseQuot) | (OpenApos (EscapeApos | AposAttrValueContent) CloseApos))
DirCommentConstructor::="<!--" DirCommentContents "-->"
DirCommentContentDoubleDashError::=- -
DirCommentContents::=(Char | (- Char))
DirectConstructor::=(DirElemConstructor | DirCommentConstructor | DirPIConstructor)
DirElemConstructor::="<" QName DirAttributeList ("/>" | (">" DirElemContent "</" QName S ">"))
DirElemContent::=(DirectConstructor | CDataSection | CommonContent | ElementContentChar)
DirPIConstructor::="<?" PITarget (S DirPIContents) "?>"
DirPIContents::=Char
DocumentTest::="document-node" "(" (ElementTest | SchemaElementTest | NameTestUnion) ")"
DoubleLiteral::=(("." Digits) | (Digits ("." Digits))) [eE] [+-] Digits
DynamicFunctionCall::=PostfixExpr PositionalArgumentList
ElementContentChar::=Char
ElementName::=EQName
ElementTest::="element" "(" (NameTestUnion ("," TypeName "?")) ")"
EmptyOrderDecl::="declare" "default" "order" "empty" ("greatest" | "least")
EnclosedContentExpr::=EnclosedExpr
EnclosedExpr::="{" Expr "}"
EnumerationType::="enum" "(" StringLiteral ")"
EQName::=(QName | URIQualifiedName)
EscapeApos::="''"
EscapeQuot::=""""
Expr::=ExprSingle
ExprSingle::=(FLWORExpr | QuantifiedExpr | SwitchExpr | TypeswitchExpr | IfExpr | TryCatchExpr | OrExpr)
ExtendedFieldDeclaration::=FieldDeclaration (":=" ExprSingle)
Extender::=[&#x00b7;· &#x02d0;ː &#x02d1;ˑ &#x0387;· &#x0640;ـ &#x0e46; &#x0ec6; &#x3005; &#x3031;&#x3035; &#x309d;&#x309e; &#x30fc;&#x30fe; ]
ExtensionExpr::=Pragma "{" Expr "}"
FieldDeclaration::=FieldName "?" ("as" SequenceType)
FieldName::=(NCName | StringLiteral)
FilterExpr::=PostfixExpr Predicate
FilterExprAM::=PostfixExpr "?[" Expr "]"
FinallyClause::="finally" EnclosedExpr
FLWORExpr::=InitialClause IntermediateClause ReturnClause
ForBinding::=(ForItemBinding | ForMemberBinding | ForEntryBinding)
ForClause::="for" ForBinding
ForEntryBinding::=((ForEntryKeyBinding ForEntryValueBinding) | ForEntryValueBinding) PositionalVar "in" ExprSingle
ForEntryKeyBinding::="key" VarNameAndType
ForEntryValueBinding::="value" VarNameAndType
ForItemBinding::=VarNameAndType AllowingEmpty PositionalVar "in" ExprSingle
ForMemberBinding::="member" VarNameAndType PositionalVar "in" ExprSingle
FullStep::=Axis NodeTest
FunctionBody::=EnclosedExpr
FunctionCall::=EQName ArgumentList
FunctionDecl::="declare" Annotation "function" EQName "(" ParamListWithDefaults ")" TypeDeclaration (FunctionBody | "external")
FunctionItemExpr::=(NamedFunctionRef | InlineFunctionExpr)
FunctionSignature::="(" ParamList ")" TypeDeclaration
FunctionType::=Annotation (AnyFunctionType | TypedFunctionType)
GeneralComp::=("=" | "!=" | "<" | "<=" | ">" | ">=")
GNodeType::="gnode" "(" ")"
GroupByClause::="group" "by" GroupingSpec
GroupingSpec::=VarName (TypeDeclaration ":=" ExprSingle) ("collation" URILiteral)
HexDigit::=[09afAF]
HexDigits::=(HexDigit ((HexDigit | "_") HexDigit))
HexIntegerLiteral::=("0x" HexDigits)
Ideographic::=[&#x4e00;&#x9fa5; &#x3007; &#x3021;&#x3029; ]
IfExpr::="if" "(" Expr ")" (UnbracedActions | BracedAction)
ImplicitlyAllowedWhitespace::=WhitespaceChar
Import::=(SchemaImport | ModuleImport)
InheritMode::=("inherit" | "no-inherit")
InitialClause::=(ForClause | LetClause | WindowClause)
InlineFunctionExpr::=Annotation ("function" | "fn") FunctionSignature FunctionBody
InstanceofExpr::=TreatExpr ("instance" "of" SequenceType)
IntegerLiteral::=Digits
IntermediateClause::=(InitialClause | WhereClause | WhileClause | GroupByClause | OrderByClause | CountClause)
IntersectExceptExpr::=InstanceofExpr (("intersect" | "except") InstanceofExpr)
ItemType::=(RegularItemType | FunctionType | TypeName | ChoiceItemType)
ItemTypeDecl::="declare" Annotation "type" EQName "as" ItemType
JNodeType::="jnode" "(" (("*" | NCName | Constant) ("," ("*" | SequenceType))) ")"
KeySpecifier::=(NCName | Literal | ContextValueRef | VarRef | ParenthesizedExpr | LookupWildcard)
KeywordArgument::=EQName ":=" Argument
KeywordArguments::=KeywordArgument
LCurlyBraceEscape::="{{"
LetArrayBinding::="$" "[" VarNameAndType "]" TypeDeclaration ":=" ExprSingle
LetBinding::=(LetValueBinding | LetSequenceBinding | LetArrayBinding | LetMapBinding)
LetClause::="let" LetBinding
LetMapBinding::="$" "{" VarNameAndType "}" TypeDeclaration ":=" ExprSingle
LetSequenceBinding::="$" "(" VarNameAndType ")" TypeDeclaration ":=" ExprSingle
Letter::=(BaseChar | Ideographic)
LetValueBinding::=VarNameAndType ":=" ExprSingle
LibraryModule::=ModuleDecl Prolog
Literal::=(NumericLiteral | StringLiteral | QNameLiteral)
LocalPart::=NCNameToken
Lookup::="?" KeySpecifier
LookupExpr::=PostfixExpr Lookup
LookupWildcard::="*"
MainModule::=Prolog QueryBody
MapConstructor::="map" "{" MapConstructorEntry "}"
MapConstructorEntry::=ExprSingle (":" ExprSingle)
MappingArrowTarget::="=!>" ArrowTarget
MapType::=(AnyMapType | TypedMapType)
MarkedNCName::="#" NCName
MethodCall::=PostfixExpr "=?>" NCName PositionalArgumentList
Module::=VersionDecl (LibraryModule | MainModule)
ModuleDecl::="module" "namespace" NCName "=" URILiteral Separator
ModuleImport::="import" "module" ("namespace" NCName "=") URILiteral ("at" URILiteral)
MultiplicativeExpr::=UnionExpr (("*" | "×" | "div" | "÷" | "idiv" | "mod") UnionExpr)
NamedFunctionRef::=EQName "#" IntegerLiteral
NamedRecordTypeDecl::="declare" Annotation "record" EQName "(" ExtendedFieldDeclaration ")"
NamespaceDecl::="declare" "namespace" NCName "=" URILiteral
NamespaceNodeTest::="namespace-node" "(" ")"
NameTest::=(EQName | Wildcard)
NameTestUnion::=NameTest
NCName::=QName
NCNameColonStar::=NCNameToken ":*"
NCNameToken::=Nmstart Nmchar
NextVar::="next" VarName
Nmchar::=(Letter | CombiningChar | Extender | Digit | "." | "-" | "_")
Nmstart::=(Letter | "_")
NodeComp::=("is" | "is-not" | NodePrecedes | NodeFollows | "precedes-or-is" | "follows-or-is")
NodeConstructor::=(DirectConstructor | ComputedConstructor)
NodeFollows::=(">>" | "follows")
NodeKindTest::=(DocumentTest | ElementTest | AttributeTest | SchemaElementTest | SchemaAttributeTest | PITest | CommentTest | TextTest | NamespaceNodeTest | AnyNodeKindTest)
NodePrecedes::=("<<" | "precedes")
NodeTest::=(UnionNodeTest | SimpleNodeTest)
NumericLiteral::=(IntegerLiteral | HexIntegerLiteral | BinaryIntegerLiteral | DecimalLiteral | DoubleLiteral)
OccurrenceIndicator::=("?" | "*" | "+")
OpenApos::="'"
OpenQuot::="""
OptionDecl::="declare" "option" EQName StringLiteral
OrderByClause::="stable" "order" "by" OrderSpec
OrderedExpr::="ordered" EnclosedExpr
OrderingModeDecl::="declare" "ordering" ("ordered" | "unordered")
OrderModifier::=("ascending" | "descending") ("empty" ("greatest" | "least")) ("collation" URILiteral)
OrderSpec::=ExprSingle OrderModifier
OrExpr::=AndExpr ("or" AndExpr)
OtherwiseExpr::=StringConcatExpr ("otherwise" StringConcatExpr)
ParamList::=VarNameAndType
ParamListWithDefaults::=ParamWithDefault
ParamWithDefault::=VarNameAndType (":=" ExprSingle)
ParenthesizedExpr::="(" Expr ")"
PathExpr::=(AbsolutePathExpr | RelativePathExpr)
PipelineExpr::=ArrowExpr ("->" ArrowExpr)
PITarget::=NCNameToken
PITest::="processing-instruction" "(" (NCName | StringLiteral) ")"
PositionalArgumentList::="(" PositionalArguments ")"
PositionalArguments::=Argument
PositionalVar::="at" VarName
PostfixExpr::=(PrimaryExpr | FilterExpr | DynamicFunctionCall | LookupExpr | MethodCall | FilterExprAM)
Pragma::="(#" S EQName (S PragmaContents) "#)"
PragmaContents::=Char
PredefinedEntityRef::="&" ("lt" | "gt" | "amp" | "quot" | "apos") ";"
Predicate::="[" Expr "]"
PreserveMode::=("preserve" | "no-preserve")
PreviousVar::="previous" VarName
PrimaryExpr::=(Literal | VarRef | ParenthesizedExpr | ContextValueRef | FunctionCall | OrderedExpr | UnorderedExpr | NodeConstructor | FunctionItemExpr | MapConstructor | ArrayConstructor | StringTemplate | StringConstructor | UnaryLookup)
Prolog::=((DefaultNamespaceDecl | Setter | NamespaceDecl | Import) Separator) ((ContextValueDecl | VarDecl | FunctionDecl | ItemTypeDecl | NamedRecordTypeDecl | OptionDecl) Separator)
QName::=(NCNameToken ":") LocalPart
QNameLiteral::="#" EQName
QuantifiedExpr::=("some" | "every") QuantifierBinding "satisfies" ExprSingle
QuantifierBinding::=VarNameAndType "in" ExprSingle
QueryBody::=Expr
QuotAttrContentChar::=Char
QuotAttrValueContent::=(QuotAttrContentChar | CommonContent)
QuotStringLiteral::=(""" (PredefinedEntityRef | CharRef | EscapeQuot | ["&]) """)
RangeExpr::=AdditiveExpr ("to" AdditiveExpr)
RCurlyBraceEscape::="}}"
RecordType::="record" "(" FieldDeclaration ")"
RegularItemType::=(AnyItemTest | NodeKindTest | GNodeType | JNodeType | MapType | ArrayType | RecordType | EnumerationType)
RelativePathExpr::=StepExpr (("/" | "//") StepExpr)
RestrictedDynamicCall::=(VarRef | ParenthesizedExpr | FunctionItemExpr | MapConstructor | ArrayConstructor) PositionalArgumentList
ReturnClause::="return" ExprSingle
S::=WhitespaceChar
SchemaAttributeTest::="schema-attribute" "(" AttributeName ")"
SchemaElementTest::="schema-element" "(" ElementName ")"
SchemaImport::="import" "schema" SchemaPrefix URILiteral ("at" URILiteral)
SchemaPrefix::=(("namespace" NCName "=") | ("fixed" "default" "element" "namespace"))
Selector::=(EQName | Wildcard | ("get" "(" ExprSingle ")"))
Separator::=";"
SequenceArrowTarget::="=>" ArrowTarget
SequenceType::=(("empty-sequence" "(" ")") | (ItemType OccurrenceIndicator))
SequenceTypeUnion::=SequenceType ("|" SequenceType)
Setter::=(BoundarySpaceDecl | DefaultCollationDecl | BaseURIDecl | ConstructionDecl | OrderingModeDecl | EmptyOrderDecl | CopyNamespacesDecl | DecimalFormatDecl)
SimpleMapExpr::=PathExpr ("!" PathExpr)
SimpleNodeTest::=(TypeTest | Selector)
SlidingWindowClause::="sliding" "window" VarNameAndType "in" ExprSingle WindowStartCondition WindowEndCondition
SquareArrayConstructor::="[" ExprSingle "]"
StarColonNCName::="*:" NCNameToken
StepExpr::=(PostfixExpr | AxisStep)
StringConcatExpr::=RangeExpr ("||" RangeExpr)
StringConstructor::="``[" StringConstructorContent "]``"
StringConstructorChars::=Char
StringConstructorContent::=StringConstructorChars (StringInterpolation StringConstructorChars)
StringInterpolation::="`{" Expr "}`"
StringLiteral::=(AposStringLiteral | QuotStringLiteral)
StringTemplate::="`" (StringTemplateFixedPart | StringTemplateVariablePart) "`"
StringTemplateFixedPart::=(Char | "{{" | "}}" | "``")
StringTemplateVariablePart::=EnclosedExpr
SwitchCaseClause::=("case" SwitchCaseOperand) "return" ExprSingle
SwitchCaseOperand::=Expr
SwitchCases::=SwitchCaseClause "default" "return" ExprSingle
SwitchComparand::="(" Expr ")"
SwitchExpr::="switch" SwitchComparand (SwitchCases | BracedSwitchCases)
TextTest::="text" "(" ")"
TreatExpr::=CastableExpr ("treat" "as" SequenceType)
TryCatchExpr::=TryClause ((CatchClause FinallyClause) | FinallyClause)
TryClause::="try" EnclosedExpr
TumblingWindowClause::="tumbling" "window" VarNameAndType "in" ExprSingle WindowStartCondition WindowEndCondition
TypedArrayType::="array" "(" SequenceType ")"
TypeDeclaration::="as" SequenceType
TypedFunctionParam::=("$" EQName "as") SequenceType
TypedFunctionType::=("function" | "fn") "(" TypedFunctionParam ")" "as" SequenceType
TypedMapType::="map" "(" ItemType "," SequenceType ")"
TypeName::=EQName
TypeswitchCases::=CaseClause "default" VarName "return" ExprSingle
TypeswitchExpr::="typeswitch" "(" Expr ")" (TypeswitchCases | BracedTypeswitchCases)
TypeTest::=(NodeKindTest | JNodeType)
UnaryExpr::=("-" | "+") ValueExpr
UnaryLookup::=Lookup
UnbracedActions::="then" ExprSingle "else" ExprSingle
UnionExpr::=IntersectExceptExpr (("union" | "|") IntersectExceptExpr)
UnionNodeTest::="(" SimpleNodeTest ")"
UnorderedExpr::="unordered" EnclosedExpr
UnreservedName::=EQName
UnreservedNCName::=NCName
URILiteral::=StringLiteral
URIQualifiedName::=BracedURILiteral (NCNameToken ":") NCNameToken
URIQualifiedStar::=BracedURILiteral "*"
ValidateExpr::="validate" (ValidationMode | ("type" TypeName)) "{" Expr "}"
ValidationMode::=("lax" | "strict")
ValueComp::=("eq" | "ne" | "lt" | "le" | "gt" | "ge")
ValueExpr::=(ValidateExpr | ExtensionExpr | SimpleMapExpr)
VarDecl::="declare" (Annotation) "variable" VarNameAndType ((":=" VarValue) | ("external" (":=" VarDefaultValue)))
VarDefaultValue::=ExprSingle
VarName::="$" EQName
VarNameAndType::="$" EQName TypeDeclaration
VarRef::="$" EQName
VarValue::=ExprSingle
VersionDecl::="xquery" (("encoding" StringLiteral) | ("version" StringLiteral ("encoding" StringLiteral))) Separator
WhereClause::="where" ExprSingle
WhileClause::="while" ExprSingle
WhitespaceChar::=[&#x0009; &#x000D; &#x000A; &#x0020; ]
Wildcard::=("*" | NCNameColonStar | StarColonNCName | URIQualifiedStar)
WindowClause::="for" (TumblingWindowClause | SlidingWindowClause)
WindowEndCondition::="only" "end" WindowVars ("when" ExprSingle)
WindowStartCondition::="start" WindowVars ("when" ExprSingle)
WindowVars::=CurrentVar PositionalVar PreviousVar NextVar