Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin
Khoa Công ngh Thông Tin – ĐH Đà L tệ ạ Định nghĩa kiểu tài liệu (DTD) và Kiểm tra tính hợp lệ (Valid) của XML Khoa Công nghệ Thông Tin – ĐH Đà Lạt Ví dụ 1 Ví dụ đơn giản: <?xml version="1.0"?> <!DOCTYPE DOCUMENT[ <!ELEMENT DOCUMENT (p*)> <!ELEMENT p (#PCDATA)> ]> <DOCUMENT> <p> chao </p> <p> cac </p> <p> ban </p> </DOCUMENT> Khoa Công nghệ Thông Tin – ĐH Đà Lạt Ví dụ 2 <?xml version=“1.0”> <!DOCTYPE DOCUMENT[ <!ELEMENT DOCUMENT (CUSTOMER)*> <!ELEMENT CUSTOMER(NAME, DATE, ORDERS)> <!ELEMENT NAME (LAST_NAME, FIRST_NAME)> <!ELEMENT LAST_NAME (#PCDATA)> <!ELEMENT FIRST_NAME (#PCDATA)> <!ELEMENT DATE (#PCDATA)> <!ELEMENT ORDERS (ITEM)*> <!ELEMENT ITEM (PRODUCT, NUMBER, PRICE)> <!ELEMENT PRODUCT (#PCDATA | PRODUCT_ID)*> <!ELEMENT NUMBER (#PCDATA)> <!ELEMENT PRICE (#PCDATA)> <!ELEMENT PRODUCT_ID (#PCDATA)>] <DOCUMENT> <CUSTOMER TYPE = "Good"> <NAME> <LAST_NAME> aaa </LAST_NAME> <FIRST_NAME> bbb </FIRST_NAME> </NAME> <DATE> 1/1/03 </DATE> <ORDERS class="SanPham"> <ITEM> PRODUCT> Tomatoes </PRODUCT> <NUMBER> 25 </NUMBER> <PRICE> $1.25 </PRICE> </ITEM> <ITEM> <PRODUCT> Tomatoes </PRODUCT> <NUMBER> 25 </NUMBER> <PRICE> $1.25 </PRICE> </ITEM> </ORDERS> </CUSTOMER> </DOCUMENT> Khoa Công nghệ Thông Tin – ĐH Đà Lạt Khai báo DTD Thẻ <!DOCTYPE> để bắt đầu định nghĩa kiểu tư liệu cho các phần tử XML. Các mẫu khai báo: <!DOCTYPE rootname [DTD]> <!DOCTYPE rootname SYSTEM URL> <!DOCTYPE rootname SYSTEM URL [DTD] Ví dụ 1: <!DOCTYPE DOCUMENT[ <!ELEMENT DOCUMENT (p*)> <!ELEMENT p (#PCDATA)> ]> Ví dụ 2: DTD ngoại <!DOCTYPE DOCUMENT SYSTEM "thu.dtd"> Ví dụ 3: <!DOCTYPE DOCUMENT SYSTEM “http://www.Minhkhai.com.vn/product/order.dtd"> Khoa Công nghệ Thông Tin – ĐH Đà Lạt Khai báo phần tử trong DTD (Element) Khai báo: <!ELEMENT> để định nghĩa kiểu tư liệu DTD cho một phần tử Cú pháp: <!ELEMENT NAME CONTENT_MODEL> NAME: tên phần tử muốn định nghĩa. CONTENT_MODEL có thể là: ANY. Các phần tử con khác hoặc dữ liệu Khoa Công nghệ Thông Tin – ĐH Đà Lạt Định nghĩa kiểu dữ liệu Any: khai báo một phần tử kiểu Any có nghĩa phần tử được khai báo có thể chứa bất kì kiểu nội dung nào mà bạn định nghĩa. Khi phần tử được khai báo là Any thì trình phân tích sẽ không kiểm tra cú pháp hay xác định tính hợp lệ của nội dung phần tử. Khoa Công nghệ Thông Tin – ĐH Đà Lạt Định nghĩa kiểu dữ liệu Danh sách các phần tử con: một phần tử DTD, nội dung có thể chứa những phần tử con khác. Ví dụ: <!ELEMENT DOCUMENT (CUSTOMER)*> <!ELEMENT CUSTOMER(NAME)> <!ELEMENT NAME (LAST_NAME, FIRST_NAME)> <!ELEMENT LAST_NAME (#PCDATA)> <!ELEMENT FIRST_NAME (#PCDATA)> DOCUMENT là phần tử chứa phần tử con CUSTOMER, CUSTOMER là phần tử chứa phần tử con NAME, NAME là phần tử chứa phần tử con LAST_NAME và FIRST_NAME Khoa Công nghệ Thông Tin – ĐH Đà Lạt Định nghĩa kiểu dữ liệu #PCDATA: là kiểu dữ liệu văn bản thô. Có thể chứa số nguyên, số chấm động nhưng phải ở dạng text. Không được chứa các thẻ định dạng Ví dụ: <!DOCTYPE DOCUMENT[ <!ELEMENT DOCUMENT(CUSTOMER)*> <!ELEMENT CUSTOMER(#PCDATA)> ]> <DOCUMENT> <CUSTOMER> <NAME> Sam Smith </NAME> </CUSTOMER> <DOCUMENT> Tài liệu trên là không hợp lệ vì trong thẻ <CUSTOMER> chứa thẻ định dạng Khoa Công nghệ Thông Tin – ĐH Đà Lạt Định nghĩa kiểu dữ liệu Làm việc với nhiều phần tử con A*: không có hoặc có nhiều phần tử con giống nhau. A+: có một hoặc nhiều phần tử con giống nhau. A?: phần tử A hoặc không có phần tử nào cả A,B: phần tử A tiếp đến phần tử B. A|B: Phần tử A hoặc phần tử B nhưng không được cả hai. Ví dụ Khoa Công nghệ Thông Tin – ĐH Đà Lạt Kiểu dữ liệu Ví dụ 1: <?xml version=“1.0”?> <!DOCTYPE DOCUMENT [ <!ELEMENT CUSTOMER (#PCDATA)> <!ELEMENT DOCUMENT (CUSTOMER)> ]> <DOCUMENT> <CUSTOMER> Sam smith </CUSTOMER> <CUSTOMER> Tony Braxton </CUSTOMER> </DOCUMENT> Tài liệu trên bi bắt lỗi vì phần tử CUSTOMER xuất hiện hai lần trong tài liệu. Do đó để tài liệu không bị bắt lỗi thì dòng khai báo <!ELEMENT DOCUMENT (CUSTOMER)> phải sửa lại như sau: <!ELEMENT DOCUMENT (CUSTOMER)*> [...]... Khoa Công nghệ Thông Tin – ĐH Đà Lạt Định nghĩa DTD ngoại DTD nội (Internal DTD): phần định nghĩa và khai báo tài liệu nằm trong cùng tài liệu được gọi là DTD nội DTD ngoại (External DTD): định nghĩa DTD được lưu trong file DTD Khi đó tài liệu XML sẽ tham chiếu đến các định nghĩa trong file DTD Ví dụ: Khoa Công nghệ Thông Tin – ĐH Đà Lạt Định nghĩa DTD ngoại Ví dụ: ... ATTRIBUTE_NAME: tên thuộc tính TYPE: kiểu dữ liệu của thuộc tính DEFAULT_VALUE: là giá trị mặc định muốn gán cho thuộc tính Khoa Công nghệ Thông Tin – ĐH Đà Lạt Khai báo thuộc tính Thuộc tính có thể mang các giá trị TYPE như sau: Kiểu CDATA ENTITIES ENTITY Enumerated ID Mô tả Kiểu dữ liệu kí tự đơn giản không chứa phần định dạng Tham chiếu thực thể (phải được định nghĩa trong DTD) Tên tham chiếu của... Công nghệ Thông Tin – ĐH Đà Lạt Khai báo thuộc tính Thuộc tính để bổ sung thêm các thông tin cho phần tử thẻ Khai báo thuộc tính trong DTD: Để tài liệu XML hợp lệ phải định nghĩa tất cả các thuộc tính mà tài liệu sử dụng Chỉ định kiểu dữ liệu của thuộc tính, giá trị của thuộc tính Cú pháp: định nghĩa hoàn toàn trong tài liệu tham chiếu đến nó Thực thể ngoại (External Entity): nội dung của nó được định nghĩa hoàn toàn từ một nguồn dữ liệu bên ngoài (file) và được tham chiếu bằng địa chỉ URL hoặc URI Thực thể có thể ở dạng phân tích (pharse) hoặc có thể ở dạng văn bản thuần (text) Thực thể ở dạng phân tích thì phải hợp khuôn dạng tài liệu XML Khoa Công nghệ Thông.. .Định nghĩa kiểu dữ liệu Ví dụ 2: Ta có thể sử dụng kí tự đại diện một nhóm thứ tự phần tử dựa vào dấu () CUSTOMER có thể chứa một hoặc nhiều phần tử NAME, mỗi phần tử NAME lại kết hợp với phần tử CREDIT_RATING hoặc không (NAME, CREDIT_RATING?) Tổ hợp này lại được lặp lại một hoặc nhiều lần trong định nghĩa. .. Tin – ĐH Đà Lạt Định nghĩa kiểu dữ liệu Ví dụ 3: … … Tomatoes 8 $1.25 Tomatoes 8 $1.25 Khoa Công nghệ Thông Tin – ĐH Đà Lạt Định nghĩa nội dung hỗn... dạng tài liệu XML Khoa Công nghệ Thông Tin – ĐH Đà Lạt Thực thể trong DTD Một số thực thể tổng quát được định nghĩa sẵn trong XML: < < > > & & " “ ' ‘ Các thực thể định nghĩa sẵn trong XML rất hữu dụng khi muốn thể hiện các kí tự đặc biệt trùng với kí tự của phần định dạng Khoa Công nghệ Thông Tin – ĐH Đà Lạt Thực thể trong DTD Ví dụ: Chao... thể trong tài liệu Không dùng khai báo thực thể tổng quát trong chính khai báo DTD được Tham chiếu thực thể tham số dùng trong chính khai báo DTD Khoa Công nghệ Thông Tin – ĐH Đà Lạt Thực thể tham số Khai báo thực thể tham số: Ví dụ: Ta muốn thêm định nghĩa cho phần tử BUYER mà nội dung giống như CUSTOMER Nếu không dùng thực thể tham chiếu thì phải định nghĩa BUYER... Thực thể tổng quát ngoại Ví dụ 2: định nghĩa file date.xml như sau: October 15, 2001 Trong file vidu.dtd khai báo như sau: bằng cách tham chiếu đến thực thể date.xml như sau: &TODAY; … Khoa Công nghệ Thông Tin – ĐH Đà Lạt Thực thể tổng quát ngoại Ví dụ 3: định nghĩa file date.txt như sau: October... kkkk Khoa Công nghệ Thông Tin – ĐH Đà Lạt Định nghĩa DTD ngoại Ví dụ: file DTD: vd.dtd file XML: . dữ liệu Khoa Công nghệ Thông Tin – ĐH Đà Lạt Định nghĩa kiểu dữ liệu Any: khai báo một phần tử kiểu Any có nghĩa phần tử được khai báo có thể chứa bất kì kiểu nội dung nào mà bạn định nghĩa. Khi. Tin – ĐH Đà Lạt Định nghĩa DTD ngoại DTD nội (Internal DTD): phần định nghĩa và khai báo tài liệu nằm trong cùng tài liệu được gọi là DTD nội. DTD ngoại (External DTD): định nghĩa DTD được. Thông Tin – ĐH Đà Lạt Định nghĩa kiểu dữ liệu #PCDATA: là kiểu dữ liệu văn bản thô. Có thể chứa số nguyên, số chấm động nhưng phải ở dạng text. Không được chứa các thẻ định dạng Ví dụ: <!DOCTYPE