a. Biểu thức đơn:
Biểu thức đơn là biểu thức gốc của bất kỳ một ngôn ngữ, bao gồm các ký tự, các biến tham chiếu, các biểu thức ngữ cảnh, các cấu tử và các lời gọi
85 hàm. Biểu thức đơn cũng có thể đuợc tạo ra bằng cách kết hợp nhiều biểu thức dưới dạng lồng nhau.
Cú pháp:
ExprSingle ::= FLWORExpr | QuantifiedExpr | TypeswichExpr | IfExpr | OrExpr
b. Biểu thức định hướng:
Biểu thức định hướng được sử dụng để xác định vị trí lưu giữ các nút đỉnh trong sơ đồ cây. Biểu thức định hướng thường bao gồm một hoặc nhiều các bước khác nhau được phân cách bằng ký hiệu “/” hoặc “//”.
Cú pháp:
PathExpr = (“/”RelativePathExpr?)|(“//”RelativePathExpr)|RelativePathExpr RelativePathExpr = StepExpr((“/”|“//”) StepExpr)*
c. Biểu thức tuần tự:
Thực hiện truy vấn bao gồm các toán tử để xây dựng, trích lọc và sinh ra một dãy các thành phần khác nhau. Biểu thức tuần tự không bao giờ chứa các biểu thức lồng nhau. Biểu thức tuần tự được phân chia thành các nhóm cơ bản:
- Biểu thức kết hợp:
Expr = ExprSingle (“,” ExprSingle)*
- Biểu thức liệt kê:
Range = AdditiveExpr( “to” AdditiveExpr)?
Filter = PrimaryExpr PredicateList
d. Biểu thức toán học và logic, các cấu trúc điều khiển:
* Biểu thức Logic:
OrExpr = AndExpr (“or” AndExpr)*
AndExpr = ComparisonExpr ( “and” ComparisonExpr )*
IfExpr = “if” “(“ Expr “)” “then” ExprSingle “else” ExprSingle
CaseClause = “case” (“$” VarName “as”)? SequenceType “return” ExprSingle
ForClause ::= "for" "$" VarName TypeDeclaration? PositionalVar? "in"
ExprSingle ("," "$" VarName TypeDeclaration? PositionalVar? "in" ExprSingle)*
* Biểu thức toán học:
Sử dụng các toán tử cơ bản của tóan học để hình thành các biểu thức mô tả công thức tính toán toán học cơ bản
e. Biểu thức cấu tử:
Các cấu tử được xây dựng để cho phép tạo ra các cấu trúc XML mới khi thực hiện một câu lệnh truy vấn. Các cấu tử được cung cấp cho phép tạo ra thành phần, thuộc tính, tài liệu, văn bản, chú thích và các nút tạo ra câu lệnh chỉ dẫn.. Có hai loại cấu tử: Cấu tử trực tiếp và cấu tử được tính toán.
Cấu tử trực tiếp cho phép tạo ra nút thành phần mới trong kết quả với một tên xác định, và được tạo ra dựa vào các ký hiệu mã hóa đánh tên của
87
Cấu tử tính toán cho phép tạo ra các nút mới dựa vào giá trị của một số nút đã được lấy từ cơ sở dữ liệu của các nút ban đầu.
f. Cú pháp biểu thức FLWOR:
XQuery cung cấp biểu thức FLWOR để hỗ trợ cho thực hiện đưa kết quả của câu lệnh truy vấn. Biểu thức này thường diễn đạt mô tả sự kết nối giữa hai hay nhiều tài liệu khác nhau để hình thành một cấu trúc dữ liệu mới. Cú pháp[6]:
FLWORExpr ::= (ForClause | LetClause) + WhereClause? OrderByClause? "return" ExprSingle
LetClause ::= "let" "$" VarName TypeDeclaration? ":=" ExprSingle ("," "$" VarName TypeDeclaration? ":=" ExprSingle)*
WhereClause ::= "where" ExprSingle
OrderByClause ::= ((“order” “by”)|(“stable” “order” “by” )) OrderSpecList OrderSpecList ::= OrderSpec (“,” OrderSpec)*
OrderSpec :== ExprSingle (“ascending”| “descending”)? (“empty” (“greatest”| “least”))?
Trong đó:
FLWORExpr: là biểu thức mô tả câu lệnh truy vấn
LetClause: mệnh đề Let được dùng để trích lọc và giấy giá trị phần tử ra
khỏi tài liệu