start ::= '' | '/>' | QName | "=" | '"' | "'" | EOF TagContent ::= ElementContentChar | Tag | EndTag | '' | EOF /* ws: explicit */ XMLComment ::= DirCommentContents | '-->' | EOF /* ws: explicit */ PI ::= DirPIContents | '?' | '?>' | EOF /* ws: explicit */ Pragma ::= PragmaContents | '#' | '#)' | EOF /* ws: explicit */ Comment ::= ':)' | '(:' | CommentContents | EOF /* ws: explicit */ CommentDoc ::= DocTag | DocCommentContents | ':)' | '(:' | EOF /* ws: explicit */ QuotString ::= PredefinedEntityRef | CharRef | EscapeQuot | QuotChar | '"' | EOF /* ws: explicit */ AposString ::= PredefinedEntityRef | CharRef | EscapeApos | AposChar | "'" | EOF /* ws: explicit */ Prefix ::= NCName _EQName ::= EQName Whitespace ::= S^WS /* ws: definition */ EQName ::= FunctionName | 'attribute' | 'comment' | 'document-node' | 'element' | 'empty-sequence' | 'function' | 'if' | 'item' | 'namespace-node' | 'node' | 'processing-instruction' | 'schema-attribute' | 'schema-element' | 'switch' | 'text' | 'typeswitch' FunctionName ::= EQName^Token | 'after' | 'ancestor' | 'ancestor-or-self' | 'and' | 'as' | 'ascending' | 'before' | 'case' | 'cast' | 'castable' | 'child' | 'collation' | 'copy' | 'count' | 'declare' | 'default' | 'delete' | 'descendant' | 'descendant-or-self' | 'descending' | 'div' | 'document' | 'else' | 'empty' | 'end' | 'eq' | 'every' | 'except' | 'first' | 'following' | 'following-sibling' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | 'import' | 'insert' | 'instance' | 'intersect' | 'into' | 'is' | 'last' | 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'module' | 'namespace' | 'ne' | 'only' | 'or' | 'order' | 'ordered' | 'parent' | 'preceding' | 'preceding-sibling' | 'rename' | 'replace' | 'return' | 'satisfies' | 'self' | 'some' | 'stable' | 'start' | 'to' | 'treat' | 'try' | 'union' | 'unordered' | 'validate' | 'where' | 'with' | 'xquery' | 'allowing' | 'at' | 'base-uri' | 'boundary-space' | 'break' | 'catch' | 'construction' | 'context' | 'continue' | 'copy-namespaces' | 'decimal-format' | 'encoding' | 'exit' | 'external' | 'ft-option' | 'in' | 'index' | 'integrity' | 'lax' | 'nodes' | 'option' | 'ordering' | 'revalidation' | 'schema' | 'score' | 'sliding' | 'strict' | 'tumbling' | 'type' | 'updating' | 'value' | 'variable' | 'version' | 'while' | 'constraint' | 'loop' | 'returning' NCName ::= NCName^Token | 'after' | 'and' | 'as' | 'ascending' | 'before' | 'case' | 'cast' | 'castable' | 'collation' | 'count' | 'default' | 'descending' | 'div' | 'else' | 'empty' | 'end' | 'eq' | 'except' | 'for' | 'ge' | 'group' | 'gt' | 'idiv' | 'instance' | 'intersect' | 'into' | 'is' | 'le' | 'let' | 'lt' | 'mod' | 'modify' | 'ne' | 'only' | 'or' | 'order' | 'return' | 'satisfies' | 'stable' | 'start' | 'to' | 'treat' | 'union' | 'where' | 'with' | 'ancestor' | 'ancestor-or-self' | 'attribute' | 'child' | 'comment' | 'copy' | 'declare' | 'delete' | 'descendant' | 'descendant-or-self' | 'document' | 'document-node' | 'element' | 'empty-sequence' | 'every' | 'first' | 'following' | 'following-sibling' | 'function' | 'if' | 'import' | 'insert' | 'item' | 'last' | 'module' | 'namespace' | 'namespace-node' | 'node' | 'ordered' | 'parent' | 'preceding' | 'preceding-sibling' | 'processing-instruction' | 'rename' | 'replace' | 'schema-attribute' | 'schema-element' | 'self' | 'some' | 'switch' | 'text' | 'try' | 'typeswitch' | 'unordered' | 'validate' | 'variable' | 'xquery' | 'allowing' | 'at' | 'base-uri' | 'boundary-space' | 'break' | 'catch' | 'construction' | 'context' | 'continue' | 'copy-namespaces' | 'decimal-format' | 'encoding' | 'exit' | 'external' | 'ft-option' | 'in' | 'index' | 'integrity' | 'lax' | 'nodes' | 'option' | 'ordering' | 'revalidation' | 'schema' | 'score' | 'sliding' | 'strict' | 'tumbling' | 'type' | 'updating' | 'value' | 'version' | 'while' | 'constraint' | 'loop' | 'returning' ModuleDecl ::= ('import' S)? ('module' | 'schema') S 'namespace' Annotation ::= '%' EQName ? OptionDecl ::= 'declare' S ( ( 'decimal-format' | 'option' ) | ('default' S 'decimal-format') ) Operator ::= '!=' | ':=' | '>=' | '<=' | '=' | '<' | '>' | '-' | '+' | 'div' | '||' | '?' Variable ::= '$' EQName Tag ::= '<' QName EndTag ::= '' PragmaContents ::= ( Char* - ( Char* '#' Char* ) )+ DirCommentContents ::= ( ( Char - '-' ) | '-' ( Char - '-' ) )+ DirPIContents ::= ( Char* - ( Char* '?' Char* ) )+ CDataSectionContents ::= ( Char+ - ( Char* ']]>' Char* ) ) & ']]' | ( Char+ - ( Char* ']]>' Char* ) ) & $ AttrTest ::= "@" ( Wildcard | QName ) Wildcard ::= "*" | (NCName ":" "*") | ("*" ":" NCName) | (BracedURILiteral "*") EQName ::= QName | URIQualifiedName URIQualifiedName ::= BracedURILiteral NCName BracedURILiteral ::= 'Q' '{' (PredefinedEntityRef | CharRef | [^&{}] )* '}' URILiteral ::= StringLiteral IntegerLiteral ::= Digits DecimalLiteral ::= '.' Digits | Digits '.' [0-9]* /* ws: explicit */ DoubleLiteral ::= ( '.' Digits | Digits ( '.' [0-9]* )? ) [Ee] [+#x002D]? Digits /* ws: explicit */ PredefinedEntityRef ::= '&' ( 'lt' | 'gt' | 'amp' | 'quot' | 'apos' ) ';' /* ws: explicit */ EscapeQuot ::= '""' EscapeApos ::= "''" QuotChar ::= (Char - ["&])+ AposChar ::= (Char - [&'])+ ElementContentChar ::= (Char - [&<{}])+ QuotAttrContentChar ::= (Char - ["&<{}])+ AposAttrContentChar ::= (Char - [&'<{}])+ PITarget ::= NCName - ( ( 'X' | 'x' ) ( 'M' | 'm' ) ( 'L' | 'l' ) ) Name ::= NameStartChar NameChar* NameStartChar ::= [:A-Z_a-z#x00C0-#x00D6#x00D8-#x00F6#x00F8-#x02FF#x0370-#x037D#x037F-#x1FFF#x200C-#x200D#x2070-#x218F#x2C00-#x2FEF#x3001-#xD7FF#xF900-#xFDCF#xFDF0-#xFFFD#x10000-#xEFFFF] NameChar ::= NameStartChar | [-.0-9#x00B7#x0300-#x036F#x203F-#x2040] NCName ::= Name - ( Char* (':' | '.') Char* ) Char ::= [#x0009#x000A#x000D#x0020-#xD7FF#xE000-#xFFFD#x10000-#x10FFFF] QName ::= PrefixedName | UnprefixedName PrefixedName ::= Prefix ':' LocalPart UnprefixedName ::= LocalPart Prefix ::= NCName LocalPart ::= NCName S ::= [#x0009#x000A#x000D#x0020]+ CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9A-Fa-f]+ ';' Digits ::= [0-9]+ CommentContents ::= ( Char+ - ( Char* ( '(:' | ':)' ) Char* ) ) & '(:' | ( Char+ - ( Char* ( '(:' | ':)' ) Char* ) ) & $ | ( ( Char+ - ( Char* ( '(:' | ':)' ) Char* ) ) - ( Char* '(' ) ) & ':' DocTag ::= ' @' NCName? DocCommentContents ::= ( ( Char+ - ( Char* ( '(:' | ':)' | ' @' ) Char* ) ) - ( Char* '(' ) ) & ':' | ( Char+ - ( Char* ( '(:' | ':)' | ' @' ) Char* ) ) & '(:' | ( Char+ - ( Char* ( '(:' | ':)' | ' @' ) Char* ) ) & ' @' | ( Char+ - ( Char* ( '(:' | ':)' | ' @') Char* ) ) & $ EOF ::= $ NonNCNameChar ::= $ | ':' | '.' | ( Char - NameChar ) DelimitingChar ::= NonNCNameChar | '-' | '.' DelimitingChar \\ IntegerLiteral DecimalLiteral DoubleLiteral NonNCNameChar \\ EQName^Token QName NCName^Token 'NaN' 'after' 'all' 'allowing' 'ancestor' 'ancestor-or-self' 'and' 'any' 'append' 'array' 'as' 'ascending' 'at' 'attribute' 'base-uri' 'before' 'boundary-space' 'break' 'by' 'case' 'cast' 'castable' 'catch' 'check' 'child' 'collation' 'collection' 'comment' 'constraint' 'construction' 'contains' 'content' 'context' 'continue' 'copy' 'copy-namespaces' 'count' 'decimal-format' 'decimal-separator' 'declare' 'default' 'delete' 'descendant' 'descendant-or-self' 'descending' 'diacritics' 'different' 'digit' 'distance' 'div' 'document' 'document-node' 'element' 'else' 'empty' 'empty-sequence' 'encoding' 'end' 'entire' 'eq' 'every' 'exactly' 'except' 'exit' 'external' 'first' 'following' 'following-sibling' 'for' 'foreach' 'foreign' 'from' 'ft-option' 'ftand' 'ftnot' 'ftor' 'function' 'ge' 'greatest' 'group' 'grouping-separator' 'gt' 'idiv' 'if' 'import' 'in' 'index' 'infinity' 'inherit' 'insensitive' 'insert' 'instance' 'integrity' 'intersect' 'into' 'is' 'item' 'json' 'json-item' 'key' 'language' 'last' 'lax' 'le' 'least' 'let' 'levels' 'loop' 'lowercase' 'lt' 'minus-sign' 'mod' 'modify' 'module' 'most' 'namespace' 'namespace-node' 'ne' 'next' 'no' 'no-inherit' 'no-preserve' 'node' 'nodes' 'not' 'object' 'occurs' 'of' 'on' 'only' 'option' 'or' 'order' 'ordered' 'ordering' 'paragraph' 'paragraphs' 'parent' 'pattern-separator' 'per-mille' 'percent' 'phrase' 'position' 'preceding' 'preceding-sibling' 'preserve' 'previous' 'processing-instruction' 'relationship' 'rename' 'replace' 'return' 'returning' 'revalidation' 'same' 'satisfies' 'schema' 'schema-attribute' 'schema-element' 'score' 'self' 'sensitive' 'sentence' 'sentences' 'skip' 'sliding' 'some' 'stable' 'start' 'stemming' 'stop' 'strict' 'strip' 'structured-item' 'switch' 'text' 'then' 'thesaurus' 'times' 'to' 'treat' 'try' 'tumbling' 'type' 'typeswitch' 'union' 'unique' 'unordered' 'updating' 'uppercase' 'using' 'validate' 'value' 'variable' 'version' 'weight' 'when' 'where' 'while' 'wildcards' 'window' 'with' 'without' 'word' 'words' 'xquery' 'zero-digit' '*' << Wildcard '*'^OccurrenceIndicator EQName^Token << 'after' 'ancestor' 'ancestor-or-self' 'and' 'as' 'ascending' 'attribute' 'before' 'case' 'cast' 'castable' 'child' 'collation' 'comment' 'copy' 'count' 'declare' 'default' 'delete' 'descendant' 'descendant-or-self' 'descending' 'div' 'document' 'document-node' 'element' 'else' 'empty' 'empty-sequence' 'end' 'eq' 'every' 'except' 'first' 'following' 'following-sibling' 'for' 'function' 'ge' 'group' 'gt' 'idiv' 'if' 'import' 'insert' 'instance' 'intersect' 'into' 'is' 'item' 'last' 'le' 'let' 'lt' 'mod' 'modify' 'module' 'namespace' 'namespace-node' 'ne' 'node' 'only' 'or' 'order' 'ordered' 'parent' 'preceding' 'preceding-sibling' 'processing-instruction' 'rename' 'replace' 'return' 'satisfies' 'schema-attribute' 'schema-element' 'self' 'some' 'stable' 'start' 'switch' 'text' 'to' 'treat' 'try' 'typeswitch' 'union' 'unordered' 'validate' 'where' 'with' 'xquery' 'contains' 'paragraphs' 'sentences' 'times' 'words' 'by' 'collection' 'allowing' 'at' 'base-uri' 'boundary-space' 'break' 'catch' 'construction' 'context' 'continue' 'copy-namespaces' 'decimal-format' 'encoding' 'exit' 'external' 'ft-option' 'in' 'index' 'integrity' 'lax' 'nodes' 'option' 'ordering' 'revalidation' 'schema' 'score' 'sliding' 'strict' 'tumbling' 'type' 'updating' 'value' 'variable' 'version' 'while' 'constraint' 'loop' 'returning' 'append' 'array' 'json-item' 'object' 'structured-item' NCName^Token << 'after' 'and' 'as' 'ascending' 'before' 'case' 'cast' 'castable' 'collation' 'count' 'default' 'descending' 'div' 'else' 'empty' 'end' 'eq' 'except' 'for' 'ge' 'group' 'gt' 'idiv' 'instance' 'intersect' 'into' 'is' 'le' 'let' 'lt' 'mod' 'modify' 'ne' 'only' 'or' 'order' 'return' 'satisfies' 'stable' 'start' 'to' 'treat' 'union' 'where' 'with' 'contains' 'paragraphs' 'sentences' 'times' 'words' 'by' 'ancestor' 'ancestor-or-self' 'attribute' 'child' 'comment' 'copy' 'declare' 'delete' 'descendant' 'descendant-or-self' 'document' 'document-node' 'element' 'empty-sequence' 'every' 'first' 'following' 'following-sibling' 'function' 'if' 'import' 'insert' 'item' 'last' 'module' 'namespace' 'namespace-node' 'node' 'ordered' 'parent' 'preceding' 'preceding-sibling' 'processing-instruction' 'rename' 'replace' 'schema-attribute' 'schema-element' 'self' 'some' 'switch' 'text' 'try' 'typeswitch' 'unordered' 'validate' 'variable' 'xquery' 'allowing' 'at' 'base-uri' 'boundary-space' 'break' 'catch' 'construction' 'context' 'continue' 'copy-namespaces' 'decimal-format' 'encoding' 'exit' 'external' 'ft-option' 'in' 'index' 'integrity' 'lax' 'nodes' 'option' 'ordering' 'revalidation' 'schema' 'score' 'sliding' 'strict' 'tumbling' 'type' 'updating' 'value' 'version' 'while' 'constraint' 'loop' 'returning'