Tải bản đầy đủ (.doc) (53 trang)

Bao cáo khóa luận TN ĐH

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (935.17 KB, 53 trang )

Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
PHẦN 1: CƠ SỞ LÝ THUYẾT
Chương 1: TÌM HIỂU VỀ XML
1.1.Khái niệm XML:
- XML (Extensible Markup Language) ra đời vào tháng 2/1998, XML là tập
con của SGML - Standard Generalized Markup Language.
- Các tiêu chuẩn của XML qui định bởi W3C - World Wide Web
Consortium.
- Là ngôn ngữ hình thức thuộc dạng đánh dấu với:
• Bộ từ vựng và các từ: Các thẻ đánh dấu.
• Bộ cú pháp: Qui tắc kết hợp các thẻ đánh dấu.
- Tuân theo định chuẩn chung: Định chuẩn XML (W3C). Bởi World Wide
Web Consortium (W3C).
- XML đưa ra một định dạng chuẩn cho cấu trúc của dữ liệu hoặc thông tin
bằng việc tự định nghĩa định dạng của tài liệu. Bằng cách này, dữ liệu được lưu trữ
bằng XML sẽ độc lập với việc xử lý. Vì vậy XML ra đời đáp ứng được yêu cầu
ngày càng cao của các nhà lập trình trong vấn đề trao đổi và xử lý thông tin.
1.2. Mục tiêu ra đời và lợi ích khi sử dụng XML
1.2.1. Mục tiêu ra đời của XML
Ngày nay, XML đang trở thành một chuẩn chung cho việc trao đổi dữ liệu
cho những ứng dụng chạy trên môi trường Internet. Vì XML cho phép người dùng
có thể tự định nghĩa các thẻ (tag) - những thẻ này làm cho tài liệu XML đa dạng
hơn những ngôn ngữ thông thường như HTML. Như vậy mục tiêu đặt ra cho sự ra
đời XML là : Đầu tiên nó sẽ tương thích với SGML, và dễ dàng viết những
chương trình để xử lý cho những tài liệu XML. Kế tiếp, những tài liệu XML rõ
ràng, dễ đọc, dễ dàng tạo lập. Và điều quan trọng là nó được hỗ trợ trong nhiều
ứng dụng. Nói tóm lại, XML dễ dàng chia sẻ thông tin qua những định dạng khác
nhau thông qua môi trường web. XML được thiết kế để cho mọi người đều có thể
sử dụng được.
1.2.2. Lợi ích khi sử dụng XML
Trang 1


Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
Sau đây là một số lợi ích khi sử dụng XML:
♦ XML được dùng để trao đổi dữ liệu.
♦ XML có thể tách rời dữ liệu, sử dụng XML, dữ liệu được chứa trong các
tập tin XML riêng biệt.
♦ XML có thể mô tả thông tin của những đối tượng phức tạp mà cơ sở dữ liệu
quan hệ không thể giải quyết được.
♦ XML có thể dùng để chuyển đổi dữ liệu giữa các hệ thống không tương
thích.
♦ XML dùng để chia sẻ dữ liệu với những tập tin văn bản đơn giản dễ hiểu.
♦ XML cũng được dùng để lưu trữ dữ liệu, có thể làm cho dữ liệu hữu ích
hơn.Từ XML có thể tạo ra những ngôn ngữ dùng trong các lãnh vực chuyên
môn như WAP, WML,...
1.3.Khái niệm tài liệu XML:
- Dạng biểu diễn thông tin được đề xuất của Công nghệ XML.
- Văn bản có cấu trúc, được tạo lập dựa trên một ngôn ngữ XML nào đó.
Ví dụ 1 trang XML dạng Text:
<?xml version=“1.0” encoding=“UTF- 8” standalone=“yes”?>
<booklist>
<book genre=“Science” format=“Hardcover”>
<author>
<firstname> Richard</firstname>
<lastname> Feynman</lastname>
</author>
<title> The character of Physical Law</title>
</book>
<book genre=“Fiction”>
<author>
<firstname> R.K.</firstname>
Trang 2

phần tử
(element)
phần tử
(element)
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
<lastname> Narayan</lastname>
</author>
<title> Waiting for the Mahatma</title>
<published> 1981</published>
</book>
</booklist>
Biểu diễn thuộc tính:
genre=“Science” format=“Hardcover”
Tên_thuc_tính = ‘Giá tr’
genre=“Fiction”
Biểu diễn một thẻ và nội dung:
<firstname> R.K.</firstname>
<Tên thẻ> Ni dung </Tên thẻ>
<lastname> Narayan</lastname>
<title> Waiting for the
Mahatma</title>
<published> 1981</published>
Như vậy, bằng cách sử dụng định dạng XML, người dùng có thể hiểu và
biết được tập tin trên đang muốn truyền tải nội dung gì.
1.4. Tạo lập một tài liệu XML
Có nhiều cách tạo tài liệu XML nhưng đơn giản nhất là dùng trình soạn
thảo Notepad để soạn thảo tài liệu XML, nhưng phải tuân thủ theo qui tắc sau:
<root>
<child>
<subchild>…..</subchild>

