http://www.ebook.edu.vn Căn XML Chương DTD (Document Type Definition) DTD gì? DTD (Document Type Definition) kiểu tài liệu dùng để định nghĩa kiểu liệu cho phần tử tài liệu XML Khi định nghĩa phần tử XML tùy thích, cho hợp quy tắc tài liệu XML Tuy nhiên để tường minh ta nên định nghĩa kiểu liệu cho phần tử tài liệu XML Trong chương trước học cách viết tài liệu hợp khuôn dạng Tuy nhiên tài liệu XML xem hợp khuôn dạng có giá trị tồn phần tử tài liệu được định nghĩa kiểu liệu mà chứa Với cách định nghĩa kiểu tư liệu (DTD) đọc tài liệu XML cần đọc phần DTD biết cấu trúc tài liệu XML Trước vào phần chi tiết cách tạo tài liệu DTD, xem ví dụ sau: ]> Tove Jani Reminder Don't forget me this weekend Xem ví dụ thấy phần bôi đen phần DTD dùng để mô tả kiểu liệu tài liệu XML, phần có màu nhạt phần tử tài liệu XML Phần DTD ví dụ hiểu sau: Tài liệu XML có phần tử gốc tên note, phần tử gốc có phần tử from, heading, body phần tử có kiểu liệu text Định nghĩa tài liệu DTD Để viết tài liệu DTD dễ, cần tuân thủ số quy tắc W3C Đầu tiên tìm hiểu phần tử (emlement), thuộc tính, thực thể DTD 2.1 Phần tử TRUNG TÂM CÔNG NGHỆ PHẦN MỀM THỪA THIÊN HUẾ Địa chỉ: Số Lê Lợi, Huế Điện thoại: (054).849.499 Fax: (054).849.498 Email: huesoft@dng.vnn.vn website: http://www.huesoft.com.vn Trang / 59 http://www.ebook.edu.vn Căn XML Phần tử có chức dùng để khai báo bắt đầu định nghĩa kiểu tư liệu DTD Định nghĩa kiểu tư liệu có dạng, DTD tham chiếu nội DTD tham chiếu ngoại DTD tham chiếu nội DTD định nghĩa tài liệu XML DTD tham chiếu ngoại DTD định nghĩa bên tài liệu XML Bây tìm hiểu cú pháp 2.1.1 Định nghĩa DTD tham chiếu nội Để bắt đầu định nghĩa kiểu tư liệu DTD tham chiếu nội dùng cú pháp sau: Don't forget me this weekend 2.1.2 Định nghĩa DTD tham chiếu ngoại Sử dụng định nghĩa DTD tham chiếu ngoại làm cho ứng dụng XML trở nên dẽ dàng chia dùng chung với ứng dụng khác Có hai cách để định DTD tham chiếu ngoại: Tham chiếu ngoại riêng tham chiếu ngoại chung Những định nghĩa DTD tham chiếu ngoại riêng sử dụng cho nhóm người mang tính cá nhân, chúng khơng dùng cho mục đích chung rộng lớn, mục đích phân phối Còn định nghĩa DTD tham chiếu ngoại chung mang tính cộng đồng • Để định nghĩa DTD tham chiếu ngoại riêng dùng cú pháp sau: Trong root-element tên phần tử gốc tài liệu XML, filename tên file định nghĩa kiểu tư liệu DTD Ví dụ: Tove Jani Reminder TRUNG TÂM CÔNG NGHỆ PHẦN MỀM THỪA THIÊN HUẾ Địa chỉ: Số Lê Lợi, Huế Điện thoại: (054).849.499 Fax: (054).849.498 Email: huesoft@dng.vnn.vn website: http://www.huesoft.com.vn Trang 10 / 59 http://www.ebook.edu.vn Căn XML Don't forget me this weekend! File note.dtd với nội dung sau: Địa chứa file DTD URL/URI Tove Jani Reminder Don't forget me this weekend! • Để định nghĩa DTD tham chiếu ngoại chung dùng cú pháp sau: Trong FPI (Formal Public Identifier) định danh chung hình thức, cần tuân theo số quy tắc áp dụng cho FPI sau: o Trường FPI xác định kết nối DTD đến chuẩn hình thức Đối với DTD tự định nghĩa trường dấu chấm Đối với chuẩn hình thức trường tự tham chiếu đến chuẩn o Trường thứ hai tên nhóm hay tên người chịu trách nhiệm bảo trì nâng cấp định nghĩa DTD tên phải mang tính o Trường thứ ba định kiểu tài liệu mơ tả, thường trường kèm theo số định danh (chẳn hạn version 1.0) o Trương thứ ba định ngôn ngữ mà bạn định nghĩa DTD (ví dụ ngơn ngữ Tiếng Anh - EN) o Mỗi trường FPI cách dấu // Ví dụ TRUNG TÂM CÔNG NGHỆ PHẦN MỀM THỪA THIÊN HUẾ Địa chỉ: Số Lê Lợi, Huế Điện thoại: (054).849.499 Fax: (054).849.498 Email: huesoft@dng.vnn.vn website: http://www.huesoft.com.vn Trang 11 / 59 http://www.ebook.edu.vn Căn XML Tove Jani Reminder Don't forget me this weekend! Còn URL địa file DTD 2.2 Phần tử Phần tử dùng để định nghĩa kiểu liệu cho phần tử tài liệu XML Chúng ta sử dụng theo cú pháp sau: Trong đó: • element_name tên phần tử mà ta muốn định nghĩa • content_model kiểu phần tử này, EMPTY, ANY, #PCDATA, phần tử hay trộn lẫn nhiều thành phần Bây tìm hiểu chi tiết • Định nghĩa phần tử rỗng Ví dụ: • Định nghĩa phần tử có chứa nhiều kiểu liệu Ví dụ: • Định nghĩa phần tử có kiểu văn Ví dụ: • Định nghĩa phần tử có chứa phần tử Ví dụ: • Định nghĩa phần tử có chứa nhiều phần tử con, cách thứ liệt kê tất phần tử phần tử cách dấu phẩy Ví dụ để khai báo phần tử note có phần tử to, from, heading, body viết sau: Tất nhiên với cách viết khơng tối ưu, dùng cách viết thứ hai cho phần tử có nhiều phần tử cách dùng ký tự đại diện Dưới số nguyên tắc sử dụng ký tự đại diện: Giả sử có phần tử ROOT, phần tử có hai phần tử LIMB_A LIMB_B, có số định nghĩa sau: TRUNG TÂM CÔNG NGHỆ PHẦN MỀM THỪA THIÊN HUẾ Địa chỉ: Số Lê Lợi, Huế Điện thoại: (054).849.499 Fax: (054).849.498 Email: huesoft@dng.vnn.vn website: http://www.huesoft.com.vn Trang 12 / 59 http://www.ebook.edu.vn Căn XML • Phần tử ROOT khơng có có nhiều phần tử LIMB_A • Phần tử ROOT có nhiều phần tử LIMB_A • Phần tử ROOT khơng có có phần tử LIMB_A • Phần tử ROOT có phần tử con, phần tử LIMB_A tiếp đến LIMB_B • Phần tử ROOT có phần tử LIMB_A LIMB_B • Định nghĩa phần tử có chứa phần tử chứa liệu văn 2.3 Phần tử Phần tử dùng để định nghĩa kiểu tư liệu thuộc tính cho phần tử tài liệu XML Chúng ta dùng cú pháp sau: Trong đó: o element-name tên phần tử cần định nghĩa thuộc tính o attribute-name tên thuộc tính cần định nghĩa o attribute-type kiểu thuộc tính Có thể nhận tong giá trị sau: Kiểu Mô tả CDATA Cho biết thuộc tính chứa kiểu liệu ký tự (en1|en2| ) Danh sách giá trị mà thuộc tính gán ID Cho biết thuộc tính ID, tức giá trị thuộc tính khơng trùng phải bắt đầu chữ IDREF Cho biết giá trị thuộc tính phải giá trị thuộc tính ID phần tử khác IDREFS Cho biết giá trị thuộc tính phải giá trị thuộc tính có kiểu ID NMTOKEN Cho biết giá trị thuộc tính giá trị hợp với quy tắc đặt tên phần tử tài liệu XML NMTOKENS Cũng giống NMTOKEN cho phép chứa nhiều NMTOKEN ENTITY Cho biết thuộc tính nhận giá trị tên tham chiếu thực thể TRUNG TÂM CÔNG NGHỆ PHẦN MỀM THỪA THIÊN HUẾ Địa chỉ: Số Lê Lợi, Huế Điện thoại: (054).849.499 Fax: (054).849.498 Email: huesoft@dng.vnn.vn website: http://www.huesoft.com.vn Trang 13 / 59 http://www.ebook.edu.vn Căn XML ENTITIES Cho biết thuộc tính nhận giá trị tên tham chiếu thực thể cách khoản trắng NOTATION (tôi chưa hiểu kiểu này) xml: (tôi chưa hiểu kiểu này) o default-value thông tin giá mặc định trị thuộc tính Nó nhận giá tị sau: Giá trị Mô tả value value giá trị mặc định cho giá trị (ví dụ “CNTT”) #REQUIRED Chỉ định khơng có giá trị mặc định cho thuộc tính này, sử dụng phải khởi tạo #IMPLIED Chỉ định khơng có giá trị mặc định cho thuộc tính này, thuộc tính khơng cần dùng đến #FIXED value Chỉ định thuộc tính mang giá trị value Chúng ta định nghĩa phần tử có nhiều thuộc tính theo cú pháp sau: (Xem ví dụ1) Ví dụ1: Giả sử có file att.dtd với nội dung sau: File XML viết sau: Text Ví dụ2: Giả sử có file att.dtd với nội dung sau: File XML viết sau: Nếu viết sau không hợp quy tắc kiểu NMTOKEN NMTOKEN khơng chấp nhận ký tự # : Ví dụ3: Giả sử có file att.dtd với nội dung sau: File XML viết sau: Nếu viết sau khơng hợp quy tắc phần tử CCC có thuộc tính X có kiểu ID nên phải TRUNG TÂM CÔNG NGHỆ PHẦN MỀM THỪA THIÊN HUẾ Địa chỉ: Số Lê Lợi, Huế Điện thoại: (054).849.499 Fax: (054).849.498 Email: huesoft@dng.vnn.vn website: http://www.huesoft.com.vn Trang 15 / 59 http://www.ebook.edu.vn Căn XML Nếu viết sau khơng hợp quy tắc phần tử AAA CCC có thuộc tính có kiểu ID nên khơng có giá trị giống Ví dụ4 Giả sử có file att.dtd với nội dung sau: File XML viết sau hợp quy tắc: < XXX> TRUNG TÂM CÔNG NGHỆ PHẦN MỀM THỪA THIÊN HUẾ Địa chỉ: Số Lê Lợi, Huế Điện thoại: (054).849.499 Fax: (054).849.498 Email: huesoft@dng.vnn.vn website: http://www.huesoft.com.vn Trang 16 / 59 http://www.ebook.edu.vn Căn XML Nếu viết sau khơng hợp quy tắc phần tử DDD có thuộc tính ref có kiểu IDREFS, lại gán giá trị cho thuộc tính phần tử ref=”a1 b001 a2” b001 khơng phải giá trị ID Ví dụ Giả sử có file att.dtd với nội dung sau: File XML viết sau hợp quy tắc: Nếu viết sau không hợp quy tắc phần tử AAA phần tử BBB có thuộc tính true month có kiểu liệt kê, gán giá trị cho hai thuộc tính ngồi giá trị liệt kê TRUNG TÂM CÔNG NGHỆ PHẦN MỀM THỪA THIÊN HUẾ Địa chỉ: Số Lê Lợi, Huế Điện thoại: (054).849.499 Fax: (054).849.498 Email: huesoft@dng.vnn.vn website: http://www.huesoft.com.vn Trang 17 / 59 http://www.ebook.edu.vn Căn XML 2.4 Thực thể(Entity) Như chương đề cập đến thực thể thực thể định nghĩa sẵn Bây cần tìm hiểu kỹ thực thể cách định nghĩa thực thể 2.4.1 Thực thể gì? Thực thể thực chất cách định nghĩa biến lưu trữ khối liệu, thực thể triệu gọi chèn ngun khối vào vị tí triệu gọi Khối liệu thực thể thường dạng text, nhiên liệu nhị phân, miễn khối liệu không phá vỡ khuôn dạng tài liệu XML gọi Có hai loại thực thể thực thể tổng quát thực thể tham số Thực thể khai báo phần định nghĩa DTD Để tham chiếu đến thực thể tổng quát viết theo cú pháp: &name_entity; Trong name_entity tên thực thể tổng quát cần tham chiếu Lưu ý bắt đầu ký tự & kết thúc dấu chấm phẩy Để tham chiếu đến thực thể tham số viết theo cú pháp: %name_entity; Trong name_entity tên thực thể tham số cần tham chiếu Lưu ý bắt đầu ký tự % kết thúc dấu chấp phẩy 2.4.1.1 Thực thể tổng quát Có hai loại thực thể tổng quát thực thể tổng quát nội thực thể tổng quát ngoại 2.4.1.1.1 Thực thể tổng quát nội Thực thể tổng quát nội thực thể định nghĩa DTD tài liệu XML Chúng ta định nghĩa theo cú pháp sau: Ví dụ: TRUNG TÂM CÔNG NGHỆ PHẦN MỀM THỪA THIÊN HUẾ Địa chỉ: Số Lê Lợi, Huế Điện thoại: (054).849.499 Fax: (054).849.498 Email: huesoft@dng.vnn.vn website: http://www.huesoft.com.vn Trang 18 / 59 http://www.ebook.edu.vn Căn XML ]> &out-text; Đối với thực thể định nghĩa thực thể tham chiếu lồng Ví dụ: Tuy nhiên đảo ngược lại 2.4.1.1.2 Thực thể tổng quát ngoại Thực thể tổng quát ngoại thực thể định nghĩa tham chiếu từ nguồn bên Chúng ta định nghĩa định nghĩa theo cú pháp sau: Trong đó: FPI đề cập đến phần 1.2.1.2 URI/URL địa đến nguồn liệu cần gán cho entity-name Ví dụ: ]> & writer; ©right; Chú ý: Chúng ta dùng tham chiếu thực thể tổng quát thân khai báo DTD 2.4.1.2 Thực thể tham số Thực thể tham số khác với thực thể tổng quát chổ cho phép tham chiếu đến thân khai báo DTD vùng hoạt động nằm vùng khai báo DTD TRUNG TÂM CÔNG NGHỆ PHẦN MỀM THỪA THIÊN HUẾ Địa chỉ: Số Lê Lợi, Huế Điện thoại: (054).849.499 Fax: (054).849.498 Email: huesoft@dng.vnn.vn website: http://www.huesoft.com.vn Trang 19 / 59 http://www.ebook.edu.vn Căn XML Mục đích đích việc sử dụng thực thể tham số để tránh khai báo lặp lại định nghĩa DTD giúp cho dễ dàng thay đổi Tương tự thực thể tổng quát, thực thể tham số có hai loại thực thể tham số ngoại thực thể tham số nội 2.4.1.2.1 Thực thể tham số nội Thực thể tham số nội thực thể định nghĩa DTD tài liệu XML Định nghĩa thực thể tham số dùng cú pháp sau: Trong đó: % tham số bắt buộc entity-name tên thực thể tham số cần định nghĩa entity-value giá trị cần gán cho entity-name Ví dụ: Có sử dụng thực thể tham số nội Không sử dụng thực thể tham số nội > ]> %EL; &name-group; ]> &name-group; 2.4.1.2.2 Thực thể tham số ngoại Thực thể tham số ngoại thực thể định nghĩa tham chiếu từ nguồn bên Định nghĩa thực thể tham số ngoại viết theo hai cú pháp sau: Trong đó: Từ khóa SYSTEM cho biết thực thể tham số ngoại riêng Từ khóa PUBLIC cho biết thực thể tham số ngoại chung FPI (Formal Public Identifier) định danh chung hình thức (đã trình bày phần 1.2.1.2) URI/URL địa khối giữ liệu cần gán cho entity-name Ví dụ: Giả sử có file hocsinh.dtd sau: TRUNG TÂM CÔNG NGHỆ PHẦN MỀM THỪA THIÊN HUẾ Địa chỉ: Số Lê Lợi, Huế Điện thoại: (054).849.499 Fax: (054).849.498 Email: huesoft@dng.vnn.vn website: http://www.huesoft.com.vn Trang 20 / 59 http://www.ebook.edu.vn Căn XML Bây viết file tài liệu XML có tên test.xml với thực thể tham số ngoại sau: Le Van A 26-06-79 6A3 Viết có nghĩa file hocsinh.dtd nằm thư mục với file test.xml Nếu file hocsinh.dtd đặt địa http://hs.com.vn/hocsinh.dtd viết lại dịng sau: Chú ý: Trước có điều lưu ý xem ví dụ sau: Đây DTD có định nghĩa thực thể tham số, thấy thực thể tham số tham chiếu lẫn theo trình tự từ xuống tham chiếu định nghĩa element Tuy nhiên cách tham chiếu hoạt động bắt buộc phải định nghĩa độc lập từ file DTD tham chiếu vào tài liệu XML dạng DTD tham chiếu ngoại imaginary TRUNG TÂM CÔNG NGHỆ PHẦN MỀM THỪA THIÊN HUẾ Địa chỉ: Số Lê Lợi, Huế Điện thoại: (054).849.499 Fax: (054).849.498 Email: huesoft@dng.vnn.vn website: http://www.huesoft.com.vn Trang 22 / 59 ... định nghĩa kiểu tư liệu DTD Định nghĩa kiểu tư liệu có dạng, DTD tham chiếu nội DTD tham chiếu ngoại DTD tham chiếu nội DTD định nghĩa tài liệu XML DTD tham chiếu ngoại DTD định nghĩa bên tài... 2.1.1 Định nghĩa DTD tham chiếu nội Để bắt đầu định nghĩa kiểu tư liệu DTD tham chiếu nội dùng cú pháp sau: (Xem ví dụ1) Ví dụ1: Giả sử có file att .dtd với nội dung