Document Type Definition 1
Document Type Definition
CBGD: Nguyễn Trần Thi Văn
NGÔN NGỮ ĐÁNH DẤU MỞ RỘNG
CHƯƠNG 05
05/03/23
Document Type Definition 2
KHAI BÁO PHẦN TỬCBGD: Nguyễn Trần Thi
Văn
NGÔN NGỮ ĐÁNH DẤU MỞ RỘNG
BÀI 1
05/03/23
Nội dungMục tiêu của bài họcGiới thiệu, định nghĩaKhai báo DTDSử dụng DTD tham chiếu ngoạiKết hợp cả hai loại DTDDTD và tính hợp lệ (validity) của tài
liệu
3Document Type Definition05/03/23
4
Mục tiêu Trình bày được công dụng chính của
DTD Khai báo DTD sử dụng tham chiếu nội
và tham chiếu ngoại. Khai báo được cấu trúc nội dung của
từng phần tử (element) trong tài liệu XML
Kiểm tra được tính hợp lệ của tài liệu XML (về mặt cấu trúc, nội dung các phần tử)
Document Type Definition05/03/23
Nội dung
5
Định Nghĩa
Document Type Definition05/03/23
Ví dụ mở đầu<?xml version=“1.0” edcoding =“UTF-8” standalone=“yes”?><document> <employee> <name> <firstname> Nguyen</firstname> <lastname> Tuan</lastname> </name> <gender>Male</gender> <age>20</age> </employee></document>
6
<?xml version=“1.0” edcoding =“UTF-8” standalone=“yes”?><employees> <employee> <name> <lastname> Tuan</lastname> <firstname> Nguyen</firstname> </name> <age>20</age> <gender>Male</gender> </employee></employees>
Document Type Definition05/03/23
Định nghĩa
DTD (Document Type Definition) được dùng để định nghĩa cấu trúc của một tài liệu XML thông qua việc định nghĩa và khai báo các thành phần, thuộc tính, thực thể.
Ngoài ra DTD còn được dùng để kiểm tra tính hợp lệ (validity) của tài liệu XML bởi các trình phân tích XML.
7Document Type Definition05/03/23
Công dụng
Giúp tác giả (người tạo ra tài liệu XML) quy định rõ cấu trúc cũng như những ràng buộc bên trong tài liệu XML của mình.
Giúp người dùng (những người khai thác tài liệu XML) nắm được cấu trúc của tài liệu, từ đó có thể xử lý, rút trích, định dạng tài liệu cho phù hợp.
8Document Type Definition05/03/23
Nội dung
9
Tạo khai báo
Document Type Definition05/03/23
Vị trí khai báo Phần khai báo DTD được đặt sau các Phần khai báo DTD được đặt sau các
chỉ thị xử lý (Processing Instructions) chỉ thị xử lý (Processing Instructions) và trước nút gốc của tài liệu.và trước nút gốc của tài liệu.
Khai báo này có thể là khai báo Khai báo này có thể là khai báo DTD DTD tham chiếu nộitham chiếu nội hoặc hoặc DTD tham chiếu DTD tham chiếu ngoạingoại, hoặc kết hợp cả hai., hoặc kết hợp cả hai.
10Document Type Definition05/03/23
Cú pháp khai báo Một khai báo bắt đầu với Một khai báo bắt đầu với <!DOCTYPE<!DOCTYPE
và kết thúc bằng và kết thúc bằng ]>]>
– <!DOCTYPE rootname [DTD]>– <!DOCTYPE rootname SYSTEM URI>– <!DOCTYPE rootname SYSTEM URI [DTD]>– <!DOCTYPE rootname PUBLIC indentifier URI>– <!DOCTYPE rootname PUBLIC indentifier URI
[DTD]>
11Document Type Definition05/03/23
Trong đó: rootname: Tên phần tử gốc URI: Định danh của DTD bên ngoài tài
liệu XML hiện thời trên không gian mạng internet.
identifier: quy định định danh của tài liệu trên internet (sẽ trình bày sau).
12
Cú pháp khai báo (2.)
Document Type Definition05/03/23
Định nghĩa kiểu dữ liệu có 2 dạng, đó là DTD tham chiếu nội và DTD tham chiếu ngoại.– DTD tham chiếu nội là DTD được định
nghĩa ngay trong tài liệu XML– DTD tham chiếu ngoại là DTD được định
nghĩa bên ngoài tài liệu XML
13Document Type Definition05/03/23
Phân loại DTD
Khai báo phần tử (1)
<!ELEMENT name content_model><!ELEMENT name content_model>
– name: là tên của phần tử mà ta muốn định nghĩa
– content_model: là kiểu của phần tử này, có thể là EMPTY, ANY, #PCDATA, các phần tử con hay trộn lẫn nhiều thành phần
14Document Type Definition05/03/23
Ví dụVí dụ<?xml version=”1.0” standalone=”yes”?><!DOCTYPE GREETING [
<!ELEMENT GREETING (#PCDATA)>]><GREETING>
Hello XML!</GREETING>
15Document Type Definition05/03/23
Khai báo phần tử (2)
Content model (1) ANY: nghĩa là nó có thể chứa bất kỳ nội
dung nào do bạn định nghĩa ,kể cả các phần tử khác.<!ELEMENT <!ELEMENT element_nameelement_name ANY> ANY>
#PCDATA: là dữ liệu văn bản thô, không thuộc phần định dạng. chỉ đơn thuần biểu diễn dữ liệu thô, dữ liệu thô chỉ cho biết tính chất văn bản text của nó.<!ELEMENT <!ELEMENT element_nameelement_name (#PCDATA)> (#PCDATA)>
16Document Type Definition05/03/23
EMPTY: Các phần tử không có nội dung gì được gọi là rỗng.
<!ELEMENT <!ELEMENT element_nameelement_name EMPTY> EMPTY>
17Document Type Definition05/03/23
Content model (2)
Ví dụVí dụ<?xml version=”1.0” standalone=”yes”?><!DOCTYPE SEASON [<!ELEMENT YEAR (#PCDATA)><!ELEMENT SEASON ANY><!ELEMENT DATE EMPTY>]><SEASON>
<YEAR>1998</YEAR>Major League Baseball
</SEASON>
18Document Type Definition05/03/23
Content model (3.)
Định nghĩa phần tử con (1) Định nghĩa một phần tử có chứa một
phần tử con<!ELEMENT element_name (child_element)><!ELEMENT element_name (child_element)>
Ví dụ: <!ELEMENT note (to)> Định nghĩa một phần tử có chứa nhiều
hơn một phần tử con–Dùng dấu phẩy
•Ví dụ: <!ELEMENT note (to, from, heading, body)>
–Dùng kí tự đại diện
19Document Type Definition05/03/23
Sử dụng các các kí tự đại diện để làm việc và khai báo.
Ví dụ:<!ELEMENT ROOT (LIMB_A*)>
Phần tử ROOT không có hoặc có nhiều phần tử LIMB_A
Kí hiệu Mô tảa* Không có hoặc có nhiều phần tử con giống
nhaua+ Có một hoặc nhiều phần tử con giống nhaua? Một phần tử a hoặc không có phần tử nàoa,b Phần tử a tiếp đến là ba|b Phần tử a hoặc phần tử b nhưng không được
cả hai
20Document Type Definition05/03/23
Định nghĩa phần tử con (2)
<!ELEMENT ROOT (LIMB_A+)>• Phần tử ROOT có một hoặc nhiều phần tử con
LIMB_A<!ELEMENT ROOT (LIMB_A?)>
• Phần tử ROOT không có hoặc có một phần tử con LIMB_A
<!ELEMENT ROOT (LIMB_A, LIMB_B)>• Phần tử ROOT có 2 phần tử con, đầu tiên là
phần tử LIMB_A tiếp đến là LIMB_B<!ELEMENT ROOT (LIMB_A | LIMB_B)>
• Phần tử ROOT có một phần tử con hoặc là LIMB_A hoặc là LIMB_B
21Document Type Definition05/03/23
Định nghĩa phần tử con (3)
Dấu ngoặc đơn: Các phần tử được kết hợp bởi dấu
ngoặc đơn như là một phần tử duy nhất. Tập các phần tử trong dấu ngoặc sẽ chịu ảnh hưởng của những kí tự đại diện *, + hoặc ?
Ví dụ:<!ELEMENT DOCUMENT (TITLE, (PARAGRAP| IMAGE*),
SIGNATURE?)>
22Document Type Definition05/03/23
Định nghĩa phần tử con (4)
Nội dung hỗn hợp (mixed content): Là cách định nghĩa phần tử vừa có
khả năng chứa dữ liệu thuần text (tương tự #PCDATA) vừa chứa dữ liệu phần định dạng (markup).
Ví dụ:<!ELEMENT TEAM (#PCDATA | TEAM_CITY | TEAM_NAME | PLAYER)*>
23Document Type Definition05/03/23
Định nghĩa phần tử con (5)
Chú thích: Có thể dùng cách ghi chú XML chuẩn
trong DTD, chú thích không được nằm trong khai báo.<!-- nội dung --><!-- nội dung -->
Ví dụ: <!-- A four digit year like 1998, 1999, or 2000 --><!ELEMENT YEAR (#PCDATA)>
24Document Type Definition05/03/23
Định nghĩa phần tử con (6.)
Nội dung
25
Sử dụng DTD tham chiếu ngoại
Document Type Definition05/03/23
Sử dụng DTD tham chiếu ngoại
Giúp ứng dụng XML dễ dàng chia sẻ và dùng chung với các ứng dụng khác
Được lưu trong một tập tin riêng có phần mở rộng là .dtd
Có hai cách chỉ định một phần tử DTD tham chiếu ngoại– Tham chiếu ngoại riêng (private DTDs)– Tham chiếu ngoại chung (public DTDs)
26Document Type Definition05/03/23
Tham chiếu ngoại riêng: – Sử dụng tập tin DTD do ta tự định nghĩa riêng
biệt, sử dụng cho mục đích cá nhân.– Dùng từ khóa SYSTEM trong chỉ thị khai báo <!
DOCTYPE> Ví dụ:
<?xml vesion=“1.0” endoding=“UTF-8” standalone=“no”standalone=“no”?>
<!DOCTYPE document SYSTEM “vidu4.dtd”>
27Document Type Definition05/03/23
Tham chiếu ngoại riêng
Tham chiếu ngoại bằng địa chỉ URL rất tiện lợi. Ta có thể sử dụng các định nghĩa DTD của một tổ chức hay cá nhân nào đó từ bất kỳ nơi đâu trên thế giới mà không phải xây dựng lại từ đầu.
Ví dụ :<?xml version=“1.0” standalone=“no”?><!DOCTYPE DOCUMENT SYSTEM “http://www.minhkhai.com.vn/product/order.dtd”>
28Document Type Definition05/03/23
Sử dụng DTD với URLs
Dùng từ khóa PUBLIC trong chỉ thị khai báo <!DOCTYPE>
Mục đích là để khai báo 1 nội dung DTD dùng chung (chia sẻ cho nhiều người dùng khác nhau)
Để sử dụng từ khóa PUBLIC cần phải tạo một định danh chung hình thức (FPI – Formal Public Identifier) là một chuỗi văn bản nằm trong dấu nháy có 4 trường phân cách nhau bằng dấu //
29Document Type Definition05/03/23
Tham chiếu ngoại chung (1)
Trường thứ nhất: chỉ ra rằng DTD dùng cho chuẩn chính thức. DTD do bạn tự định nghĩa thì trường này là -, nếu DTD có phần thân không là chuẩn chính thức thì trường này là +, với phần thân có chuẩn chính thức thì trường này tham khảo đến chuẩn của chính nó.
Trường thứ 2 lưu tên hoặc nhóm cho cá nhân chịu trách nhiệm cho DTD
30Document Type Definition05/03/23
Tham chiếu ngoại chung (2)
Trường thứ 3 chỉ ra kiểu tài liệu DTD Trường thứ 4 chỉ ra ngôn ngữ dùng viết
DTD Cú pháp:
<!DOCTYPE rootname PUBLIC FPI URLs> Ví dụ:
<?xml version=“1.0” encoding=“UTF-8” standalone=“no”?><?xml version=“1.0” encoding=“UTF-8” standalone=“no”?><!DOCTYPE document PUBLIC “<!DOCTYPE document PUBLIC “-//DTDS4ALL//Custom DTD -//DTDS4ALL//Custom DTD Version 1.0//ENVersion 1.0//EN” http://www.viduxml.com/dtds/vidu.dtd>” http://www.viduxml.com/dtds/vidu.dtd>
31Document Type Definition05/03/23
Tham chiếu ngoại chung (3.)
Nội dung
32
Sử dụng DTD tham chiếu nội và tham chiếu ngoại
Document Type Definition05/03/23
Khai báo:<!DOCTYPE rootname SYSTEM <!DOCTYPE rootname SYSTEM URLURL [DTD]> [DTD]> <!DOCTYPE rootname PUBLIC FPI <!DOCTYPE rootname PUBLIC FPI URLURL [DTD]> [DTD]>
URL được sử dụng để tham chiếu đến các DTD tham chiếu ngoại
[DTD] được sử dụng cho các định nghĩa kiểu DTD tham chiếu nội
33Document Type Definition05/03/23
Kết hợp 2 loại DTD (1)
Ví dụ:<?xml version=“1.0” standalone=“no”?><!DOCTYPE DOCUMENT SYSTEM “order.dtd” [
<!ELEMENT PRODUCT (#PCDATA)>]>
34Document Type Definition05/03/23
Kết hợp 2 loại DTD (2)
Nếu một phần tử được định nghĩa ở cả DTD tham chiếu nội và tham chiếu ngoại:– Về mặt lý thuyết, nếu một phần tử hay thuộc tính
được định nghĩa ở hai nơi thì định nghĩa nội (cục bộ) sẽ được ưu tiên hơn các định nghĩa DTD ngoại.
– Thực tế, hầu hết các trình kiểm tra đều:• Đưa ra thông báo lỗi và dừng quá trình phân tích
khi phát hiện có hai DTD nội và ngoại trùng nhau cùng định nghĩa một phần tử (thuộc tính) khác nhau.
• Xem như là hợp lệ nếu DTD nội và ngoại trùng nhau cùng định nghĩa một phần tử (thuộc tính ) giống nhau.
35Document Type Definition05/03/23
Kết hợp 2 loại DTD (3)
Ví dụ:<?xml version ="1.0" standalone="no"?><!DOCTYPE DOCUMENT SYSTEM "order.dtd" [
<!ELEMENT PRODUCT (#PCDATA)>]>
Trong file order.dtd cũng khai báo:<!ELEMENT PRODUCT (#PCDATA)> thì được trình phân tích xem là hợp lệ.
36Document Type Definition05/03/23
Kết hợp 2 loại DTD (4)
Nhưng nếu khai báo:<!ELEMENT PRODUCT (PRICE)> (PRICE là một phần tử) thì trình phân tích sẽ đưa ra thông báo lỗi.
Lưu ý: với các trình duyệt thì gặp trường hợp như trên sẽ không đưa ra thông báo gì. Vì trình duyệt chỉ kiểm tra được tính hợp khuôn dạng (well-formed) chứ không kiểm tra được tính hợp lệ (valid) của tài liệu XML.
37Document Type Definition05/03/23
Kết hợp 2 loại DTD (5.)
Nội dung
38
Dùng DTD kiểm tra tính hợp lệ XML
Document Type Definition05/03/23
Sử dụng một số địa chỉ cung cấp dịch vụ kiểm tra trực tuyến dùng DTD.– Ví dụ như bộ kiểm tra XML của Scholarly
Technology Group:• http://www.stg.brown.edu/service/xmlvalid
Sử dụng các trình soạn thảo XML như XML writer, Altova XMLSpy...
39Document Type Definition05/03/23
DTD và tính hợp lệ của tài liệu
Tóm tắt bài học DTDs (Document Type Definitions)
được sử dụng để quy định cấu trúc của tài liệu XML.
Có 2 cách khai báo DTD: nội và ngoại. Sử dụng thẻ <!ELEMENT> để khai báo
nội dung từng phần tử trong tài liệu. Mỗi thẻ có thể chứa nội dung bất kỳ,
chỉ chứa dữ liệu text, chứa các thẻ con hoặc chấp nhận cả nội dung hỗn hợp.
40Document Type Definition05/03/23
HẾT BÀI
41Document Type Definition05/03/23