....
</child>
....
</root>
Trang 3
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
Theo định dạng trên, tài liệu XML rất đơn giản nhưng qui định cũng rất
nghiêm ngặt, có nghĩa là các tài liệu XML đều xuất phát từ nút gốc (root) và mỗi
phần tử phải có thẻ đóng và thẻ mở “< …/>”.
Ví dụ một trang tài liệu XML
<?xml version="1.0"?>
<thu_vien>
<sach ID = "1029384">
<ten_sach>Cuon theo chieu gio</ten_sach>
<nha_xb>Thanh Nien</nha_xb>
<nam_xb>1995</nam_xb>
<tac_gia>Margaret Michell</tac_gia>
</sach>
<sach ID = "1254753">
<ten_sach>Ong gia va bien ca</ten_sach>
<nha_xb>Van Hoc Nghe Thuat</nha_xb>
<nam_xb>1982</nam_xb>
<tac_gia>Ernest Hemingway</tac_gia>
</sach>
. . . . .
</thu_vien>
Giải thích:
Dòng đầu <?xml version= "1.0" ?> là dòng khai báo, bao gồm phiên bản
của XML và các thông tin khác. Dòng này bắt buột phải có.
Dòng kế <thu_vien> là phần tử gốc của XML. Một tập tin XML có một và

chỉ một phần tử gốc duy nhất.
Dòng kế <sach ID = "1029384"> là phần tử con của thu_vien, trong đó ID
là một thuộc tính của phần tử này, và 1029384 là giá trị của thuộc tính này.
Bốn dòng tiếp theo là các phần tử con của sach, trong đó ten_sach, nha_xb,
nam_xb, tac_gia là tên của các phần tử và Cuon theo chieu gio, Thanh Nien, 1995,
Margaret Michell là nội dung của các phần tử tương ứng.
Hai dòng cuối cùng là dấu hiệu kết thúc của các phần tử sach, và thu_vien
Trang 4
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
Một số quy định:
Tất cả thẻ trong XML phải có thẻ chấm dứt tương ứng.
vd: XML sai <ten_sach>Cuon theo chieu gio
XML đúng <ten_sach>Cuon theo chieu gio</ten_sach>
Các thẻ XML phân biệt chữ hoa, chữ thường
vd: sai <Ten_Sach>Cuon theo chieu gio</ten_sach>
đúng <ten_sach>Cuon theo chieu gio</ten_sach>
Các thẻ XML phải được lồng theo đúng thứ tự.
vd: sai <ten_sach>Cuon theo chieu gio<nam_xb>1995</ten_sach></nam_xb>
đúng <ten_sach>Cuon theo chieu gio</ten_sach><nam_xb>1995</nam_xb>
XML phải có phần tử gốc (root element) và chỉ nên có 1, trong ví trên là thu_vien.
Các giá trị thuộc tính của XML phải để trong ngoặc kép.
vd: sai <sach ID= 1029384>
đúng <sach ID="1029384">
Tên các phần tử không được có khoảng trắng.
vd: sai <ten sach>Cuon theo chieu gio</ten sach>
đúng <ten_sach>Cuon theo chieu gio</ten_sach>
1.5. Cấu trúc & cú pháp
1.5.1. Cấu trúc:
Một tập tin XML là tập tin văn bản thuần tuý, có phần mở rộng là xml và gồm
có 3 phần chính:

