Định nghĩa kiểu tài liệu

Một phần của tài liệu Ứng dụng công nghệ hướng đối tượng và XML để phát triển hệ thống trên nền WEB (Trang 40)

Trong phần này ta tập trung tìm hiểu DTD, cấu trúc DTD và cách tạo ra DTD cho tài liệu. Nh− đ đề cập tr−ớc DTD hoạt động nh− tập các qui luật, cho phép ta tạo ra các tài liệu mới có cùng kiểu với một số đặc điểm của tài liệu cơ sở. Ví dụ nh− DTD đ−ợc tạo ra để sử dụng trong hiệp hội y học. Tài liệu tạo ra với DTD này có thể chứa một số mục nh− tên bệnh nhân, các loại thuốc, lịch sử của y học, … Các viện y học có thể dễ dàng đọc các thông tin này nếu nh− họ có sử dụng hệ thống tài liệu dựa

Luận văn tốt nghiệp thạc sỹ Luận văn tốt nghiệp thạc sỹ Luận văn tốt nghiệp thạc sỹ

Luận văn tốt nghiệp thạc sỹ Nguyễn Thanh Thảo Nguyễn Thanh Thảo Nguyễn Thanh Thảo Nguyễn Thanh Thảo

ứ ứứ

ứng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Web

33

trên XML. Hệ thống này không chỉ cung cấp định dạng tài liệu chuẩn cho các tổ chức mà nó sẽ cung cấp định dạng tài liệu đ−ợc sử dụng trong các khoa, ban của các tổ chức riêng lẻ. Cùng một loại định dạng có thể đ−ợc sử dụng bởi bác sỹ, y tá, quản trị nhân sự, … Một DTD khác phát triển một cách ngắn gọn, DTD đó có thể thay đổi để phù hợp với mục đích của các ứng dụng riêng.

a. Cấu trúc DTD

DTD bao gồm hai loại: DTD ngoài và DTD trong.

– DTD ngoài là DTD tồn tại bên ngoài nội dung của tài liệu, loại này th−ờng sử dụng khi có nhiều tài liệu liên quan muốn dùng chung DTD.

– DTD trong là DTD kết hợp bên trong tài liệu XML.

Một tài liệu có thể chứa một hoặc nhiều kiểu DTD. Nếu tài liệu chứa cả hai loại thì trình biên dịch sẽ biên dịch các DTD trong tr−ớc, sau đó mới biên dịch các DTD ngoài.

Nếu ta muốn bổ sung DTD trong vào tài liệu, đơn giản ta viết nó trực tiếp trong phần định nghĩa của tài liệu. Với tài liệu DTD ngoài để bổ sung vào tài liệu ta phải thực hiện thông qua tham chiếu DTD, tại đó báo cho trình biên dịch biết sẽ tìm các DTD ngoài thông qua tên file chứa các DTD. Tham chiếu DTD cũng chứa một số thông tin về ng−ời tạo ra DTD, mục đích của DTD và ngôn ngữ sử dụng.

