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 4: XML Schema

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

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 4: XML Schema. Chương này cung cấp cho sinh viên những nội dung gồm: giới thiệu; các kiểu đơn giản; các kiểu phức tạp; kiểu dữ liệu;... 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 4: XML Schema

  1. 27/02/2013 Nội dung Giới thiệu XML Schema Các kiểu ñơn giản Các kiểu phức tạp Kiểu dữ liệu Nguyễn Hồng Phương Email: phuong.nguyenhong@hust.edu.vn Site: http://is.hut.edu.vn/~phuongnh Bộ môn Hệ thống thông tin Viện Công nghệ thông tin và Truyền thông Đại học Bách Khoa Hà Nội 1 2 1. Giới thiệu Là một giải pháp thay thế cho DTD Một lược ñồ XML ñịnh nghĩa các phần tử có thể xuất hiện trong Một XML Schema mô tả cấu trúc một tài tài liệu. liệu XML ñịnh nghĩa các thuộc tính có thể xuất hiện Ngôn ngữ lược ñồ XML ñược biết ñến là trong tài liệu. ñịnh nghĩa phần tử con XML Schema Definition (XSD) ñịnh nghĩa thứ tự các phần tử con ñịnh nghĩa số lượng các phần tử con ñịnh nghĩa một phần tử là rỗng hay chứa text ñịnh nghĩa kiểu dữ liệu cho phần tử/thuộc tính ñịnh nghĩa giá trị mặc ñịnh cho phần tử/thuộc tính 3 4 XML Schema hỗ trợ các kiểu dữ liệu XML Schema là một sự thay thế cho Một trong những ñiểm mạnh của XML DTD? Schema là hỗ trợ các kiểu dữ liệu Dễ mở rộng mô tả nội dung tài liệu ñược phép Giàu tính biểu ñạt hơn DTD hợp thức hóa tính ñúng ñắn của dữ liệu Được viết trong XML làm việc với dữ liệu của một CSDL Hỗ trợ các kiểu dữ liệu xác ñịnh các khía cạnh dữ liệu (các giới Hỗ trợ các không gian tên hạn) Là khuyến cáo của W3C xác ñịnh các mẫu dữ liệu (format dữ liệu) chuyển ñổi dữ liệu giữa các kiểu dữ liệu khác nhau 5 6 1
  2. 27/02/2013 XML Schema sử dụng cú pháp XML XML Schema truyền dữ liệu thống nhất Lược ñồ XML ñược viết trong XML Kiểu ngày "03-02-2013" Lợi ích: 03 Feb 2013 Không phải học ngôn ngữ mới 02 March 2013 Có thể soạn thảo file schema bằng bộ soạn Thống nhất bên gửi và bên nhận thảo XML 2013-02-03 Có thể sử dụng XML parser ñể parse file Kiểu dữ liệu date yêu cầu ñịnh dạng yyyy- schema mm-dd Có thể thao tác lược ñồ với XML DOM Có thể chuyển ñổi lược ñồ với XSLT 7 8 Lược ñồ XML có thể mở rộng Dạng chuẩn thôi chưa ñủ! Vì ñược viết trong XML nên có thể mở Tài liệu XML dạng chuẩn tuân theo luật rộng cú pháp XML Với một ñịnh nghĩa lược ñồ có thể mở Dạng chuẩn vẫn có thể chứa lỗi và có rộng, chúng ta có thể: thể gây hậu quả nghiêm trọng. Tái sử dụng lược ñồ trong các lược ñồ khác Tạo ra kiểu dữ liệu riêng dẫn xuất từ kiểu chuẩn Tham chiếu nhiều lược ñồ trong cùng tài liệu 9 10 Một ví dụ Một ví dụ Quan sát lại file note.xml File note.xsd Don't forget me this weekend! Quan sát lại file note.dtd 11 12 2
  3. 27/02/2013 Một ví dụ Một ví dụ Tài liệu XML có một tham chiếu tới DTD Tài liệu XML có một tham chiếu tới XSD Jani Tove Reminder Jani Don't forget me this weekend! Reminder Don't forget me this weekend! 13 14 Phần tử Là phần tử gốc của mọi lược ñồ XML Đoạn xmlns:xs=http://www.w3.org/2001/XMLSchema Có thể chứa một số thuộc tính chỉ ra rằng các phần tử và kiểu dữ liệu sử dụng trong lược ñồ lấy từ không gian tên http://www.w3.org/2001/XMLSchema chỉ ra rằng các phần tử xác ñịnh bởi lược ... ... ñồ này (note, to, from, heading, body) lấy từ không gian tên http://www.w3schools.com xmlns=http://www.w3schools.com : không gian tên mặc ñịnh 15 16 2. Các kiểu ñơn giản Tham khảo tới một lược ñồ trong tài liệu XML: Phần tử XSD Thuộc tính XSD Tove Jani Reminder Don't forget me this weekend! 17 18 3
  4. 27/02/2013 2.1. Phần tử ñơn giản XSD Cú pháp ñịnh nghĩa phần tử ñơn giản Phần tử ñơn giản là phần tử chỉ chứa tính khác. xxx là tên phần tử Text có thể là nhiều kiểu khác nhau: yyy là kiểu dữ liệu của phần tử boolean, string, date,... Một số kiểu thông dụng xs:string xs:decimal xs:integer xs:boolean xs:date xs:time 19 20 Ví dụ Giá trị của các phần tử ñơn giản Giá trị mặc ñịnh Refsnes 36 1970-03-27 Giá trị gán sẵn 21 22 2.2. Thuộc tính XSD Ví dụ Nếu một phần tử có các thuộc tính, thì phần tử ñó có kiểu phức tạp. Cú pháp ñịnh nghĩa thuộc tính Smith Một số kiểu thông dụng xs:string xs:decimal xs:integer xs:boolean xs:date xs:time 23 24 4
  5. 27/02/2013 2.3. Các ràng buộc trên giá trị Giá trị mặc ñịnh và giá trị gán sẵn Giới hạn trên các giá trị giá trị 120 Mặc ñịnh, thuộc tính là tùy chọn. Để chỉ ra là thuộc tính bắt buộc, viết như sau: 25 26 Giới hạn trên tập các giá trị Ràng buộc trên một chuỗi giá trị các giá trị có thể chấp nhận: Audi, Golf, BMW Ví dụ: phần tử tên là letter chỉ nhận giá trị là 1 kí tự thường a-z 27 28 phần tử initials chỉ chấp nhận giá trị là 3 kí tự hoa từ A-Z phần tử initials chỉ chấp nhận giá trị là 3 kí tự hoa hoặc thường từ a- z hoặc A-Z 29 30 5
  6. 27/02/2013 Chỉ nhận giá trị male hoặc Có không hoặc nhiều female kí tự thường a-z Chỉ nhận giá trị Có một hoặc nhiều chính xác là 8 cặp kí tự: kí tự kí tự thường ñứng trước thường/hoa/ kí tự hoa chữ số 31 32 Ràng buộc kí tự trắng Giá trị ñược thiết lập là "preserve". Bộ xử lý XML sẽ không bỏ bất kỳ kí tự trắng nào Bộ xử lý XML sẽ thay line feeds, tabs, spaces, carriage returns bằng Bộ xử lý XML sẽ thay thế spaces; leading and trailing spaces kí tự trắng (line feeds, ñược loại bỏ; nhiều spaces sẽ thu tabs, spaces, carriage gọn lại 1 space return) bằng spaces 33 34 Giới hạn chiều dài Tổng hợp các giới hạn kiểu dữ liệu Để giới hạn chiều dài giá trị của phần tử, sử dụng Ràng buộc Mô tả ràng buộc length, maxLength, minLength enumeration Định nghĩa danh sách các giá trị có thể nhận Chiều dài chính xác là 8 kí tự fractionDigits Số tối ña vị trí thập phân cho phép (>=0) Xác ñịnh số lượng chính xác các kí tự hoặc các khoản length mục ñược phép (>=0) Xác ñịnh cận trên cho giá trị số (giá trị của phần tử maxExclusive phải nhỏ hơn giá trị cận trên này) Xác ñịnh cận trên cho giá trị số (giá trị của phần tử maxInclusive phải nhỏ hơn hoặc bằng giá trị cận trên này) Tối thiểu 5 kí tự, tối Xác ñịnh số kí tự hoặc khoản mục cực ñại ñược phép ña 8 kí tự maxLength (>=0) 35 36 6
  7. 27/02/2013 Tổng hợp các giới hạn kiểu dữ liệu (tiếp) 3. Các kiểu phức tạp Ràng buộc Mô tả Xác ñịnh cận dưới cho giá trị số (giá trị của phần tử minExclusive phải lớn hơn giá trị cận trên này) Xác ñịnh cận dưới cho giá trị số (giá trị của phần tử minInclusive phải lớn hơn hoặc bằng giá trị cận trên này) Xác ñịnh số kí tự hoặc khoản mục tối thiểu ñược phép minLength (>=0) pattern Định nghĩa chính xác chuỗi kí tự ñược phép totalDigits Xác ñịnh chính xác số chữ số ñược phép (>0) whiteSpace Xác ñịnh cách thức xử lý với các kí tự trắng 37 38 3.1. Phần tử phức tạp Ví dụ Là phần tử chứa phần tử khác và/hoặc Phần tử product rỗng các thuộc tính Phần tử employee chỉ Có 4 loại phần tử phức tạp John chứa các phần tử khác Smith Phần tử rỗng Phần tử chỉ chứa các phần tử khác Phần tử food chỉ Ice cream chứa text Phần tử chỉ chứa text Phần tử chứa các phần tử khác và text It happened on 03.03.99 .... Phần tử description chứa cả phần tử và text 39 40 Định nghĩa phần tử phức tạp Định nghĩa phần tử phức tạp (tiếp) Quan sát ví dụ: Cách 2: Định nghĩa thông qua tên kiểu phức tạp John Smith Cách 1: ñịnh nghĩa trực tiếp bằng cách ñặt tên phần tử 41 42 7
  8. 27/02/2013 3.2. Phần tử rỗng Có thể ñịnh nghĩa 1 kiểu phức tạp dựa trên 1 kiểu phức tạp Phần tử rỗng: Định nghĩa phần tử rỗng: 43 44 Định nghĩa phần tử rỗng (tiếp) 3.3. Phần tử chỉ chứa phần tử Ví dụ: John Smith Cách ngắn gọn Định nghĩa phần tử này trong lược ñồ: Cách khác 45 46 Phần tử chỉ chứa phần tử (tiếp) 3.4. Phần tử chỉ chứa text Chứa text và các thuộc tính Định nghĩa cách khác: Định nghĩa .... .... 47 48 8
  9. 27/02/2013 Ví dụ Ví dụ (tiếp) 35 Định nghĩa khác Định nghĩa 49 50 3.5. Phần tử hỗn hợp Phần tử hỗn hợp (tiếp) Chứa cả text và phần tử khác Cách khác: Dear Mr.John Smith. Your order 1032 will be shipped on 2001-07-13. 51 52 3.6. Indicator 3.6.1. Indicator trình tự Có 7 indicator: Indicator All: phần tử con có thể xuất hiện Indicator trình tự theo bất kỳ trật tự nào và chỉ xuất hiện 1 All lần Choice Sequence Indicator xuất hiện maxOccurs minOccurs Indicator nhóm Group name attributeGroup name 53 54 9
  10. 27/02/2013 3.6.1. Indicator trình tự (tiếp) 3.6.1. Indicator trình tự (tiếp) Indicator Choice: hoặc 1 phần tử này hoặc Indicator Sequence: các phần tử con phải 1 phần tử kia xuất hiện xuất hiện theo ñúng trật tự 55 56 3.6.2. Indicator xuất hiện 3.6.2. Indicator xuất hiện (tiếp) Cho biết tần suất xuất hiện của phần tử Indicator minOccurs: số lần tối thiểu một Indicator maxOccurs: số lần tối ña một phần tử có thể xuất hiện phần tử có thể xuất hiện Để cho phần tử xuất hiện không giới hạn số lần, Mặc ñịnh xuất hiện tối thiểu 1 lần (minOccurs = 1), nếu không ñề cập ñể maxOccurs="unbounded" 57 58 Ví dụ: Myfamily.xml family.xsd Hege Refsnes Cecilie Tove Refsnes Hege Stale Borge Stale Refsnes 59 60 10
  11. 27/02/2013 3.6.3. Indicator nhóm 3.6.3. Indicator nhóm (tiếp) Định nghĩa các tập hợp phần tử có quan hệ Sau khi ñịnh nghĩa nhóm, có thể tham Các nhóm phần tử khảo ñến nó trong ñịnh nghĩa khác ... Phải ñịnh nghĩa phần tử All, Choice, Sequence bên trong khai báo nhóm. 61 62 3.6.3. Indicator nhóm (tiếp) 3.6.3. Indicator nhóm (tiếp) Các nhóm thuộc tính: Sau khi ñịnh nghĩa nhóm thuộc tính, có thể tham khảo ñến nó trong ñịnh nghĩa khác ñịnh nghĩa với khai báo như sau: ... ví dụ: 63 64 3.7. Phần tử children.xsd Cho phép mở rộng tài liệu XML với các phần tử Chúng ta muốn mở rộng phần tử person với một không ñược xác ñịnh trong lược ñồ. phần tử children Ví dụ: khai báo phần tử person. Bằng cách sử dụng phần tử , chúng ta có thể mở rộng family.xsd 65 66 11
  12. 27/02/2013 3.8. Phần tử bởi lược ñồ. Hege Refsnes Cecilie Stale Refsnes 67 68 Ví dụ: file family.xsd File attribute.xsd Có thể thêm bất kỳ số lượng thuộc tính vào phần tử person 69 70 File Myfamily.xml sau sử dụng các thành Như vậy, phần tử và phần từ 2 file family.xsd và attribute.xsd: ñược sử dụng ñể làm báo trong XML schema chính. Hege Hợp lệ vì file Refsnes family.xsd cho phép thêm thuộc tính vào phần tử Stale person Refsnes 71 72 12
  13. 27/02/2013 3.9. Phần tử thay thế Ví dụ Với lược ñồ XML, một phần tử có thể thay thế một phần tử khác. Ví dụ: có 2 người dùng ở 2 quốc gia khác nhau: Anh và Nauy. Lược ñồ cho phép người Anh sử dụng tên phần tử bằng tiếng Anh, và người Nauy sử dụng tên phần tử bằng tiếng Nauy. Quan sát ví dụ: Khai báo phần tử ñầu tên là name John Smith John Smith Định nghĩa substitutionGroup: phần tử navn có thể thay thế Hai tài liệu hợp lệ cho phần tử name 73 74 Không cho phép thay thế phần tử Không cho phép thay thế phần tử (tiếp) Để ngăn không cho phép thay thế phần tử, sử dụng thuộc tính block: Hợp lệ theo lược ñồ John Smith Ví dụ: John Smith Không hợp lệ theo lược ñồ 75 76 Chú ý Bài tập Phần tử ñầu và phần tử thay thế phải Xây dựng lược ñồ cho tài liệu XML sau: có cùng kiểu thế nó phải ñược khai báo là phần tử John Smith toàn cục. Ola Nordmann Langgt 23 Phần tử toàn cục là phần tử con trực 4000 Stavanger tiếp của phần tử . Các phần Norway tử lồng trong phần tử khác là các phần Hide your heart Empire Burlesque tử cục bộ. Special Edition 1 9.90 1 10.90 77 78 13
  14. 27/02/2013 Cách 1: Cách 1: File shiporder.xsd: 79 80 Cách 2: Cách 2: Cách khác: ñịnh nghĩa các phần tử, các thuộc tính, rồi tham chiếu ñến chúng 81 82 Cách 2: Cách 3: ñịnh nghĩa kiểu 83 84 14
  15. 27/02/2013 Cách 3: Cách 3: 85 86 4. Các kiểu dữ liệu 4.1. Kiểu chuỗi Kiểu chuỗi Chứa các kí tự, kí tự xuống dòng, kí tự Kiểu Date về ñầu dòng, kí tự tab Kiểu số Ví dụ: khai báo phần tử trong tài liệu XML có thể: John Smith John Smith Khi sử dụng kiểu chuỗi, bộ xử lý XML sẽ không biến ñổi giá trị! 87 88 Kiểu dữ liệu chuỗi chuẩn hóa Kiểu dữ liệu Token Dẫn xuất từ kiểu chuỗi Dẫn xuất từ kiểu chuỗi Chứa các kí tự Chứa các kí tự Bộ xử lý XML sẽ loại bỏ các kí tự xuống Bộ xử lý XML sẽ loại bỏ các kí tự xuống dòng, về ñầu dòng, thay thế tab bằng dòng, kí tự về ñầu dòng, kí tự tab, leading khoảng trắng and trailing spaces, multiple spaces. Khai báo: Khai báo: 89 90 15
  16. 27/02/2013 Tổng hợp các kiểu dữ liệu chuỗi Tổng hợp các kiểu dữ liệu chuỗi Tên Mô tả Tên Mô tả ENTITIES NCName ENTITY NMTOKEN Chuỗi biểu diễn thuộc tính NMTOKEN trong XML ID Chuỗi biểu diễn thuộc tính ID trong XML NMTOKENS IDREF Chuỗi biểu diễn thuộc tính IDREF trong XML normalizedString Chuỗi không chứa kí tự xuống dòng, về ñầu dòng, tab IDREFS QName language Chuỗi chứa id ngôn ngữ hợp lệ string Name Chuỗi chứa tên XML hợp lệ token Chuỗi không chứa kí tự xuống dòng, về ñầu dòng, tab, leading or trailing space, multiple space 91 92 Các giới hạn trên kiểu chuỗi 4.2. Kiểu date, time enumeration Kiểu dữ liệu date length Được sử dụng ñể xác ñịnh ngày maxLength Dạng: YYYY-MM-DD (phải ñầy ñủ tất cả) Khai báo trong lược ñồ: minLength pattern (NMTOKENS, IDREFS, and Phần tử trong tài liệu XML: ENTITIES cannot use this constraint) 2002-09-24 whiteSpace 93 94 Time zones Kiểu dữ liệu Time Để xác ñịnh vùng thời gian theo UTC, Dùng ñể xác ñịnh thời gian thêm chữ Z sau date Dạng: "hh:mm:ss" (phải có ñầy ñủ) 2002-09-24Z Khái báo Xác ñịnh offset: thêm thời gian dương/âm 09:00:00 2002-09-24-06:00 09:30:10.5 2002-09-24+06:00 95 96 16
  17. 27/02/2013 Time zones Kiểu dữ liệu DateTime Tương tụ kiểu date, thêm chữ 'Z' Để xác ñịnh date và time 09:30:10Z Dạng: "YYYY-MM-DDThh:mm:ss" Hoặc thêm giờ dương/âm: Phải ñầy ñủ các thành phần trên 09:30:10-06:00 Khai báo trong schema: 09:30:10+06:00 Trong tài liệu XML, có thể như sau: 2002-05-30T09:00:00 2002-05-30T09:30:10.5 97 98 Time zones Kiểu dữ liệu Duration Tương tự, thêm Z vào ñằng sau hoặc thêm Dùng ñể xác ñịnh khoảng thời gian giờ dương/âm Dạng: "PnYnMnDTnHnMnS" 2002-05-30T09:30:10Z P: chu kỳ nY: số năm 2002-05-30T09:30:10-06:00 nM: số tháng 2002-05-30T09:30:10+06:00 nD: số ngày T: ngăn cách phần date với phần time nH: số giờ nM: số phút nS: số giây 99 100 Kiểu dữ liệu Duration (tiếp) Các kiểu dữ liệu Date Time Khai báo trong lược ñồ: Tên Mô tả date Định nghĩa 1 giá trị date Phần tử trong tài liệu dateTime Định nghĩa 1 giá trị datetime Chu kỳ 5 năm: P5Y duration Định nghĩa 1 khoảng thời gian Chu kỳ 5 năm 2 tháng 10 ngày: gDay Định nghĩa phần của date - the day (DD) P5Y2M10D gMonth Định nghĩa phần của date - the month (MM) Chu kỳ 5 năm, 2 tháng, 10 ngày 15 giờ: gMonthDay Định nghĩa phần của date - the month and day (MM-DD) P5Y2M10DT15H gYear Định nghĩa phần của date - the year (YYYY) Chu kỳ 15 giờ: PT15H gYearMonth Định nghĩa phần của date - the year and month (YYYY- Thêm dấu trừ: chu kỳ âm MM) -P10D time Định nghĩa giá trị time 101 102 17
  18. 27/02/2013 Các ràng buộc trên kiểu dữ liệu thời gian 4.3. Kiểu dữ liệu thập phân enumeration Dùng ñể xác ñịnh kiểu số maxExclusive Khai báo trong schema: maxInclusive minExclusive Ví dụ: minInclusive 0 999.50 pattern 14 +999.5450 whiteSpace -999.5230 Số chữ số tối ña là 18 103 104 Kiểu dữ liệu số nguyên Kiểu dữ liệu numeric Khai báo trong lược ñồ: Tên Mô tả byte Số nguyên 8 bit có dấu Ví dụ: decimal Giá trị thập phân 999 0 int Số nguyên 32 bit có dấu +999 -999 integer Giá trị số nguyên long Số nguyên 64 bit có dấu negativeInteger Số nguyên âm nonNegativeInteger Số nguyên không âm 105 106 Các ràng buộc trên kiểu numeric Tên Mô tả enumeration nonPositiveInteger Số nguyên không dương fractionDigits positiveInteger Số nguyên dương maxExclusive maxInclusive short Số nguyên 16 bit có dấu minExclusive unsignedLong Số nguyên 64 bit không dấu minInclusive unsignedInt Số nguyên 32 bit không dấu pattern unsignedShort Số nguyên 16 bit không dấu totalDigits unsignedByte Số nguyên 8 bit không dấu whiteSpace 107 108 18
  19. 27/02/2013 4.4. Các kiểu dữ liệu khác Kiểu boolean Boolean Khai báo trong schema: Binary AnyURI Giá trị hợp lệ gồm có: true, false, 1(true), 0(false) Ví dụ: 999 109 110 Kiểu binary Kiểu AnyURI Có 2 kiểu Khai báo trong schema: base64Binary hexBinary Nếu URI có kí tự cách, thay thế nó bởi Khai báo trong schema: %20 Ví dụ: 111 112 Một số kiểu Các giới hạn trên những kiểu này anyURI enumeration (kiểu boolean không sử dụng base64Binary ràng buộc này) length (kiểu boolean không sử dụng ràng boolean buộc này) double maxLength (kiểu boolean không sử dụng float ràng buộc này) hexBinary minLength (kiểu boolean không sử dụng NOTATION ràng buộc này) QName pattern whiteSpace 113 114 19
  20. 27/02/2013 Lời hay ý ñẹp "Hãy lấy sự khôn ngoan làm hành trang cho bạn trong hành trình của cuộc ñời, vì ñó là sự nâng ñỡ ñáng tin cậy hơn mọi tài sản khác" G. Bizet 115 116 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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