Tạo khai báo và định nghĩa kiểu tư liệu DTD

Một phần của tài liệu TÌM HIỂU HTML và CÔNG NGHỆ XML xây DỰNG TRÌNH BIÊN DỊCH HTML SANG XML (Trang 34 - 35)

2.3.1.1. Chỉ thị bắt đầu khai báo DTD:

Cách khai báo DTD phụ thuộc vào khái niệm standalone trong chỉ thị xml đầu tiên. Khái niệm này cho ta biết định nghĩa kiểu tư liệu DTD trong tài liệu XML được định nghĩa ởđâu (nằm trong tài liệu XML hay nằm bên ngòai). Cụ thể:

Giá trị Mô tả

Yes DTD được khai báo bên trong tài liệu XML.

No DTD được khai báo bên ngòai tài liệu XML với tên mở rộng là “.dtd”

Có nhiều mẫu khai báo, nhưng để bắt đầu ta dùng thẻ <!DOCTYPE>

Khai báo Mô tả

<!DOCTYPE rootname [DTD] > Đây là tham chiếu nội.

<!DOCTYPE rootname SYSTEM URL> Đây là tham chiếu ngoại riêng tư, URL

được dùng để tham chiếu đến các DTD ngoại.

<!DOCTYPE rootname SYSTEM URL

[DTD]> Tham chingọai riêng tếu nư. ội kết hợp với tham chiếu <!DOCTYPE rootname PUBLIC FPI

URL>

Tham chiếu ngoại dùng chung, URL được dùng để tham chiếu đến các DTD ngoại.

<!DOCTYPE rootname PUBLIC FPI URL

[DTD] > Tham chingọai dùng chung. ếu nội kết hợp với tham chiếu

Chú ý: nếu 1 phần tử được định nghĩa trong tài liệu cục bộ và trong file tham chiếu ngoại thì về mặt lý thuyết định nghĩa nội bộ sẽđược ưu tiên trước. Nhưng thực tế các trình kiểm tra đều báo lỗi khi phát hiện có 2 định nghĩa trùng nhau.

2.3.1.2. Khai báo Element:

Sau khi khai báo phần bắt đầu của kiểu tư liệu, ta định nghĩa các kiểu tư liệu cho phần tử thẻ bằng khai báo <!ELEMENT>. Cú pháp:

<!ELEMENT NAME CONTENT_MODEL>

Name Tên của phần tử muốn định nghĩa. Content_Model Dạng nội dung trong phần tử Name. Nó có thể là EMPTY, ANY, các phần tử con hoặc dữ liệu văn bản thô…

Trong Content_Model ta có thể định nghĩa nội dung mà nó chứa có thể bắt buộc xuất hiện hoặc không, hoặc có thể xuất hiện nhiều lần bằng cách dùng ký tự *, +, ?, |

a* Không có hoặc có nhiều phần tử a giống nhau a+ Có ít nhất 1 phần tử a.

a? Có 1 phần tử a hoặc không có phần tử a nào hết. a,b Phần tử b sẽ xuất hiện ngay sau phần tử a. a|b Lựa chọn 1 trong hai phần tử a hoặc b Các khái niệm trong Content_Model:

- ANY: cho biết phần tử khai báo có thể chứa bất kỳ kiểu nội dung nào và sẽ

không bị kiểm tra bởi trình phân tích.

- Danh sách các phần tử con: cho biết phần tử mà bạn khai báo có chứa những phần tử con khác. Ví dụ: <!ELEMENT DOCUMENT (CUSTOMER)*>

- #PCDATA: chỉ biễu diễn dữ liệu thô ( có thể là số nguyên hoặc số chấm động nhưng phải ở dạng text).

- Làm việc với nhiều phần tử con: ta sử dụng ký tựđại diện cho phép làm việc và khao báo sử dụng nhiều phần tử con.

- DTD sequences: trong 1 phần tửđể liệt kê các phần tử con xuất hiện tuần tự, ta sử dụng kí tự “,”. Và trong phần khai báo, khỏang trắng không quan trọng.

- Nhóm 1 tập các định nghĩa DTD con bằng “ () ”. (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu TÌM HIỂU HTML và CÔNG NGHỆ XML xây DỰNG TRÌNH BIÊN DỊCH HTML SANG XML (Trang 34 - 35)