Ví dụ 1. Sử dụng DTD trong <?xml version = “1.0”> <?DOCTYPE EMAIL [

<!ELEMENT EMAIL (to, from, cc, subject, body)> <!ELEMENT to (#PCDATA)>

<!ELEMENT from (#PCDATA)> <!ELEMENT cc (#PCDATA)> <!ELEMENT subject (#PCDATA)>

<!ELEMENT body (#PCDATA)> ]> <EMAIL>

<to> Giang </to>

<from> Thanh Thao </from> <cc> Minh </cc>

<body>Document Type Difinition</body> </EMAIL>

Trong ví dụ trên thành phần EMAIL đ−ợc định nghĩa bên trong tài liệu XML. Ví dụ 2. Sử dụng DTD ngoài.

– Định nghĩa các thành phần ở tệp tệp email_t.dtd riêng: <!ELEMENT EMAIL (to, from, cc, subject, body)> <!ELEMENT to (#PCDATA)>

<!ELEMENT from (#PCDATA)> <!ELEMENT cc (#PCDATA)> <!ELEMENT subject (#PCDATA)> <!ELEMENT body (#PCDATA)>

– Sử dụng các thành đ định nghĩa trong tệp email_t.dtd vào trong tài liệu: <?xml version="1.0" standalone=”no”?>

<!DOCTYPE EMAIL SYSTEM “..\..\email_t.dtd”> <to> Giang </to>

<from> Thanh Thao </from> <cc> Minh </cc>

<subject> XML </subject>

<body> Document type Difinition </body>

– Nếu thành phần DTD ngoài là công cộng thì thay từ khoá SYSTEM (cá nhân) bằng PUBLIC

b. Khai báo thành phần

Mỗi thành phần khai báo bao gồm tên thành phần và kiểu nội dung của thành phần. Kiểu nội dung có thể là một trong bốn kiểu sau:

• Tập hợp các thành phần: gọi là mô hình nội dung • Kiểu EMPTY

• Kiểu ANY

• Kiểu có nội dung phức hợp

Cú pháp để khai báo thành phần: <!ELEMENT tênthànhphần kiểu> Trong đó: <!ELEMENT> là thẻ khai báo thành phần

tênthànhphần là tên của thành phần đ−ợc khai báo Kiểu là kiểu của thành phần đ−ợc khai báo

Luận văn tốt nghiệp thạc sỹ Luận văn tốt nghiệp thạc sỹ Luận văn tốt nghiệp thạc sỹ

Luận văn tốt nghiệp thạc sỹ Nguyễn Thanh Thảo Nguyễn Thanh Thảo Nguyễn Thanh Thảo Nguyễn Thanh Thảo

ứ ứứ

ứng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Web

35 b1. Mô hình nội dung

Một thành phần đ−ợc khai báo có các thành phần con đ−ợc gọi là mô hình nội dung. Các thành phần con của mô hình nội dung đ−ợc đặt trong cặp dấu “(“ và “)”. Các thành phần con khai báo trong mô hình nội dung khai báo phải xuất hiện đúng nh− trong mô hình đ khai báo.

b2. Khai báo thành phần rỗng

Một thành phần có thể không chứa nội dung gì, gọi là thành phần rỗng (EMPTY). Để khai báo một thành phần rỗng, ta sử dụng từ khoá EMPTY trong khai báo thành phần.

b3. Khai báo thành phần ANY

Thành phần đ−ợc khai báo là ANY có thể chứa bất cứ nội dung gì. Ta sử dụng từ khoá ANY để khai báo một thành phần có nội dung bất kỳ.

b4. Khai báo thành phần có nội dung phức hợp

Dữ liệu của một thành phần có thể là kiểu này hoặc kiểu kia. Nếu một thành phần lúc chứa dữ liệu kiểu này lúc chứa dữ liệu kiểu khác thì trong khai báo thành phần giữa các kiểu nội dung phải ngăn cách nh− bởi dấu “|”.

c. Qui định số l−ợng đơn vị

– ? cho biết đơn vị xuất hiện nhiều nhất là một lần trong thành phần.

– + cho biết đơn vị phải xuất hiện ít nhất một lần và bao nhiều lần cũng đ−ợc trong thành phần.

– * cho biết đơn vị có thể xuất hiện bao nhiêu lần cũng đ−ợc hoặc không xuất hiện trong thành phần.

Ví dụ: <!ELEMENT EMAIL (to+, from+, cc*, subject?, body)> <!ELEMENT COUNTRY ANY>

<!ELEMENT EXAMPLE (#PCDATA|x|y|z)*> d. Thuộc tính

Để mô tả cấu trúc một thành phần hoặc kiểu nội dung của thành phần đó ta có thể sử dụng thuộc tính để bổ sung thông tin về một thành phần hoặc nội dung của thành phần đó.

Để khai báo thuộc tính ta sử dụng cú pháp sau:

<!ATTLIST tênthànhphần tênthuộctính kiểu default> Trong đó: + <!ATTLLIST> là thẻ để khai báo thuộc tính

+ tênthànhphần là thành phần sẽ đ−ợc gán thuộc tính + tênthuộctính là tên thuộc tính gán cho thành phần + kiểu là kiểu của thuộc tính

+ default là giá trị mặc định của thuộc tính nếu không định rõ Một số kiểu thuộc tính trong XML:

+ CDATA: thuộc tính chỉ chứa nội dung là ký tự

+ ID: giá trị của thuộc tính là duy nhất trong tài liệu XML

+ IDREF: qui định thuộc tính chứa giá trị khớp với giá trị ID của thuộc tính khác

+ IDREFS: qui định cho thuộc tính chứa nhiều giá trị ID phân cách nhau bằng dấu cách.

Giá trị mặc định thuộc tính:

+ Default là giá trị mặc định thuộc tính nếu không định rõ

+ #FIXED “default” trong đó default là giá trị mặc định và ta muốn ấn định ở giá trị này

+ #REQUIRED qui định thuộc tính phải chứa giá trị nào đó (không định tr−ớc)

+ #IMPLIED nếu thuộc tính không có giá trị mặc định e. Thực thể

Thực thể th−ờng sử dụng để chứa nội dung và nội dung đó có thể ở trong tài liệu XML (thực thể trong) hoặc ở ngoài tài liệu XML (thực thể ngoài). Tất cả các thực thể đều phải khai báo trong DTD.

Luận văn tốt nghiệp thạc sỹ Luận văn tốt nghiệp thạc sỹ Luận văn tốt nghiệp thạc sỹ

Luận văn tốt nghiệp thạc sỹ Nguyễn Thanh Thảo Nguyễn Thanh Thảo Nguyễn Thanh Thảo Nguyễn Thanh Thảo

ứ ứứ

ứng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Webng dụng công nghệ h−ớng đối t−ợng và XML để phát triển hệ thống trên nền Web

37

Các thực thể trong DTD có thể là thực thể phân tích (parsed entities) hoặc thực thể không phân tích (unparsed entities). Thực thể phân tích hay gọi là thực thể văn bản, nội dung văn bản đó trở thành một phần của tài liệu XML. Thực thể không phân tích không bắt buộc chứa văn bản nh−ng không đ−ợc trình biên dịch phân tích, và đ−ợc dùng để lồng nội dung phi văn bản hoặc phi XML vào tài liệu XML.

e1. Thực thể trong

Các thực thể trong đ−ợc khai báo trong tài liệu XML và chứa nội dung sẽ đ−ợc sử dụng trong tài liệu.

Ví dụ: Tài liệu XML có khai báo thực thể trong <?xml version = “1.0”>

<?DOCTYPE EMAIL [

<!ELEMENT EMAIL (to, from, cc, subject, body)> <!ELEMENT to (#PCDATA)>

<!ELEMENT from (#PCDATA)> <!ELEMENT cc (#PCDATA)> <!ELEMENT subject (#PCDATA)> <!ELEMENT body (#PCDATA)> <!ENTITY signature “Bill”> ]>

Thực thể signature đ−ợc khai báo ngay trong DTD, khi biên dịch thực thể sẽ đ−ợc thay thế bởi nội dung của nó.

e2. Thực thể ngoài

Một khai báo thực thể ngoài có thể chứa từ khoá SYSTEM hoặc PUBLIC. Nếu DTD đ−ợc phát triển chỉ sử dụng cho một tổ chức hoặc một Website, thì ta sử dụng từ khoá SYSTEM. Theo sau từ khoá SYSTEM có một URI (Uniform Resource Identifier) để báo cho trình xử lý biết tìm đối t−ợng tham chiếu ở đâu trong khai báo.

<!ENTITY IMAGE1 SYSTEM

"http://www.XMLCo.com/Images/tiger.gif" NDATA GIF> Trong tr−ờng hợp DTD đ−ợc thiết lập chuẩn và có thể đ−ợc nhiều ng−ời sử dụng thì ta sử dụng từ khoá PUBLIC. Theo sau từ khoá PUBLIC là một URI.

Ví dụ: <!ENTITY IMAGE1 PUBLIC

"http://www.XMLCo.com/Images/tiger.gif" NDATA GIF> Trong ví dụ tên ta sử dụng từ khoá NDATA GIF để nhận diện ký pháp mô tả dữ liệu ảnh GIF là dữ liệu không phân tích.

Một phần của tài liệu Ứng dụng công nghệ hướng đối tượng và XML để phát triển hệ thống trên nền WEB (Trang 40)