Bài giảng tích hợp dữ liệu và XML chương 05 schema

20 596 3
Bài giảng tích hợp dữ liệu và XML  chương 05 schema

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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

Ngày đăng: 23/01/2016, 00:40

Tài liệu cùng người dùng

Tài liệu liên quan