intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Tích hợp dữ liệu và XML - Chương 6: XQuery

Chia sẻ: Cố Dạ Bạch | Ngày: | Loại File: PDF | Số trang:6

6
lượt xem
1
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Tích hợp dữ liệu và XML - Chương 6: XQuery. Chương này cung cấp cho sinh viên những nội dung gồm: giới thiệu; ví dụ; biểu thức FLWOR; hiển thị kết quả lồng trong danh sách HTML; thuật ngữ XQuery; cú pháp XQuery;... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Tích hợp dữ liệu và XML - Chương 6: XQuery

  1. 04/04/2013 Nội dung Giới thiệu XQuery Ví dụ Biểu thức FLWOR Hiển thị kết quả lồng trong danh Nguyễn Hồng Phương sách HTML Email: phuong.nguyenhong@hust.edu.vn Site: http://is.hut.edu.vn/~phuongnh Thuật ngữ XQuery Bộ môn Hệ thống thông tin Cú pháp XQuery Viện Công nghệ thông tin và Truyền thông Đại học Bách Khoa Hà Nội 1 2 Giới thiệu Ví dụ books.xml Được xây dựng dựa trên biểu thức XPath. Được hỗ trợ bởi hầu hết CSDL Everyday Italian Là khuyến cáo của W3C Giada De Laurentiis 2005 XQuery ñược thiết kế ñể truy vấn dữ 30.00 liệu XML, tương tự SQL với các bảng XQuery là ngôn ngữ tìm kiếm và trích Harry Potter rút các phần tử và thuộc tính từ tài liệu J K. Rowling 2005 XML 29.99 3 4 Ví dụ books.xml (tiếp) XQuery Kick Start XQuery sử dụng hàm ñể trích rút dữ liệu James McGovern từ tài liệu XML Per Bothner Kurt Cagle Sử dụng hàm doc() ñể mở file xml James Linn Vaidyanathan Nagarajan doc("books.xml") 2003 49.99 Sử dụng biểu thức ñường dẫn ñể duyệt qua các phần tử ví dụ: chọn tất cả các phần tử title: Learning XML Erik T. Ray doc("books.xml")/bookstore/book/title 2003 39.95 trích rút ra Everyday Italian Harry Potter XQuery Kick Start Learning XML 5 6 1
  2. 04/04/2013 Biểu thức FLWOR XQuery sử dụng vị từ ñể giới hạn dữ liệu Biểu thức ñường dẫn: ñược trích rút ra doc("books.xml")/bookstore/book[price>30]/title ví dụ: Biểu thức FLWOR: doc("books.xml")/bookstore/book[price30 return $x/title Harry Potter J K. Rowling Cùng cho kết quả: 2005 XQuery Kick Start 29.99 Learning XML 7 8 Hiển thị kết quả lồng trong danh sách HTML Sắp xếp kết quả: for $x in doc("books.xml")/bookstore/book/title order by $x for $x in doc("books.xml")/bookstore/book return $x where $x/price>30 order by $x/title return $x/title { for $x in doc("books.xml")/bookstore/book/title order by $x return {$x} FLWOR: For, Let, Where, Order by, } Return Everyday Italian Harry Potter Learning XML XQuery Kick Start 9 10 Hiển thị kết quả lồng trong danh sách HTML Thuật ngữ XQuery Nút { for $x in doc("books.xml")/bookstore/book/title Giá trị nguyên tố order by $x return {data($x)} Item } Mối quan hệ giữa các nút Everyday Italian Harry Potter Learning XML XQuery Kick Start 11 12 2
  3. 04/04/2013 Nút Có 7 loại nút trong XQuery Giá trị nguyên tố phần tử Là nút không có nút cha và nút con. thuộc tính Ví dụ: J K. Rowling text "en" không gian tên Item chỉ thị xử lý là các giá trị nguyên tố hoặc các nút comment tài liệu (gốc) Coi tài liệu XML là cây. Nút gốc là nút tài liệu 13 14 Mối quan hệ giữa các nút Cú pháp XQuery Nút cha Quy tắc cú pháp cơ bản mỗi phần tử và thuộc tính có 1 nút cha Biểu thức ñiều kiện Nút con Biểu thức so sánh mỗi nút có thể có 0, 1 hoặc nhiều nút con Nút anh em có cùng nút cha Nút tổ tiên nút cha, nút cha của nút cha Nút hậu duệ nút con, nút con của nút con 15 16 Quy tắc cú pháp cơ bản của XQuery Biểu thức ñiều kiện Phân biệt chữ hoa chữ thường if then else Phần tử, thuộc tính, biến phải là tên for $x in doc("books.xml")/bookstore/book return if ($x/@category="CHILDREN") XML hợp lệ then {data($x/title)} else {data($x/title)} Giá trị chuỗi kí tự có thể ñể trong cặp nháy ñơn hoặc nháy kép kết quả: Biến ñược ñặt tên bắt ñầu bởi kí tụ $, Everyday Italian Harry Potter theo sau là tên biến. Learning XML XQuery Kick Start Chú thích ñược ñặt trong cặp dấu hai chấm : ví dụ :chú thích: 17 18 3
  4. 04/04/2013 Biểu thức so sánh Thêm phần tử và thuộc tính vào kết quả So sánh chung: =, !=, = Có thể thêm phần tử và thuộc tính vào kết So sánh giá trị: eq, ne, lt, le, gt, ge quả for $x in doc("books.xml")/bookstore/book/title Ví dụ: order by $x return $x biểu thức trả về true nếu bất kỳ thuộc tính q nào ñó có giá trị >10 Everyday Italian $bookstore//book/@q > 10 Harry Potter Learning XML biểu thức sau trả về true khi chỉ có duy nhất 1 XQuery Kick Start thuộc tính q ñược trả về bởi biểu thức, và giá trị của nó phải lớn hơn 10. Nếu có nhiều hơn 1 q ñược trả về, thì sẽ có lỗi $bookstore//book/@q gt 10 19 20 Thêm phần tử HTML và text Biểu thức trên sẽ sinh ra kết quả sau: Bookstore Bookstore { for $x in doc("books.xml")/bookstore/book order by $x/title Everyday Italian. Category: COOKING return {data($x/title)}. Category: {data($x/@category)} Harry Potter. Category: CHILDREN } Learning XML. Category: WEB XQuery Kick Start. Category: WEB 21 22 Thêm thuộc tính vào phần tử HTML Biểu thức trên sinh kết quả sau: Bookstore Bookstore Everyday Italian { Harry Potter for $x in doc("books.xml")/bookstore/book Learning XML order by $x/title XQuery Kick Start return {data($x/title)} } 23 24 4
  5. 04/04/2013 Tìm kiếm và lọc phần tử Mệnh ñề for Quan sát biểu thức FLWOR: for $x in (1 to 5) return {$x} Dùng to ñể for $x in doc("books.xml")/bookstore/book xác ñịnh số where $x/price>30 1 lần lặp order by $x/title 2 return $x/title 3 4 5 for (tùy chọn) bind một biến với một item trả về bởi biểu thức for $x at $i in doc("books.xml")/bookstore/book/title let (tùy chọn) return {$i}. {data($x)} where (tùy chọn): xác ñịnh tiêu chuẩn order by (tùy chọn): xác ñịnh thứ tự sắp xếp của 1. Everyday Italian Dùng từ khóa at 2. Harry Potter kết quả 3. XQuery Kick Start ñể ñếm vòng lặp return: xác ñịnh cái gì ñược trả về 4. Learning XML 25 26 Mệnh ñề let Có thể có nhiều Cho phép khởi tạo biến và tránh lặp biểu thức, phân cùng biểu thức nhiều lần cách nhau bởi dấu phẩy let $x := (1 to 5) return {$x} for $x in (10,20), $y in (100,200) 1 2 3 4 5 return x={$x} and y={$y} x=10 and y=100 x=10 and y=200 x=20 and y=100 x=20 and y=200 27 28 Mệnh ñề where Mệnh ñề order by Dùng ñể xác ñịnh 1 hoặc nhiều tiêu chuẩn Xác ñịnh thứ tự sắp xếp kết quả where $x/price>30 and $x/price
  6. 04/04/2013 Mệnh ñề return Hàm XQuery Xác ñịnh kết quả trả về Có trên 100 hàm tích hợp sẵn for $x in doc("books.xml")/bookstore/book Hàm cho giá trị chuỗi, số, so sánh ngày return $x/title thời gian, thao tác nút và QName, thao tác tuần tự, giá trị boolean,... Everyday Italian Harry Potter Có thể tự ñịnh nghĩa hàm trên XQuery XQuery Kick Start Learning XML 31 32 Ví dụ gọi hàm Hàm người dùng ñịnh nghĩa Một lời gọi hàm có thể xuất hiện ở chỗ Cú pháp một biểu thức có thể xuất hiện declare function prefix:function_name($parameter AS datatype) AS returnDatatype Trong một phần tử { {upper-case($booktitle)} ...function code here... } Trong vị từ của một biểu thức ñường dẫn declare function local:minPrice($p as xs:decimal?,$d as xs:decimal?) doc("books.xml")/bookstore/book[substring(title,1,5)='Harry'] AS xs:decimal? { let $disc := ($p * $d) div 100 Trong mệnh ñề let return ($p - $disc) let $name := (substring($booktitle,1,4)) } Goi hàm: {local:minPrice($book/price,$book/discount)} 33 34 Lời hay ý ñẹp "Hãy yêu sự thật nhưng cũng biết tha thứ lỗi lẫm" Voltaire 35 36 6
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
5=>2