Khanh Hoang - Kenn
Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.
Trong bài này chúng ta sẽ làm quen khái niệm DTDs như khai báo DOCTYPE, khai báo Element và cách tạo DTDs trong file XML, validation XML bằng DTDs…
>> [Loạt bài viết] Bài 2: 10 điểm ghi nhớ khi làm việc với XML
Loại tài liệu Definition (DTD) là một tập hợp các tờ khai đánh dấu để xác định một loại tài liệu cho các ngôn ngữ đánh dấu như: SGML, XML, HTML. DTD là một tiền thân của lược đồ XML Schema và có chức năng tương tự, mặc dù khả năng khác nhau.
DTD sử dụng một cú pháp ngắn gọn khai báo chính xác những yếu tố và tài liệu tham khảo có thể xuất hiện ở đâu trong tài liệu XML. DTD cũng khai báo các thực thể (Entity) có thể được sử dụng trong tài liệu XML.
- Với một DTD, mỗi tập tin XML của bạn có thể thực hiện một mô tả của định dạng riêng của mình.
- Với một DTD, các nhóm độc lập của người dân có thể đồng ý sử dụng một DTD tiêu chuẩn cho việc trao đổi dữ liệu.
- Ứng dụng của bạn có thể sử dụng một tiêu chuẩn DTD để xác minh rằng các dữ liệu bạn nhận được từ bên ngoài là hợp lệ.
- Bạn cũng có thể sử dụng một DTD để xác minh dữ liệu của riêng bạn.
- Khai báo Element: khai báo Element gồm có tên của Element và nội dung của Element
- Khai báo Attribute: khai báo Attribute thuộc Element nào, tên Attribute, kiểu dữ liệu của Attribute và giá trị mặc định của Attribute
- Khai báo Entity: khai báo tên của Entity, giá trị của Entity hay vị trí của giá trị Entity
- Khai báo tất cả các element có trong XML
- Khai báo các element con cho từng element nếu có
- Xác định thứ tự xuất hiện của các element
- Khai báo tất cả thuộc tính của từng element nếu có
- Khai báo kiểu dữ liệu và giá trị mặc định cho thuộc tính
- Khai báo các Entity nếu có
- DTDs có 2 dạng tùy thuộc vào vị trí đặt DTDs: bên trong file XML hay ở file .dtd bên ngoài. Hai dạng có cách khai báo DTD khác nhau như hình sau:
- Hình bên trái là DTD khai báo trong file XML. Cú pháp khai báo:
<!DOCTYPE tên thẻ root [các thành phần trong thẻ root]>
- Hình bên phải là DTD khai báo ngoài file XML, chỉ có nội dung bên trong thẻ root
- Element rỗng:
<!ELEMENT element-name EMPTY>
- Element chứa text dạng parsed character
<!ELEMENT element-name (#PCDATA)>
- Element chứa text dạng bất kỳ:
<!ELEMENT element-name ANY>
- Element với các thẻ con, tuần tự:
<!ELEMENT element-name (child1,child2,...)>
- Khai báo số lần xuất hiện của các thẻ con:
- Chỉ có tên thẻ con: xuất hiện duy nhất 1 lần
<!ATTLIST element-name attribute-name attribute-type default-value>
Default value có thể là 1 trong các giá trị sau:
- value: giá trị mặc định. Ví dụ:
DTD:
<!ELEMENT square EMPTY> <!ATTLIST square width CDATA "0"> (“0” là giá trị mặc định)
Valid XML:
<square width="100" /> = #REQUIRED: bắt buộc phải có giá trị. Ví dụ: DTD:<!ATTLIST person number CDATA #REQUIRED> Valid XML:<person number="5677" /> Invalid XML:<person />
- #IMPLIED: có thể có hoặc không attribute này. Ví dụ:
DTD:<!ATTLIST contact fax CDATA #IMPLIED> Valid XML:<contact fax="555-667788" /> Valid XML:<contact />
- #FIXED: giá trị attribute là hằng số, ví dụ:
DTD:<!ATTLIST sender company CDATA #FIXED "Microsoft"> Valid XML:<sender company="Microsoft" /> Invalid XML:<sender company="W3Schools" />
- Khai báo tập giá trị cho attribute:
DTD:<!ATTLIST payment type (check|cash) "cash"> XML example:<payment type="check" />hay<payment type="cash" />
Trong ví dụ này chúng ta xây dựng 1 DTD cho file XML lưu trữ thông tin tất cả sách trong 1 thư viện có các yêu cầu sau:
- Thẻ root: thuVien
- Trong thẻ root có ít nhất 1 thẻ <sach>
- Trong thẻ <sach> là các thẻ con theo thứ tự sau: id, ten, tacGia, nhaXuatBan, gia. Trong đó, id, ten, tacGia là những thẻ bắt buộc phải có, nhaXuatBan, gia xuất hiện tối đa 1 lần
- Trong thẻ <sach> có 2 thuộc tính là theLoai và ngonNgu, trong đó giá trị của thuộc tính thể loại là một trong các giá trị sau: Khoahọc, GiảiTrí, TinHọc, thuộc tính ngonNgu có thể có hoặc không.
- Khai báo 2 Entity xuất hiện thường xuyên trong XML cho giá trị “Nhà Xuất Bản Trẻ” và “Nhà Xuất Bản Giáo dục”
- Để kiểm tra tính đúng đắng của dữ liệu trong XML bằng DTD chúng ta có thể R.C vào XML chọn Validation XML, nếu dữ liệu là hợp lệ chúng ta sẽ thấy thông báo:
- Ngược lại sẽ có thông báo:
Tham khảo từ nguồn: Aptech Course i7: XML By Example