♦ Phần khai báo: cho biết đây là 1 tập tin XML.
♦ Phần liên kết: định nghĩa kiểu, thông tin về các liên kết (nếu có), thông tin
chỉ định cách thức xử lý (processing instructions) đối với văn bản XML
này. Phần này không bắt buộc phải có.
♦ Phần nội dung là phần chính của XML, nó chứa đựng dữ liệu cần chứa
trong tập tin XML. Phần nội dung có cấu trúc hình cây:
- Toàn bộ tập tin XML chỉ có 1 phần tử gốc duy nhất.
- Bên trong phần tử gốc có thể có nhiều phần tử con.
- Các phần tử con có thể có thể nhiều phần tử con... và cứ thế tiếp tục.
Ví dụ:
Trang 5
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
Phần khai báo
<?xml version="1.0" ?>
Phần liên kết
<?xml:stylesheet type="text/xsl" href="thucdon.xsl" ?>
Phần nội dung
<thuc_don>
<mon_an>
<ten>Canh chua</ten>
<gia>$7.95</gia>
<mo_ta>canh chua ca loc hoac ca bong lau</mo_ta>
</mon_an>
</thuc_don>
1.5.2. Phân loại:
Dựa vào cấu trúc của tập tin XML , phân làm 2 loại: XML hoàn chỉnh (well-
formed XML) và XML hợp lệ (Valided) .
• Well-Formed Một văn bản XML là Well-Formed khi nó được viết theo cú
pháp phù hợp với đặc tả XML của tổ chức W3C. Các phần tử hình thành
một cây phân cấp có chung một phần tử gốc (Root Element). Các phần tử

có thể chứa một hay nhiều phần tử con xếp lồng vào nhau.
• Một tài liệu XML Well-Formed
 Phải có một root (gốc) Element duy nhất, gọi là Document Element,
nó chứa tất cả các Elements khác trong tài liệu.
 Mỗi opening Tag phải có một closing Tag giống như nó.
 Tags trong XML thì case sensitive, tức là opening Tag và closing
Tag phải được đánh vần y như nhau, chữ hoa hay chữ thường.
 Mỗi Child Element phải nằm trọn bên trong Element cha của nó.
Attribute value trong XML phải được gói giữa một cặp ngoặc kép
hay một cặp apostrophe (nháy đơn).
• Valided Một văn bản XML được gọi là Valided thì trước hết nó phải là
văn bản Well-Formed và phải phù hợp với tất cả các định nghĩa trong một
Trang 6
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
đặc tả chung cho các văn bản có cùng cấu trúc, gọi là DTD (Document
Type Definition).
Nói cách khác, văn bản XML được coi là Valided nếu nó không chứa bất
kỳ phần tử nào mà không được định nghĩa trước trong DTD và thứ tự xuất hiện, số
lần xuất hiện của một phần tử phải phù hợp với các đặc tả của DTD.
Để có thể trao đổi thông tin có cấu trúc, hai cơ sở dữ liệu phải thống nhất
dùng chung một đặc tả DTD cho các văn bản XML. Tuy nhiên với các văn bản phi
cấu trúc thì không nhất thiết phải tuân thủ hoàn toàn chuẩn về tính Valided của
một tài liệu XML, mà chỉ cần một phần trong chúng chứa những thông tin hữu ích
giúp cho việc mô tả tính chất và nội dung của bản thân tài liệu. Các thông tin mô tả
này còn gọi là Meta-Data(Dữ liệu mô tả về các dữ liệu).
1.5.2.1.DTD (Document Type Definition)
Định nghĩa kiểu dữ liệu cho các phần tử thẻ còn gọi là định nghĩa kiểu tư
liệu. Document Type Definition (DTD).
Cú pháp định nghĩa và khai báo kiểu tư liệu cho các phần tử thẻ :
< !DOCTYPE root-name [DTD]

>
Để bắt đầu định nghĩa kiểu tư liệu cho các phần tử XML dùng khai báo:
<! DOCUMENT rootname [DDT]>. Ngoài ra còn có một số khai báo khác.
♦ DTD là định nghĩa cho phần tử trong tài liệu.
♦ DTD cần theo cú pháp qui định của tổ chức XML W3C
- Phần khai báo định nghĩa kiểu tư liệu đặt ở phần khởi đầu tài liệu XML. Có
nhiều mẫu khai báo :
< !DOCTYPE root-name [DTD]>
< !DOCTYPE root-name SYSTEM URL>
< !DOCTYPE root-name SYSTEM URL [DTD]>

Tiếp theo định nghĩa các kiểu tư liệu cho phần tử thẻ bên trong cặp dấu vuông [].
1.5.2.3. Lược đồ XML (Schema XML)
Trang 7
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
XML Schema Definition (XSD)
 XML Schema mô tả cấu trúc của tài liệu XML, thay thế cho DTD
 XML Schema mô tả:
 Các phần tử và thuộc tính trong tài liệu XML
 Thứ tự và số lượng các phần tử con
 Các kiểu dữ liệu của phần tử và thuộc tính
Lí do sử dụng XML Schema:
 XML Schema là một sự thay thế cho DTD
 Hỗ trợ nhiều loại dữ liệu
 Sử dụng cú pháp XML
 Bảo toàn sự giao tiếp dữ liệu
 Ràng buộc khóa và tham chiếu mạnh hơn DTD
 Tích hợp với namespace
Ví dụ:
<?xml version="1.0"?>

