XQuery 1.0:XML查询语言 工作草案-5

TransWiki - an Open Translation Project(OTP)

摘要_文档状态_目录 第1节 第2节 3.1~3.3节 3.4~3.6节 3.7节 3.8~3.13节 第4节 附录A 附录B,C,D 附录E,F,G,H,I


Table of contents

A XQuery Grammar

A.1 EBNF

The following grammar uses the same simple Extended Backus-Naur Form (EBNF) notation as [XML 1.0 (http://www.w3.org/TR/2004/WD-xquery-20040723/#XML)] with the following minor differences. The notation "< ... >" is used to indicate a grouping of terminals that together may help disambiguate the individual symbols. To help readability, this "< ... >" notation is absent in the EBNF in the main body of this document. This appendix is the normative version of the EBNF.
Comments on grammar productions are between '/*' and '*/' symbols - please note that these comments are normative. A 'gn:' prefix means a 'Grammar Note', and is meant as a clarification for parsing rules, and is explained in A.1.1 Grammar Notes. A 'ws:' prefix explains the whitespace rules for the production, the details of which are explained in A.2.2 Whitespace Rules









































































































[1]    Module (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-Module)    ::=    VersionDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VersionDecl)? (MainModule (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-MainModule) | LibraryModule (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-LibraryModule))
[2]    VersionDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-VersionDecl)    ::=    <"xquery" "version" StringLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StringLiteral)> Separator (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Separator)
[3]    MainModule (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-MainModule)    ::=    Prolog (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Prolog) QueryBody (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-QueryBody)
[4]    LibraryModule (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-LibraryModule)    ::=    ModuleDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ModuleDecl) Prolog (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Prolog)
[5]    ModuleDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ModuleDecl)    ::=    <"module" "namespace"> NCName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-NCName) "=" StringLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StringLiteral) Separator (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Separator)
[6]    Prolog (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-Prolog)    ::=    (Setter (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Setter) Separator (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Separator))* ((Import (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Import) | NamespaceDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-NamespaceDecl) | VarDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VarDecl) | FunctionDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-FunctionDecl)) Separator (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Separator))*
[7]    Setter (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-Setter)    ::=    XMLSpaceDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-XMLSpaceDecl) | DefaultCollationDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DefaultCollationDecl) | BaseURIDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-BaseURIDecl) | ConstructionDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ConstructionDecl) | DefaultNamespaceDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DefaultNamespaceDecl) | DefaultOrderingDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DefaultOrderingDecl)
[8]    Import (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-Import)    ::=    SchemaImport (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-SchemaImport) | ModuleImport (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ModuleImport)
[9]    Separator (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-Separator)    ::=    ";"
[10]    NamespaceDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-NamespaceDecl)    ::=    <"declare" "namespace"> NCName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-NCName) "=" StringLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StringLiteral)
[11]    XMLSpaceDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-XMLSpaceDecl)    ::=    <"declare" "xmlspace"> ("preserve" | "strip")
[12]    DefaultNamespaceDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-DefaultNamespaceDecl)    ::=    (<"declare" "default" "element"> | <"declare" "default" "function">) "namespace" StringLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StringLiteral)
[13]    DefaultOrderingDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-DefaultOrderingDecl)    ::=    <"declare" "ordering"> ("ordered" | "unordered")
[14]    DefaultCollationDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-DefaultCollationDecl)    ::=    <"declare" "default" "collation"> StringLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StringLiteral)
[15]    BaseURIDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-BaseURIDecl)    ::=    <"declare" "base-uri"> StringLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StringLiteral)
[16]    SchemaImport (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-SchemaImport)    ::=    <"import" "schema"> SchemaPrefix (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-SchemaPrefix)? StringLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StringLiteral) (<"at" StringLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StringLiteral)> ("," StringLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StringLiteral))*)?
[17]    SchemaPrefix (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-SchemaPrefix)    ::=    ("namespace" NCName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-NCName) "=") | (<"default" "element"> "namespace")
[18]    ModuleImport (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ModuleImport)    ::=    <"import" "module"> ("namespace" NCName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-NCName) "=")? StringLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StringLiteral) (<"at" StringLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StringLiteral)> ("," StringLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StringLiteral))*)?
[19]    VarDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-VarDecl)    ::=    <"declare" "variable" "$"> VarName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VarName) TypeDeclaration (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-TypeDeclaration)? ((":=" ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle)) | "external")
[20]    ConstructionDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ConstructionDecl)    ::=    <"declare" "construction"> ("preserve" | "strip")
[21]    FunctionDecl (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-FunctionDecl)    ::=    <"declare" "function"> <QName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-QName) "("> ParamList (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ParamList)? (")" | (<")" "as"> SequenceType (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-SequenceType))) (EnclosedExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-EnclosedExpr) | "external")
[22]    ParamList (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ParamList)    ::=    Param (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Param) ("," Param (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Param))*
[23]    Param (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-Param)    ::=    "$" VarName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VarName) TypeDeclaration (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-TypeDeclaration)?
[24]    EnclosedExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-EnclosedExpr)    ::=    "{" Expr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Expr) "}"
[25]    QueryBody (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-QueryBody)    ::=    Expr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Expr)
[26]    Expr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-Expr)    ::=    ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle) ("," ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle))*
[27]    ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ExprSingle)    ::=   

FLWORExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-FLWORExpr)

| QuantifiedExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-QuantifiedExpr)

| TypeswitchExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-TypeswitchExpr)

| IfExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-IfExpr)

| OrExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-OrExpr)
[28]    FLWORExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-FLWORExpr)    ::=    (ForClause (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ForClause) | LetClause (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-LetClause))+ WhereClause (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-WhereClause)? OrderByClause (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-OrderByClause)? "return" ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle)
[29]    ForClause (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ForClause)    ::=    <"for" "$"> VarName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VarName) TypeDeclaration (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-TypeDeclaration)? PositionalVar (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-PositionalVar)? "in" ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle) ("," "$" VarName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VarName) TypeDeclaration (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-TypeDeclaration)? PositionalVar (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-PositionalVar)? "in" ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle))*
[30]    PositionalVar (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-PositionalVar)    ::=    "at" "$" VarName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VarName)
[31]    LetClause (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-LetClause)    ::=    <"let" "$"> VarName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VarName) TypeDeclaration (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-TypeDeclaration)? ":=" ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle) ("," "$" VarName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VarName) TypeDeclaration (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-TypeDeclaration)? ":=" ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle))*
[32]    WhereClause (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-WhereClause)    ::=    "where" Expr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Expr)
[33]    OrderByClause (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-OrderByClause)    ::=    (<"order" "by"> | <"stable" "order" "by">) OrderSpecList (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-OrderSpecList)
[34]    OrderSpecList (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-OrderSpecList)    ::=    OrderSpec (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-OrderSpec) ("," OrderSpec (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-OrderSpec))*
[35]    OrderSpec (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-OrderSpec)    ::=    ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle) OrderModifier (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-OrderModifier)
[36]    OrderModifier (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-OrderModifier)    ::=    ("ascending" | "descending")? (<"empty" "greatest"> | <"empty" "least">)? ("collation" StringLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StringLiteral))?
[37]    QuantifiedExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-QuantifiedExpr)    ::=    (<"some" "$"> | <"every" "$">) VarName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VarName) TypeDeclaration (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-TypeDeclaration)? "in" ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle) ("," "$" VarName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VarName) TypeDeclaration (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-TypeDeclaration)? "in" ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle))* "satisfies" ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle)
[38]    TypeswitchExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-TypeswitchExpr)    ::=    <"typeswitch" "("> Expr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Expr) ")" CaseClause (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CaseClause)+ "default" ("$" VarName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VarName))? "return" ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle)
[39]    CaseClause (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-CaseClause)    ::=    "case" ("$" VarName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VarName) "as")? SequenceType (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-SequenceType) "return" ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle)
[40]    IfExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-IfExpr)    ::=    <"if" "("> Expr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Expr) ")" "then" ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle) "else" ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle)
[41]    OrExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-OrExpr)    ::=    AndExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-AndExpr) ( "or" AndExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-AndExpr) )*
[42]    AndExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-AndExpr)    ::=    ComparisonExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ComparisonExpr) ( "and" ComparisonExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ComparisonExpr) )*
[43]    ComparisonExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ComparisonExpr)    ::=   

RangeExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-RangeExpr) ( (ValueComp (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ValueComp)

| GeneralComp (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-GeneralComp)

| NodeComp (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-NodeComp)) RangeExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-RangeExpr) )?
[44]    RangeExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-RangeExpr)    ::=    AdditiveExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-AdditiveExpr) ( "to" AdditiveExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-AdditiveExpr) )?
[45]    AdditiveExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-AdditiveExpr)    ::=    MultiplicativeExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-MultiplicativeExpr) ( ("+" | "-") MultiplicativeExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-MultiplicativeExpr) )*
[46]    MultiplicativeExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-MultiplicativeExpr)    ::=    UnionExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-UnionExpr) ( ("*" | "div" | "idiv" | "mod") UnionExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-UnionExpr) )*
[47]    UnionExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-UnionExpr)    ::=    IntersectExceptExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-IntersectExceptExpr) ( ("union" | "|") IntersectExceptExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-IntersectExceptExpr) )*
[48]    IntersectExceptExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-IntersectExceptExpr)    ::=    InstanceofExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-InstanceofExpr) ( ("intersect" | "except") InstanceofExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-InstanceofExpr) )*
[49]    InstanceofExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-InstanceofExpr)    ::=    TreatExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-TreatExpr) ( <"instance" "of"> SequenceType (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-SequenceType) )?
[50]    TreatExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-TreatExpr)    ::=    CastableExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CastableExpr) ( <"treat" "as"> SequenceType (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-SequenceType) )?
[51]    CastableExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-CastableExpr)    ::=    CastExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CastExpr) ( <"castable" "as"> SingleType (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-SingleType) )?
[52]    CastExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-CastExpr)    ::=    UnaryExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-UnaryExpr) ( <"cast" "as"> SingleType (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-SingleType) )?
[53]    UnaryExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-UnaryExpr)    ::=    ("-" | "+")* ValueExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ValueExpr)
[54]    ValueExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ValueExpr)    ::=    ValidateExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ValidateExpr) | PathExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-PathExpr)
[55]    GeneralComp (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-GeneralComp)    ::=    "=" | "!=" | "<" | "<=" | ">" | ">=" /* gn: lt (http://www.w3.org/TR/2004/WD-xquery-20040723/#parse-note-lt) */
[56]    ValueComp (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ValueComp)    ::=    "eq" | "ne" | "lt" | "le" | "gt" | "ge"
[57]    NodeComp (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-NodeComp)    ::=    "is" | "<<" | ">>"
[58]    ValidateExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ValidateExpr)    ::=    (<"validate" "{"> | (<"validate" ValidationMode (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ValidationMode)> "{")) Expr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Expr) "}" /* gn: validate (http://www.w3.org/TR/2004/WD-xquery-20040723/#parse-note-validate) */
[59]    PathExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-PathExpr)    ::=   

("/" RelativePathExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-RelativePathExpr)?)

| ("//" RelativePathExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-RelativePathExpr))

| RelativePathExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-RelativePathExpr)
/* gn: leading-lone-slash (http://www.w3.org/TR/2004/WD-xquery-20040723/#parse-note-leading-lone-slash) */
[60]    RelativePathExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-RelativePathExpr)    ::=    StepExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StepExpr) (("/" | "//") StepExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StepExpr))*
[61]    StepExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-StepExpr)    ::=    AxisStep (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-AxisStep) | FilterExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-FilterExpr)
[62]    AxisStep (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-AxisStep)    ::=    (ForwardStep (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ForwardStep) | ReverseStep (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ReverseStep)) PredicateList (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-PredicateList)
[63]    ForwardStep (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ForwardStep)    ::=    (ForwardAxis (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ForwardAxis) NodeTest (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-NodeTest)) | AbbrevForwardStep (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-AbbrevForwardStep)
[64]    ForwardAxis (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ForwardAxis)    ::=   

