41
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/14/22

Document Type Definition - xml va dtd (element)

Embed Size (px)

Citation preview

Page 1: Document Type Definition - xml va dtd (element)

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

Page 2: Document Type Definition - xml va dtd (element)

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

Page 3: Document Type Definition - xml va dtd (element)

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

Page 4: Document Type Definition - xml va dtd (element)

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

Page 5: Document Type Definition - xml va dtd (element)

Nội dung

5

Định Nghĩa

Document Type Definition05/03/23

Page 6: Document Type Definition - xml va dtd (element)

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

Page 7: Document Type Definition - xml va dtd (element)

Đị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

Page 8: Document Type Definition - xml va dtd (element)

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

Page 9: Document Type Definition - xml va dtd (element)

Nội dung

9

Tạo khai báo

Document Type Definition05/03/23

Page 10: Document Type Definition - xml va dtd (element)

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

Page 11: Document Type Definition - xml va dtd (element)

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

Page 12: Document Type Definition - xml va dtd (element)

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

Page 13: Document Type Definition - xml va dtd (element)

Đị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

Page 14: Document Type Definition - xml va dtd (element)

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

Page 15: Document Type Definition - xml va dtd (element)

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)

Page 16: Document Type Definition - xml va dtd (element)

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

Page 17: Document Type Definition - xml va dtd (element)

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)

Page 18: Document Type Definition - xml va dtd (element)

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.)

Page 19: Document Type Definition - xml va dtd (element)

Đị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

Page 20: Document Type Definition - xml va dtd (element)

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)

Page 21: Document Type Definition - xml va dtd (element)

<!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)

Page 22: Document Type Definition - xml va dtd (element)

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)

Page 23: Document Type Definition - xml va dtd (element)

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)

Page 24: Document Type Definition - xml va dtd (element)

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.)

Page 25: Document Type Definition - xml va dtd (element)

Nội dung

25

Sử dụng DTD tham chiếu ngoại

Document Type Definition05/03/23

Page 26: Document Type Definition - xml va dtd (element)

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

Page 27: Document Type Definition - xml va dtd (element)

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

Page 28: Document Type Definition - xml va dtd (element)

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

Page 29: Document Type Definition - xml va dtd (element)

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)

Page 30: Document Type Definition - xml va dtd (element)

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)

Page 31: Document Type Definition - xml va dtd (element)

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.)

Page 32: Document Type Definition - xml va dtd (element)

Nội dung

32

Sử dụng DTD tham chiếu nội và tham chiếu ngoại

Document Type Definition05/03/23

Page 33: Document Type Definition - xml va dtd (element)

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)

Page 34: Document Type Definition - xml va dtd (element)

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)

Page 35: Document Type Definition - xml va dtd (element)

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)

Page 36: Document Type Definition - xml va dtd (element)

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)

Page 37: Document Type Definition - xml va dtd (element)

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.)

Page 38: Document Type Definition - xml va dtd (element)

Nội dung

38

Dùng DTD kiểm tra tính hợp lệ XML

Document Type Definition05/03/23

Page 39: Document Type Definition - xml va dtd (element)

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

Page 40: Document Type Definition - xml va dtd (element)

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

Page 41: Document Type Definition - xml va dtd (element)

HẾT BÀI

41Document Type Definition05/03/23