<xs:schema xmlns:xs=“ />targetNamespace=“”
xmlns=“”
elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Tham chiếu đến một XML Schema
Trang 8
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
<?xml version="1.0"?>
<note
xmlns=
xmlns:xsi= />xsi:schemaLocation=" note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
 xsi:schemaLocation nghĩa là lược đồ của namespace
được tìm thấy ở
note.xsd
Xây dựng lược đồ từ nhiều thành phần

<schema xmlns= /> targetNamespace=“ /><include schemaLocation=“ /><include schemaLocation=“ /><include schemaLocation=“ /> ….
</schema>
 <include>: giống như #include trong ngôn ngữ C
 schemaLocation: cho biết nơi để lấy thông tin
Khai báo phần tử trong XML Schema
 Phần tử <schema> là phần tử gốc trong các tài liệu XML Schema
<?xml version="1.0"?>
<xs:schema xmlns:xs= /> targetNamespace=
xmlns=
elementFormDefault="qualified">
Trang 9
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
......
</xs:schema>
Khai báo phần tử trong XSD:
 xmlns:xs="
 Phần tử và loại dữ liệu trong lược đồ được khai báo trong namespace
và có tiền tố là xs
 targetNamespace=
 Các phần tử được định nghĩa trong lược đồ đến từ namespace

 xmlns=""
 namespace mặc định là xmlns=""
 elementFormDefault="qualified“
 Bất kỳ phần tử nào được sử dụng trong tài liệu XML phải từ namespace
đảm bảo chất lượng
 Các kiểu phần tử:
 Kiểu giản đơn (Simple element): là một phần tử XML chỉ có kiểu dữ
liệu text, mà không có thuộc tính hoặc không thể chứa các phần tử
khác

 Kiểu text có thể có nhiều loại
 Kiểu phức hợp (Complex element): là một phần tử XML có thuộc
tính, hoặc chứa các phần tử con khác
1.5.4. Cú pháp
Có các qui tắc về cú pháp để soạn thảo một tập tin XML:
♦ Dòng đầu tiên của tập tin XML là dòng khai báo. Vd:
<?xml version="1.0" standalone="yes/no" encoding="UTF-8"?>
version: hiện tại đang là 1.0, version báo cho bộ xử lý XML biết nó sẽ tuân thủ các
qui định về XML version 1.0
♦ Nếu standalone = yes thì bộ xử lý XML sẽ tìm văn bản định nghĩa DTD đi
kèm, từ đó mà xử lý phần nội dung XML theo qui định của DTD
Trang 10
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
encoding: phiên bản XML 1.0 xem UTF-8 là mặc định, có thể bỏ qua khai báo
này.
♦ Toàn bộ dòng trên phải được viết bằng chữ thường.
♦ Tuân thủ các quy định của văn bản định dạng DTD
♦ Thống nhất trong cách dùng chữ HOA, chữ thường cho tên của phần tử
♦ Hoặc dùng toàn chữ thường, toàn chữ hoa, hoặc chỉ viết hoa ký tự đầu tiên
♦ Đặt giá trị thuộc tính trong dấu ngoặc đơn hoặc ngoặc kép
♦ Nhớ đóng tất cả các thẻ (mọi thẻ mở phải có thẻ kết) kể cả các thẻ rỗng (thẻ
không có giá trị).
♦ Các thẻ rỗng có 2 cách viết: <the_rong></the_rong> hoặc <the_rong />
♦ Các thẻ phải lồng nhau thích hợp
♦ Nên canh lề các nút ngang cấp để dễ theo dõi các thẻ lồng nhau.
1.6.Các thành phần của XML
1.6.1. Phần tử (Elements):
Là một khối tạo thành văn bản XML, bắt đầu bằng 1 thẻ mở, và kết thúc
bằng thẻ đóng cùng tên, theo công thức:
<thẻ các-thuộc-tính (nếu có)> nội dung của phần tử </the>

