Lược đồ XML (XML Schema)

Vì sự phức tạp của khai báo DTD, tổ chức W3C đưa ra một giải pháp tổng quát hơn DTD đó là khai báo và định nghĩa các phần tử trong tài liệu XML theo lược đồ XML (XML Schema).

Để kiểm tra tính hợp lệ của tài liệu XML bằng lược đồ XML Schema, ta dùng các bộ kiểm tra cú pháp lược đồ (Schema Checker).

 

 

ppt60 trang | Chuyên mục: XML | Chia sẻ: dkS00TYs | Lượt xem: 3816 | Lượt tải: 1download
Tóm tắt nội dung Lược đồ XML (XML Schema), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
chema, ta dùng các bộ kiểm tra cú pháp lược đồ (Schema Checker). Giới thiệu Định nghĩa những phần tử xuất hiện trong tài liệu XML. Định nghĩa những thuộc tính xuất hiện trong tài liệu. Định nghĩa quan hệ phần tử cha con Định nghĩa thứ tự các phần tử con Định nghĩa số phần tử con Định nghĩa phần tử rỗng hay chứa dữ liệu text Định nghĩa kiểu dữ liệu của phần tử và thuộc tính Định nghĩa giá trị mặc định của thuộc tính và phần tử Tại sao sử XML dụng XML Schema? Dễ dàng để mô tả nội dung tài liệu vì dùng chính cú pháp XML để định nghĩa Dễ kiểm tra tính hợp lệ của tài liệu Dễ định nghĩa về mặt dữ liệu (data facet) Dễ dàng định nghĩa dữ liệu mẫu (data patterns) Dễ chuyển đổi kiểu dữ liệu này sang kiểu dữ liệu khác Ví dụ Note.xml 	 	 	Tove 	Jani 	Reminder 	Don't forget me this weekend! Ví dụ (tt) Note.dtd 	 	 	 Ví dụ (tt) Note.xsd 	 	 	 	 	 	 	 	 	 	 	 	 	 Ví dụ (tt) Tài liệu XML có tham chiếu file DTD 	 	 	 	Tove 	Jani 	Reminder 	Don't forget me this weekend! 	 Ví dụ (tt) Tài liệu XML tham chiếu lược đồ XML 	 	 	Tove 	Jani 	 	Reminder 	Don't forget me this weekend! 	 Lược đồ XML – Phần tử là phần tử gốc của mọi lược đồ XML Schema. 	 	 	... 	... 	 Trong lược đồ XML Schema chứa một vài thuộc tính như sau: 	 	 	... 	... 	 Lược đồ XML – Phần tử xmlns:xs="“ chỉ ra các phần tử và kiểu dữ liệu dùng trong lược đồ từ  Chỉ định này bảo cho bộ kiểm tra cú pháp lược đồ rằng tất cả các phần tử dùng trong tài liệu XML đều được khai báo trong namespace "”. xsi:schemaLocation=" note.xsd" Định nghĩa phần tử đơn Phần tử đơn là phần tử chỉ chứa dữ liệu text, không chứa các phần tử khác hay thuộc tính. Kiểu text trong XML Schema có thể là kiểu boolean, string, date… Cú pháp để định nghĩa một phần tử đơn: Định nghĩa phần tử đơn Trong đó xxx là tên của phần tử và yyy là kiểu dữ liệu của phần tử. XML schema đã xây dựng sẵn nhiều kiểu dữ liệu. Một vài kiểu dữ liệu phổ biến: xs:string xs:decimal xs:integer xs:boolean xs:date xs:time Ví dụ Trong tài liệu XML có các phần tử sau: 	Refsnes 36 	1970-03-27 Định nghĩa trong XML Schema như sau: 	 Đặt giá trị mặc định cho phần tử đơn Giá trị mặc định: Dùng Default: phần tử sẽ được tự động gán giá trị mặc định nếu nó không được gán bởi giá trị khác được. Dùng Fixed: giá trị của phần tử sẽ được gán bằng giá trị mặc định và không thay đổi. Ví dụ: 	  Tạo các kiểu dữ liệu đơn giản Restriction: dùng để định nghĩa các giá trị cho phần tử hay thuộc tính trong tài liệu XML. Restriction trên giá trị: 	Ví dụ: muốn định nghĩa một phần tử tên là AGE và giá trị của nó chỉ nằm từ 0 đến 120. 	 	 	 	 	 	 	 	 Tạo các kiểu dữ liệu đơn giản Restriction trên một tập các giá trị: 	Ví dụ: định nghĩa một phần tử CAR mà giá trị của nó nằm trong tập các giá trị sau: BMW, TOYOTA, FORD 	 	 	 	 	 	 	 	 	 Tạo các kiểu dữ liệu đơn giản Restriction trên một tập các giá trị: 	Với ví dụ trên có cách viết tương tự: 	 	 	 	 	 	 	 	 Tạo các kiểu dữ liệu đơn giản Restriction trên một chuỗi các giá trị: 	Ví dụ: định nghĩa một phần tử “LETTER” mà giá trị của nó chỉ là một trong các kí tự thường từ a đến z: 	 	 	 	 	 	 	 Tạo các kiểu dữ liệu đơn giản Restriction trên một chuỗi các giá trị: 	Ví dụ: định nghĩa một phần tử “initials” mà giá trị của nó là 3 kí tự chữ hoa a đến z: 	 	 	 	 	 	 	 Tạo các kiểu dữ liệu đơn giản Restriction trên một chuỗi các giá trị: 	Ví dụ: định nghĩa một phần tử “initials” mà giá trị của nó là 3 kí tự chữ hoa a đến z hoặc chữ thường từ a đến z: 	 	 	 	 	 	 	 Tạo các kiểu dữ liệu đơn giản Restriction trên một chuỗi các giá trị: 	Ví dụ: định nghĩa một phần tử “choice” mà giá trị của nó là 3 kí tự chữ thường từ x, y hoặc z: 	 	 	 	 	 	 	 Tạo các kiểu dữ liệu đơn giản Restriction trên một chuỗi các giá trị: 	Ví dụ: định nghĩa một phần tử “prodid” mà giá trị của nó là một số 5 chữ số từ 0 đến 9: 	 	 	 	 	 	 	 Tạo các kiểu dữ liệu đơn giản Restriction trên một chuỗi các giá trị: 	Ví dụ: định nghĩa một phần tử “letter” mà giá trị của nó là không có hoặc là một chuỗi gồm nhiều kí tự thường từ a-z: 	 	 	 	 	 	 	 Tạo các kiểu dữ liệu đơn giản Restriction trên một chuỗi các giá trị: 	Ví dụ: định nghĩa một phần tử “letter” mà giá trị của nó là một hoặc nhiều cặp kí tự mà mỗi cặp là một kí tự thường kềm theo một kítự hoa sau nó: (sToP, không được là STOP hay StOp): 	 	 	 	 	 	 	 Tạo các kiểu dữ liệu đơn giản Restriction trên một chuỗi các giá trị: 	Ví dụ: định nghĩa một phần tử “gender” mà giá trị của nó là một trong hai giá trị male hoặc female: 	 	 	 	 	 	 	 Tạo các kiểu dữ liệu đơn giản Restriction trên một chuỗi các giá trị: 	Ví dụ: định nghĩa một phần tử “password” mà giá trị của nó bắt buộc phải là 8 kí tự, các kí tự có thể là hoa hoặc thường từ a đến z và chữ số từ 0 đến 9: 	 	 	 	 	 	 	 Tạo các kiểu dữ liệu đơn giản Restriction trên chiều dài: 	Ví dụ: định nghĩa một phần tử “password” mà giá trị của nó là một chuỗi 8 kí tự 	 	 	 	 	 	 	 Tạo các kiểu dữ liệu đơn giản Restriction trên chiều dài: 	Ví dụ: định nghĩa một phần tử “password” mà giá trị của nó là một chuỗi >= 5 và 	 	 	 	 	 	 Bài tập Bài 1: Một chương trình quản lý thông tin sinh viên, và điểm các môn học mà họ đăng kí lưu các thông tin sau: sinh viên gồm mã số sinh viên, họ tên sinh viên, lớp. Một môn học mà sinh viên đăng kí học gồm có thông tin mã môn học, tên môn học, số tín chỉ, với mỗi môn học mà sinh viên đăng kí học thì sẽ có kết quả cuối kì chính là điểm thi mà sinh viên đạt được trong môn đó. Yêu cầu: định nghĩa lược đồ XML Schema với yêu cầu như sau: Bài tập MSSV: là một chuỗi các kí tự số có chiều dài 7 kí tự. Lớp của sinh viên là một trong những giá trị của tập hợp gồm các lớp {CTK28, CTK28CD, CTK29, CTK29CD, CTK30, CTK30CD, CTK31, CTK31CD}. Mã môn học là một chuỗi 4 kí tự, hai kí tự đầu là chữ cái, hai kí tự sau là số. Số tín chỉ của môn học >= 1 và =0 và Trong đó: xxx là tên thuộc tính yyy là kiểu dữ liệu của thuộc tính Ví dụ: với phần tử có thuộc tính như sau: 	Smith thì định nghĩa thuộc tính như sau: 	 Định nghĩa thuộc tính Các kiểu dữ liệu của thuộc tính: xs:string xs:decimal xs:integer xs:boolean xs:date xs:time Chỉ định ràng buộc và trị mặc định cho thuộc tính: Required: yêu cầu thuộc tính phải có và được gán giá trị trong thẻ Optional: thuộc tính có thể có hoặc không Fixed: giá trị thuộc tính phải đuợc gán cố định và không thay đổi. Default: nếu thuộc tính không được gán giá trị thì giá trị mặc định trong lược đồ sẽ là giá trị của thuộc tính. Sử dụng từ khóa use để chỉ định ràng buộc cho thuộc tính. Ví dụ 	 	 	 	 	 	 	 	 	 	 	 	 	 Định nghĩa phần tử phức tạp Phần tử phức tạp là phần tử chứa các phần tử khác hay các thuộc tính. Có 4 loại phần tử phức tạp: Những phần tử rỗng Phần tử chứa các phần tử khác Phần tử chứa dữ liệu text Phần tử chứa cả dữ liệu text và cả các phần tử Mỗi loại phần tử này có thể chứa nhiều thuộc tính Một ví dụ phần tử phức Ví dụ phần tử rỗng: 	 Phần tử Employee chứa các phần tử khác 	 	John 	Smith 	 Phần tử Food chỉ chứa kiểu dữ liệu text 	Ice cream Phần tử description chứa cả text và phần tử khác 	It happened on 03.03.99 .... 	 Định nghĩa phần tử phức tạp Ví dụ, với phần tử employee 	 	John 	Smith 	 	ta có định nghĩa như sau: 	 	 	 	 	 	 	 	 Định nghĩa phần tử phức tạp Ví dụ, với phần tử employee 	 	John 	Smith 	 	ta có thể dùng thuộc tính để tham chiếu đến phần tử khác: 	 	 	 	 	 	 	 	 	 	 Định nghĩa phần tử phức tạp Ta cũng có thể định nghĩa một phần tử phức tạp dựa trên cơ sở một phần tử phức tạp khác đã có và thêm vào một số phần tử. 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Định nghĩa phần tử phức tạp Phần tử rỗng: 	Ví dụ 1: 	Ví dụ 2: 	 	 	 	 	 	tương tự 	 	 	 	 Định nghĩa phần tử phức tạp Phần tử chứa các phần tử khác: 	Ví dụ: để định nghĩa phần tử person như sau: 	 	John 	Smith 	 	ta định nghĩa như sau: 	 	 	 	 	 	 	 Chú ý: thẻ để đặt thứ tự xuất hiện của các phần tử trong tài liệu. Định nghĩa phần tử phức tạp Định nghĩa phần tử chứa dữ liệu text 	Ví dụ: 	 	 	 	 .... .... 	 	 	 	 hoặc 	 	 	 	 .... .... Định nghĩa phần tử phức tạp Định nghĩa phần tử chứa dữ liệu hỗn hợp 	Ví dụ: ta định nghĩa phần tử như sau: 	 	Dear Mr.John Smith.Your order 	1032will be shipped on 	2001-07-13. 	 	Khi đó ta định nghĩa như sau: 	 	 	 	 	 	 Một số chỉ định Thứ tự: All: các phần tử con có thể xuất hiện theo thứ tự bất kì 	 	 	 	 	 	 	 	 Choice: chỉ định hoặc điều này xảy ra hoặc điều khác xảy ra 	 	 	 	 	 	 Một số chỉ định Thứ tự: Sequence: yêu cầu các phần tử con xuất hiện theo đúng thứ tự Chỉ định số lần: maxoccur 	 	 	 	 	 	ở ví dụ trên chỉ định rằng child_name xuất hiện ít nhất 1 lần và nhiều nhất 10 lần minoccur Một số chỉ định Chỉ định nhóm: có thể định nghĩa và gom các phần tử lại thành một nhóm. Nhóm giống như biểu thức () trong DTD Để định nghĩa một nhóm ta dùng cú pháp sau: 	 	 ... 	 Ví dụ muốn độc giả có thể vừa mượn sách vừa mượn tạp chí, ta gom phần tử books và magazines vào thành một nhóm 	 	 	 Một số chỉ định Ta có thể kết hợp all (các phần tử trong nhóm phải xuất hiện đồng thời trong tài liệu hoặc không xuất hiện lần nào cả), choice, sequence khi định nghĩa nhóm 	 	 	 	 	 	 Một số chỉ định Ta có thể định nghĩa một nhóm, và định nghĩa nhóm khác tham chiếu đến nó 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Một số chỉ định Thuộc tính nhóm: ngoài việc gom nhóm các phần tử thì ta còn có thể gom nhóm các thuộc tính. Cú pháp: 	 ... 	 Ví dụ: định nghĩa nhóm thuộc tính như sau: 	 	 	 	 	 	 	 	 	 	 Không gian tên miền (Namespace) Thuộc tính xsi:noNamespaceSchemaLocation 	 Khi trong lược đồ XMLSchema không yêu cầu namespace. Để chỉ định vị trí cho lược đồ XMLSchema không dùng target namespace. 	 Không gian tên miền (Namespace) Ví dụ: sinhvien.xsd 	 	 	 	 	 	 	 	 	 	 Không gian tên miền (Namespace) Ví dụ(tt): sinhvien.xml 	 	 	 	 	 0413213 	 Nguyen Quang Dung 	 	… 	 Không gian tên miền (Namespace) Thuộc tính xsi:SchemaLocation 	 Thuộc tính này được dùng trong tài liệu XMLSchema có target namespace. Danh sách anyURI mỗi phần tử là một cặp gồm namesapce và mô tả vị trí chỉ định. Không gian tên miền (Namespace) Ví dụ: sinhvien.xsd 	 	 	 	 	 	 	 	 	 	 	 Không gian tên miền (Namespace) Ví dụ(tt): sinhvien.xml 	 	 	 0413113 	 Nguyen Van Hung 	 	 

File đính kèm:

  • pptLược đồ XML (XML Schema).ppt