<"child" "::">

| <"descendant" "::">

| <"attribute" "::">

| <"self" "::">

| <"descendant-or-self" "::">

| <"following-sibling" "::">

| <"following" "::">
[65]    AbbrevForwardStep (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-AbbrevForwardStep)    ::=    "@"? NodeTest (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-NodeTest)
[66]    ReverseStep (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ReverseStep)    ::=    (ReverseAxis (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ReverseAxis) NodeTest (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-NodeTest)) | AbbrevReverseStep (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-AbbrevReverseStep)
[67]    ReverseAxis (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ReverseAxis)    ::=   

<"parent" "::">

| <"ancestor" "::">

| <"preceding-sibling" "::">

| <"preceding" "::">

| <"ancestor-or-self" "::">
[68]    AbbrevReverseStep (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-AbbrevReverseStep)    ::=    ".."
[69]    NodeTest (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-NodeTest)    ::=    KindTest (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-KindTest) | NameTest (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-NameTest)
[70]    NameTest (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-NameTest)    ::=    QName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-QName) | Wildcard (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Wildcard)
[71]    Wildcard (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-Wildcard)    ::=   

"*"

| <NCName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-NCName) ":" "*">

| <"*" ":" NCName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-NCName)>
/* ws: explicit (http://www.w3.org/TR/2004/WD-xquery-20040723/#ws-explicit) */
[72]    FilterExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-FilterExpr)    ::=    PrimaryExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-PrimaryExpr) PredicateList (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-PredicateList)
[73]    PredicateList (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-PredicateList)    ::=    Predicate (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Predicate)*
[74]    Predicate (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-Predicate)    ::=    "[" Expr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Expr) "]"
[75]    PrimaryExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-PrimaryExpr)    ::=    Literal (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Literal) | VarRef (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VarRef) | ParenthesizedExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ParenthesizedExpr) | ContextItemExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ContextItemExpr) | FunctionCall (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-FunctionCall) | Constructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Constructor) | OrderedExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-OrderedExpr) | UnorderedExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-UnorderedExpr)
[76]    Literal (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-Literal)    ::=    NumericLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-NumericLiteral) | StringLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-StringLiteral)
[77]    NumericLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-NumericLiteral)    ::=    IntegerLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-IntegerLiteral) | DecimalLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DecimalLiteral) | DoubleLiteral (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DoubleLiteral)
[78]    VarRef (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-VarRef)    ::=    "$" VarName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-VarName)
[79]    ParenthesizedExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ParenthesizedExpr)    ::=    "(" Expr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Expr)? ")"
[80]    ContextItemExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ContextItemExpr)    ::=    "."
[81]    OrderedExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-OrderedExpr)    ::=    <"ordered" "{"> Expr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Expr) "}"
[82]    UnorderedExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-UnorderedExpr)    ::=    <"unordered" "{"> Expr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Expr) "}"
[83]    FunctionCall (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-FunctionCall)    ::=    <QName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-QName) "("> (ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle) ("," ExprSingle (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ExprSingle))*)? ")" /* gn: parens (http://www.w3.org/TR/2004/WD-xquery-20040723/#parse-note-parens) */
/* gn: reserved-function-names (http://www.w3.org/TR/2004/WD-xquery-20040723/#parse-note-reserved-function-names) */
[84]    Constructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-Constructor)    ::=   

DirectConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DirectConstructor)

| ComputedConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ComputedConstructor)
[85]    DirectConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-DirectConstructor)    ::=   

DirElemConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DirElemConstructor)

| DirCommentConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DirCommentConstructor)

| DirPIConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DirPIConstructor)
[86]    DirElemConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-DirElemConstructor)    ::=    "<" QName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-QName) DirAttributeList (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DirAttributeList) ("/>" | (">" DirElemContent (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DirElemContent)* "</" QName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-QName) S (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-S)? ">")) /* ws: explicit (http://www.w3.org/TR/2004/WD-xquery-20040723/#ws-explicit) */
/* gn: lt (http://www.w3.org/TR/2004/WD-xquery-20040723/#parse-note-lt) */
[87]    DirAttributeList (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-DirAttributeList)    ::=    (S (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-S) (QName (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-QName) S (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-S)? "=" S (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-S)? DirAttributeValue (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DirAttributeValue))?)* /* ws: explicit (http://www.w3.org/TR/2004/WD-xquery-20040723/#ws-explicit) */
[88]    DirAttributeValue (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-DirAttributeValue)    ::=   

('"' (EscapeQuot (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-EscapeQuot) | QuotAttrValueContent (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-QuotAttrValueContent))* '"')

| ("'" (EscapeApos (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-EscapeApos) | AposAttrValueContent (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-AposAttrValueContent))* "'")
/* ws: explicit (http://www.w3.org/TR/2004/WD-xquery-20040723/#ws-explicit) */
[89]    QuotAttrValueContent (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-QuotAttrValueContent)    ::=   

QuotAttrContentChar (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-QuotAttrContentChar)

| CommonContent (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CommonContent)
[90]    AposAttrValueContent (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-AposAttrValueContent)    ::=   

AposAttrContentChar (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-AposAttrContentChar)

| CommonContent (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CommonContent)
[91]    DirElemContent (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-DirElemContent)    ::=   

DirectConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DirectConstructor)

| ElementContentChar (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-ElementContentChar)

| CDataSection (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CDataSection)

| CommonContent (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CommonContent)
[92]    CommonContent (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-CommonContent)    ::=    PredefinedEntityRef (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-PredefinedEntityRef) | CharRef (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CharRef) | "Template:"" | EnclosedExpr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-EnclosedExpr)
[93]    DirCommentConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-DirCommentConstructor)    ::=    "<!--" DirCommentContents (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DirCommentContents) "-->" /* ws: explicit (http://www.w3.org/TR/2004/WD-xquery-20040723/#ws-explicit) */
[94]    DirCommentContents (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-DirCommentContents)    ::=    ((Char (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Char) - '-') | <'-' (Char (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Char) - '-')>)* /* ws: explicit (http://www.w3.org/TR/2004/WD-xquery-20040723/#ws-explicit) */
[95]    DirPIConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-DirPIConstructor)    ::=    "<?" PITarget (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-PITarget) (S (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-S) DirPIContents (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-DirPIContents))? "?>" /* ws: explicit (http://www.w3.org/TR/2004/WD-xquery-20040723/#ws-explicit) */
[96]    DirPIContents (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-DirPIContents)    ::=    (Char (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Char)* - (Char* '?>' Char*)) /* ws: explicit (http://www.w3.org/TR/2004/WD-xquery-20040723/#ws-explicit) */
[97]    CDataSection (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-CDataSection)    ::=    "<![CDATA[" CDataSectionContents (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CDataSectionContents) "]]>" /* ws: explicit (http://www.w3.org/TR/2004/WD-xquery-20040723/#ws-explicit) */
[98]    CDataSectionContents (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-CDataSectionContents)    ::=    (Char (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Char)* - (Char* ']]>' Char*)) /* ws: explicit (http://www.w3.org/TR/2004/WD-xquery-20040723/#ws-explicit) */
[99]    ComputedConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-ComputedConstructor)    ::=   

CompDocConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CompDocConstructor)

| CompElemConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CompElemConstructor)

| CompAttrConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CompAttrConstructor)

| CompTextConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CompTextConstructor)

| CompCommentConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CompCommentConstructor)

| CompPIConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-CompPIConstructor)
[100]    CompDocConstructor (http://www.w3.org/TR/2004/WD-xquery-20040723/#doc-xquery-CompDocConstructor)    ::=    <"document" "{"> Expr (http://www.w3.org/TR/2004/WD-xquery-20040723/#prod-xquery-Expr) "}"
[101]    CompElemConstructor (http://www.w3.org/TR/2004/WD-xquery-2004