Thẻ đóng hình thành bằng cách kết hợp dấu / và thẻ mở.
Thuộc tính là tùy chọn có hoặc không.
Nội dung của phần tử có thể là:
Văn bản thuần túy (dữ liệu đơn): <hoten>Nguyen A</hoten>
Dữ liệu phức, trong đó chứa các phần tử con:
<hoten><ho>Nguyen</ho><ten>A</ten></hoten>
Rỗng: <hoten />
Khoảng trắng trong nội dung không bị cắt bớt như HTML.
Nên phân biệt phần tử và thẻ. Khi nói đến phần tử là nói đến toàn bộ khối dữ liệu
bắt đầu từ thẻ mở đến thẻ đóng.
♦ Tên của thẻ do người dùng đặt, do đó nên chọn tên có ý nghĩa và dẽ nhớ.
Tên của thẻ tuân theo các qui định:
♦ Không bắt đầu bằng số hoặc các dấu đặc biệt
Trang 11
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
♦ Có thể chứa chữ, số và các ký tự khác
♦ Không chứa khoảng trắng
♦ Không bắt đấu bằng 3 chữ xml hay XML
♦ Các phần tử có mối liên hệ cha - con nếu được đặt lồng nhau
1.6.2. Phần tử gốc (root):
Trong tài liệu XML, chỉ có một phần tử gốc, và phần tử này sẽ chứa tất cả
những phần tử của tài liệu XML do chúng ta tạo ra.
1.6.3.Thuộc tính (Attributes):
Thuộc tính của 1 phần tử cung cấp thông tin bổ sung về phần tử đó.
Thuộc tính của 1 phần tử luôn được đặt bên trong thẻ của phần tử đó.
Thuộc tính được khai báo theo công thức:
tên_thuộc_tính = "giá_trị_thuộc_tính"
Nếu trong thuộc tính có dấu " thì dùng kết hợp dấu đơn và kép:
<cau_thu nick="ông 'Pele' đen">
Thuộc tính thường chứa thông tin cần thiết cho phần mềm hơn là cho người

xem.
Ví dụ có văn bản XML như sau:
<lop_hoc>
<hoc_vien id="1209">
<ten>ABC</ten>
<ho>Nguyen</ho>
<nam_sinh>1980</nam_sinh>
. . . . .
</hoc_vien>
</lop_hoc>
Trong ví dụ trên id chỉ cần cho phần mềm khi xử lý hơn là cho người xem
danh sách, nên được đặt là thuộc tính.
Tránh dùng thuộc tính quá nhiều. Ví dụ dưới đây cho thấy 1 văn bản XML
không được tổ chức tốt:
<e_mail ngay="12/5/2001" nguoi_gui="ABC" header="Hello" noi_dung="Sao?
Luc nay khoe khong?"
Trang 12
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
</e_mail>
Thay vì tổ chức dưới dạng sau:
<e_mail>
<ngay>12/5/2001</ngay>
<nguoi_gui>ABC</nguoi_gui>
<header>Hello</header>
<noi_dung>Sao? Luc nay khoe khong?"</noi_dung>
</e_mail>
Một số nhược điểm khi dùng thuộc tính:
♦ Thuộc tính không thể chức nhiều giá trị, phần tử thì có thể tạo phần tử con
♦ Thuộc tính khó mở rộng về sau
♦ Thuộc tính không mô tả cấu trúc của 1 văn bản XML

♦ Thuộc tính khó truy xuất bằng ngôn ngữ lập trình hơn phần tử (vì các thư
viện hàm điều khiển thuộc tính không nhiều)
♦ Thuộc tính khó tương thích với văn bản định dạng DTD hơn phần tử .
1.6.4. Chú thích (Comments)
Giống như HTML, trong văn bản XML bạn có thể đặt chú thích vào để giải
thích điều gì đó cho người đọc mà không ảnh hưởng đến cấu trúc của toàn bộ văn
bản XML. Chú thích được thêm vào theo công thức sau:
<!-- đặt nội dung chú thích nơi đây -->
Chú thích bắt đầu bằng <!--
Nội dung chú thích không chứa dấu -
Kết thúc bằng -->
<?xml version="1.0" ?>
<forum>
<post id="1234567890">
<parent>12345</parent>
<!-- nếu là post đầu tiên, parent sẽ bằng 0 -->
<author>ViDu</author>
<subject>Giup do XML</subject>
<content>Co ai biet o dau day XML online</content>
Trang 13
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
<views>24</views>
<responses>3</responses>
</post>
. . . . .
</forum>
1.6.5. CDATA
CDATA (character data) nói cho bộ phân tích XML biết toàn bộ nội dung
đặt trong CDATA là văn bản thuần túy, không cần phân tích chi tiết bên trong.
CDATA được dùng khi nội dung của 1 phần tử là 1 đoạn văn bản quá dài với

nhiều ký tự đặc biệt.
CDATA có cú pháp như sau:
<![CDATA[ đặt nội dung văn bản nơi đây ]]>
CDATA bắt đầu bằng <![CDATA[
Sau đó là nội dung văn bản
Kết thúc bằng ]]>
<?xml version="1.0" ?>
<software>
<module part_id="compare">
<author>Mr. Coding</author>
<language>Javascript</language>
<code>
<![CDATA[
function matchwo(a,b){
if (a < b && a < 0) then {
return 1
} else {
return 0
}
}
]]>
</code>
Trang 14
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
</module>
. . . . .
</software>
CDATA không thể chứa một CDATA khác.
Không có khoảng trắng trong thẻ <![CDATA[ và ]]>
Khóa tắt (entity) là 1 từ khóa dùng viết tắt thay cho 1 đoạn văn bản, hay từ khác.

