Dạng 1 : Khai báo cấu trúc tài liệu XML đuợc lưu trữ ngay bên trong chính tài liệu XML đó
Dạng 2 : Khai báo cấu trúc tài liệu XML đuợc lưu trữ bên ngoài dưới dạng một tập tin chứa Đặc tả cấu trúc nội dungcác thẻ , Đặc tả thuộc tính các thẻ
Dạng 3 : Khai báo cấu trúc tài liệu XML đã được chuẩn hóa , có phạm vi sử dụng rộng rải. dạng này thường đuợc dùng với các ngôn ngữ XML chung có phạm vi áp dụng toàn cầu như MathML, VML, XHTML, v.v…
Cú pháp chung đặc tả cấu trúc nội dung của một thẻ như sau
Bieu_thuc_cau_truc_dac_ta_noi_dung cũng có thể bao gồm nhiều từ khóa khác mô tả cách bố trí, sắp xép các thành phần con bên trong thẻ
Với A, B là 2 thẻ con của thẻ X
A, B A, B sắp xếp theo thứ tự tuần tự A đến B A* A có thể lặp lại ít nhất 0 lần
B+ B có thể lặp lại ít nhất 1 lần
A? A có thể có hay không có
* Dạng 1
Từ khóa ANY : Thẻ có nội dung bất ký theo định chuẩn XML
Từ khóa EMPTY : Thẻ không có nội dung
Từ khóa #PCDATA : Thẻ với nội dung là chuỗi văn bản
Với DTD muốn mô tả chi tiết hơn có thể dùng thẻ ghi chú
* Dạng 2
Bieu_thuc_dac_ta_cau_truc_noi_dung cũng có thể bao gồm nhiều từ khóa khác mô tả cách bố trí, sắp xép các thành phần con bên trong thẻ
Với A, B là 2 thẻ con của thẻ X
A, B A, B sắp xếp theo thứ tự tuần tự A đến B A* A có thể lặp lại ít nhất 0 lần
B+ B có thể lặp lại ít nhất 1 lần
A? A có thể có hay không có
– Tuần tự
Dạng tuần tự : Các thẻ con chỉ có thể xuất hiện 1 lần duy nhất và phải theo đúng thứ tự xuất hiện trong biểu thức
Cú pháp :
Ý nghĩa :
The_1, The_2, …, The_k phải xuất hiện một lần duy nhất theo đúng thứ tự trên
Ý nghĩa :
The_1, The_2, …, The_k phải xuất hiện một lần duy nhất theo đúng thứ tự trên
Các thẻ bên trong có thể có tên trùng nhau
– Có thẻ sử dụng từ khóa #PCDATA trong biểu thức tuần tự ( và các loại biểu thức khác )
Thẻ X phải bao gồm 3 thành phần :
Thành phần thứ 1 là chuỗi văn bản Thành phần thức 2 là thẻ có tên A Thành phần thứ 3 là chuỗi văn bản.
– Tùy chọn
Dạng tùy chọn : Thẻ con có thể được sử dụng hay không sử dụng
Cú pháp ( dạng đơn giản) :
Thẻ đang xét có thẻ chứa 1 hay 0 lần xuất hiện của thẻ có tên là Ten_the_con
Có thể kết hợp với biểu thức tuần tự
Thành phần đầu tiên của thẻ X là thẻ A, kế đến có thẻ có hay không có thẻ B và thành phần cuối cùng phải là C
– Có thể cho phép tùy chọn một tập họp các thẻ
X có thể bao hàm bên trong các thẻ A,B,C ( theo thứ tự trên ) hay cũng có thẻ không chứa bất kỳ thẻ nào
Dạng chọn : Bắt buộc chọn một thẻ con để sử dụng trong tập họp thẻ cho trước
Cú pháp ( dạng đơn giản) :
Thẻ đang xét bắt buộc phải chứa duy nhất một trong các thẻ có tên Ten_the_1 hay ten_the_2, hay … Ten_the_k
Có thể kết hợp với biểu thức tuần tự
Thành phần đầu tiên của thẻ X là thẻ A, kế đến là thẻ B hay thẻ C và thành phần cuối cùng phải là D
– Có thể cho phép chọn một tập họp các thẻ
X có thể bao hàm bên trong cặp thẻ A,B ( theo thứ tự trên ) hay cặp thẻ C,D ( theo thứ tự trên )
– Lặp
Dạng lặp ít nhất 0 lần : Các thẻ con có thể lặp lại nhiều lần hay có thẻ không có lần nào
Cú pháp :
Ý nghĩa :
Thẻ đang xét có thẻ bao hàm bên trong nhiều thẻ có tên là Ten_the_con hay cũng có thể là thẻ rổng ( không có nội dung )
Ghi chú :
-Có thể mô tả lặp đồng thời nhiều thẻ con
Các thẻ A,B,C theo thứ tự trên có thẻ lặp lại ít nhất 0 lần trong thẻ X
– Có thể kết hợp với biểu thức tuần tự
– Có thể kết hợp với biểu thức tùy chọn
– Có thể kết hợp với biểu thức chọn
Dạng lặp ít nhất 1 lần : Các thẻ con có thể lặp lại nhiều lần và ít nhất là một lần
Cú pháp :
Ý nghĩa :
Thẻ đang xét có thẻ bao hàm bên trong ít nhất một thẻ có tên là Ten_the_con
Có thể mô tả lặp đồng thời nhiều thẻ con
Các thẻ CT_HOA_DON phải bao hàm ít nhất 3 thẻ Mat_hang,So_luong,Don_gia
– Có thể kết hợp với biểu thức tuần tự
– Có thể kết hợp với biểu thức tùy chọn
– Có thể kết hợp với biểu thức chọn
Cú pháp khai báochung :
Cú pháp khai báo các thuộc tính của thẻ tương tự như cú pháp khai báo kiểu cấu trúc trong ngôn ngữ lập rình
<!ATTLIST Ten_the Ten_thuoc_tinh_1 Kieu_1 Tham_so_1 Ten_thuoc_tinh_2 Kieu_2 Tham_so_2 ... Ten_thuoc_tinh_k Kieu_k Tham_so_k
Ý nghĩa :
Ten_the : tên thẻ cần khai báo các thuộc tính
Ten_thuoc_tinh_1,Ten_thuoc_tinh_2, …Ten_thuoc_tinh_k : Tên các thuộc tính của thẻ đang khai báo
Kieu_1,Kieu_2, …, Kieu_k : Mô tả tập họp các giá trị mà thuộc tính có thể nhận
Tham_so_1,Tham_so_2,.., Tham_so_k : Mô tả một số tính chất trên thuộc tính tương ứng
* Kiểu
Kiểu : Mô tả tập họp các giá trị của thuộc tính
Có nhiều cách khác nhau cho phép mô tả tập họp các giá trị có thể có của một thuộc tính. Phần sau chỉgiới thiệu 2 cách mô tả chính và thông dụng. Đề biết thêm chi tiết về cáccách mô tả khác xin tham khảocác tài liệu chuyên biệt về DTD Cách 1 : Dùng từ khoáCDATA Cú pháp :
<!ATTLIST Ten_the ... Ten_thuoc_tinh CDATA ...
Ý nghĩa :
Tập họp các giá trị của huộc tính với khai báo CDATA chính là tập họp các chuỗi. Đây là trường hợp sử dụng thông dụng nhất, và đây cũng là một trong các giới hạn của DTD vì không cho phép mô tả hi tiết hơn về kiểu của thuộc tính. Tương tự như nội dung văn bản của thẻ, để mô tả thêm thông tin cần ử dụng các ghi chú
Cách 2 : Dùng biểu thức liệt kê
Cú pháp :
<!ATTLIST Ten_the ... Ten_thuoc_tinh ( Gia_tri_1,Gia_tri_2,...._gia_tri_k) ...
Ý nghĩa :
Tập họp các giá trị có thể có của thuộc tính đang xét chính là tập họp các giá trị được liệt kê
Gia_tri_1,Gia_tri_2, ….,Gia_tri_k. Các giá trị này là các chuỗi ký tự
* Tham số
Tham_so : Mô tả tính chất của thuộc tính
Có nhiều cách khác nhau cho phép mô tả tập họp các giá trị có thể có của một thuộc tính. Phần sau chỉ iới thiệu 3 cách mô tả chính và thông dụng. Đề biết thêm chi tiết về các cách mô tả khác xin tham khảo ác tài liệu chuyên biệt về DTD
Cách 1 : Dùng từ khóa #REQUIRED
Cú pháp :
<!ATTLIST Ten_the ... Ten_thuoc_tinh Kieu #REQUIRED ...
Ý nghĩa :
Thuộc tính đang xét là thuộc tính bắt buộc phải có. Đây là cách sử dụng phổ biến nhất
Cách 2 : Dùng từ khóa #IMPLIED
Cú pháp :
<!ATTLIST Ten_the ... Ten_thuoc_tinh Kieu #IMPLIED ...
Ý nghĩa :
Thuộc tính đang xét là tùy chọn và không bắt buộc phải có
Cách 3 : Dùng từ khóa #FIXED
Cú pháp :
<!ATTLIST Ten_the ... Ten_thuoc_tinh Kieu #FIXED Gia_tri ...
Ý nghĩa :
Thuộc tính đang xét phải có giá trị cố định là Gia_tri. Trường hợp này ít được sử dụng