Khóa tắt được đưa vào XML dưới dạng:
&tên-khóa;
Bắt đầu bằng dấu & đến tên khóa, sau đó dấu ;
Khóa tắt là khái niệm dùng chung cho HTML và XML. Ví dụ trong HTML cụm
&lt; thay thế cho <
Lợi ích của việc dùng khóa tắt là:
♦ Giảm công sức đánh máy, nếu gặp phải 1 đoạn văn mà xuất hiện trên nhiều
tài liệu khác nhau, cần đặt khóa tắt cho đoạn văn bản đó.
♦ Giảm lỗi, dĩ nhiên. Khi đánh máy 1 cụm từ thay cho 1 đoạn văn bản thì ít
lỗi hơn.
♦ Sửa đổi dễ dàng. Nếu muốn sửa đoạn văn bản trong khóa tắt thì chỉ sửa
trong phần định nghĩa.
♦ Khóa tắt có thể dùng để giữ chỗ cho các thông tin còn chưa rõ ràng, sẽ cập
nhật sau này.
Khóa tắt được định nghĩa theo 3 cách:
♦ Định nghĩa cục bộ ngay trong văn bản XML, tuy nhiên chỉ dùng cho mỗi
văn bản XML đó thôi.
♦ Định nghĩa nơi khác và đặt phần liên kết trong văn bản XML.
♦ Định nghĩa trong văn bản định dạng DTD đi kèm với văn bản XML đó.
Sau đây là cú pháp định nghĩa khóa tắt cục bộ:
<!DOCTYPE [ <!ENTITY tên_khóa "nội_dung_văn bản" >
CDATA bắt đầu bằng <!DOCTYPE [ <!ENTITY toàn bộ chữ in hoa
Sau đó là tên khóa, ghi nhớ rằng tên sẽ phân biệt chữ hoa chữ thường
Phần nội dung phần văn bản tiếp theo sau và cần viết tắt đặt trong dấu nháy đôi "
Kết thúc bằng >
Trang 15
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
<?xml version="1.0" ?>
<!DOCTYPE [
<!ENTITY copyright "Copyright 2002 www.ViDu.com . All rights reserved.

Please do not copy or redistribute without authorization. For authorization, contact
" >
<company>
<name>Hoa Son</name>
<email></root>
<legal_info>&copyright;</legal_info>
</company>
Nếu định nghĩa trong 1 tập tin khác thì đặt URI của tập tin đó sau tên của khóa tắt:
<!DOCTYPE [ <!ENTITY tên_khóa SYSTEM "URI của tập tin định nghĩa" >
<?xml version="1.0" ?>
<!DOCTYPE [
<!ENTITY copyright SYSTEM " >
<company>
<name>Hoa Son</name>
<email></root>
<legal_info>&copyright;</legal_info>
</company>
1.7.Xử lý đọc ghi tài liệu XML
Sử dụng XMLreader và XML writer để đọc và ghi dữ liệu:
XmlReader và XmlWriter là 2 lớp ảo quan trọng nhất trong mô hình đối
tượng XML của .NET Framework.
o XmlReader cung cấp các API để đọc tài liệu XML
o XmlWriter cung cấp các API để tạo ra các tài XML theo chuẩn của
W3C
o Microsoft áp dụng kết hợp ý tưởng của DOM và SAX trong việc
thiết kế và xây dựng 2 lớp này
Trang 16
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
o XmlReader và XmlWriter sử dụng mô hình stream để đọc/ghi từng
phần của tài liệu XML

o Do XmlReader và XmlWriter đều là abstract class nên khi sử dụng,
cần phải dùng các lớp cụ thể kế thừa từ các lớp này
o Sử dụng các lớp XmlTextReader, XmlNodeReader hay XslReader
kế thừa từ XmlReader
o Sử dụng XmlTextWriter hay XmlNodeWriter kế thừa từ XmlWriter
XmlReader
• Lớp XmlReader:
o Abstract class
o Cung cấp chức năng đọc (read-only và forward-only) trên tài liệu
XML.
• Việc sử dụng XmlReader rất giống với DOM, cho phép đọc và xử lý lần
lượt từng node
Ví dụ: đọc và duyệt qua từng node của tài liệu XML và xuất tên của các
element trong tài liệu
public void DisplayElements( XmlReader reader )
{
/* read the next node in document order */
while ( reader.Read() )
{
/* if this is an element node, display its name */
Console.WriteLine( reader.Name );
}
}
Trang 17
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
• XmlReader sử dụng một cursor để xác định node hiện tại đang được xử lý
trong stream tài liệu
• Các phương thức được cung cấp cho phép có thể duyệt qua lần lượt từng
node theo chiều tiến (forward-only)
• XmlReader cung cấp một số hàm để thao tác trên kiểu và giá trị của node

hiện tại
*Đọc các node:
• Phương thức Read( ) là phương thức cơ sở của XmlReader để di chuyển
cursor trong tài liệu XML
• Mỗi lần gọi hàm Read( ), XmlReader sẽ di chuyển cursor sang node tiếp
theo trong tài liệu cho đến khi hết stream
• Khi hết stream, Read( ) sẽ trả về giá trị False.
Ví dụ: đọc và duyệt qua từng node của tài liệu XML và xuất tên của các
element trong tài liệu
public void DisplayElements( XmlReader reader )
{
/* read the next node in document order */
while ( reader.Read() )
{
/* if this is an element node, display its name */
Console.WriteLine( reader.Name );
}
}

*Thông tin của node:
• Ví dụ:
Trang 18
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
o Thuộc tính NodeType trả về kiểu node (tương tự DOM)
• Với mỗi node đang được đọc, có thể lấy thông tin về giá trị và các thông tin
liên quan đến node đó
o Thuộc tính Value trả về giá trị của node
• XmlReader cung cấp các hàm trả về giá trị theo từng kiểu dữ liệu cụ thể
(ReadInt16, ReadDouble, ReadString, …)
public void DisplayNode( XmlReader node )

{
switch ( node.NodeType )
{
case XmlNodeType.Element:
Console.Write( "<" + node.Name + ">" );
break;
case XmlNodeType.Text:
Console.Write( node.Value );
break;
case XmlNodeType.CDATA:
Console.Write( node.Value );
break;
case XmlNodeType.ProcessingInstruction:
Console.Write( "< "+node.Name+" "+node.Value+" >" );
break;
case XmlNodeType.Comment:
Console.Write( "<!--" + node.Value + "-->" );
break;
Trang 19
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
case XmlNodeType.Document:
Console.Write( "< xml version='1.0' >" );
break;
case XmlNodeType.Whitespace:
Console.Write( node.Value );
break;
case XmlNodeType.SignificantWhitespace:
Console.Write( node.Value );
break;
case XmlNodeType.EndTag:

Console.Write( "</" + node.Name + ">" );
break;
}
}
*Đọc các Attribute:
• Attribute là thành phần bên trong của element nên hàm Read( ) KHÔNG
duyệt vào các node attribute!!!
• Để truy cập các attribute của element hiện tại, sử dụng hàm GetAttribute( ).
• Trong GetAttribute( ), có thể truy cập các attribute theo tên hay chỉ số
Ví dụ:
for ( int = 0; i < node.AttributeCount; i++ )
{
Console.WriteLine( node.GetAttribute( i ) );
}
• XmlReader cung cấp các hàm để duyệt qua các attribute của node hiện tại.
Trang 20
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
o MoveToAttribute( )
o MoveToFirstAttribute( )
o MoveToNextAttribute( )
Ví dụ:
while ( node.MoveToNextAttribute() )
{
Console.Write( " " + node.Name + "=\""+node.Value+"\"" );
}
XmlWriter:
• XmlWriter là abstract class cho phép tạo ra stream tài liệu theo định dạng
XML của W3C
• XmlWriter hỗ trợ việc tạo tài liệu XML tự động, ví dụ như đảm bảo việc
đóng các tag của element đầy đủ, các giá trị của attribute được ghi nháy

kép đầy đủ…
• XmlWriter cung cấp các hàm để ghi dữ liệu có kiểu cụ thể (như WriteInt32(
), WriteDouble( ), WriteString( )…).
public static void Main( String[] args )
{
/* Instantiates an XmlTextWriter that writes to the console */
XmlTextWriter writer = new XmlTextWriter( Console.Out );
/* Use indenting for readability */
writer.Formatting = Formatting.Indented;
writer.Indentation = 4;
/* Now write out our XML document */
writer.WriteStartDocument();
Trang 21
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
writer.WriteStartElement( "Persons" );
writer.WriteStartElement( "Person" );
writer.WriteStartElement( "Name" );
writer.WriteStartAttribute( null, "firstName", null );
writer.WriteString( "Albert" );
writer.WriteEndAttribute();
writer.WriteStartAttribute( null, "lastName", null );
writer.WriteString( "Einstein" );
writer.WriteEndAttribute();
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteStartElement( "Person" );
writer.WriteStartElement( "Name" );
writer.WriteStartAttribute( null, "firstName", null );
writer.WriteString( "Niels" );
writer.WriteEndAttribute();

writer.WriteStartAttribute( null, "lastName", null );
writer.WriteString( "Bohr" );
writer.WriteEndAttribute();
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
/* Don't forget to close the writer */
Trang 22
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
writer.Close();
}
1.8. Hiển thị XML trên trình duyệt Web
1.8.1. Dùng CSS
Để hiển thị XML theo ý muốn, đòi hỏi phải có 1 văn bản đi kèm hướng dẫn
bộ duyệt cách đọc & hiển thị. Có Hai lý do cần phải có văn bản hướng dẫn bộ
duyệt hiển thị XML
Các thẻ của XML do người dùng tự đặt nên bộ duyệt không thể tự xử lý.
XML chỉ đơn thuần là văn bản chứa dữ liệu, khác với HTML là văn bản hướng
dẫn cách hiển thị.
Cách đơn giản nhất là dùng văn bản hướng dẫn hiển thị dạng CSS (Cascading
Style Sheet) như ví dụ sau đây:
bookstore {background-color: #ffffff; width: 100%;}
book {display: block; margin-bottom: 30pt; margin-left: 0;}
title {color: #FF0000; font-size: 16pt;}
author {color: #0000FF; font-size: 16pt; }
year, publisher {Display: block; color: #000000; margin-left: 20pt;}
lưu văn bản trên vào 1 tập tin với tên bookstore.css, sau đó thêm dòng
<?xml-stylesheet type="text/css" href="bookstore.css"?>
vào phần khai báo của văn bản XML như sau:

<?xml version="1.0" ?>
<?xml-stylesheet type="text/css" href="bookstore.css"?>
<bookstore>
<book>
<title>HTML basic</title>
<author>Dalan Smith</author>
<year>1999</year>
<publisher>MS Publisher</publisher>
</book>
<book>
Trang 23
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
<title>How to secure your site</title>
<author>Anonymous</author>
<year>2001</year>
<publisher>Alley</publisher>
</book>
<book>
<title>XML for guru</title>
<author>MacCathy</author>
<year>2000</year>
<publisher>Barns "n" Noble</publisher>
</book>
</bookstore>
1.8.2. Dùng XSL
XSL (eXtensible Stylesheet Language) cũng là ngôn ngữ định dạng kiểu
như CSS nhưng mạnh hơn vì có thể nhúng HTML vào. Một trong những phương
pháp thông dụng là dùng XSL chuyển XML sang HTML trước khi hiển thị như ví
dụ sau đây:
<?xml version="1.0" ?>

<html xmlns:xsl=" /> <body style="font-family: Arial; font-size: 12pt; background-color: #8000FF">
<xsl:for-each select="thuc_don/mon_an">
<p style="background-color: #FFFF00; color: #000000;">
<span style="font-weight: bold; color: #000000">
<xsl:value-of select="name" />
</span>
===>
<xsl:value-of select="price" />
</p>
<p style="margin-bottom: 10pt; font-size: 10pt; color: #FFFFFF">
<xsl:value-of select="description" />
</p>
Trang 24
Khoá luận tốt nghiệp Nhóm SV thực hiện: Nguyễn Văn Hiệp – Nguyễn Văn Quân
</xsl:for-each>
</body>
</html>
lưu văn bản trên vào 1 tập tin với tên thucdon.xsl, sau đó thêm dòng
<?xml-stylesheet type="text/css" href="thucdon.css"?>
vào phần khai báo của văn bản XML như sau:
<? xml version="1.0" ?>
<?xml:stylesheet type="text/xsl" href="thucdon.xsl" ?>
<thuc_don>
<mon_an>
<ten>Com tam</ten>
<gia>$5.95</gia>
<mo_ta>Com tam suon bi cha</mo_ta>
</mon_an>
<mon_an>
<ten>Canh chua</ten>

<gia>$7.95</gia>
<mo_ta>canh chua ca loc hoac ca bong lau</mo_ta>
</mon_an>
<mon_an>
<ten>Dau hu</ten>
<gia>$5.95</gia>
<mo_ta>Dau hu don thit hoac dau hu don ca</mo_ta>
</mon_an>
</thuc_don>
1.9. Một số kỹ thuật của ADO.NET với XML
1.9.1.Các hàm dùng chung
 Nạp dữ liệu vào DataSet
static void FillMyDataSet(DataSet ds)
{
string strConn, strSQL;
Trang 25

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×