1
ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CNTT & TRUYỀN THÔNG
PHẠM THỊ HƢƠNG
NGHIÊN CỨU CÁCH CHUYỂN ĐỔI CƠ SỞ DỮ LIỆU
QUAN HỆ VÀ XML, ỨNG DỤNG HỆ THỐNG VÀO QUẢN LÝ THƢ VIỆN
Chuyên ngành : Khoa học máy tính
Mã số : 60.48.01
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
NGƯỜI HƯỚNG DẪN KHOA HỌC : PGS.TS. ĐOÀN VĂN BAN
Thái Nguyên - 2012
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
2
LỜI CAM ĐOAN
Tôi xin cam đoan bản luận văn “Nghiên cứu cách chuyển đổi cơ sở dữ liệu
quan hệ và XML, ứng dụng vào hệ thống quản lý thư viện” là công trình nghiên
cứu riêng của tôi. Các số liệu trong luận văn được sử dụng trung thực. Kết quả
nghiên cứu được trình bày trong luận văn này chưa từng được công bố tại bất kỳ
công trình nào khác. Tôi xin chân thành cám ơn các Thầy, Cô trường Đại học Công
nghệ thông tin & Truyền thông đã truyền đạt cho tôi kiến thức trong suốt những
năm học ở trường. Tôi xin chân thành cảm ơn PGS.TS Đoàn Văn Ban đã tận tình
hướng dẫn tôi hoàn thành tốt luận văn này.
Thái nguyên, ngày 13 tháng 05 năm 2012
Phạm Thị Hương
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3
MỤC LỤCcontents
Trang phụ bìa
Lời cam đoan
i
Mục lục
ii
Danh mục các ký hiệu, các chữ viết tắt
v
Danh mục các bảng
vi
Danh mục các hình
vii
LỜI MỞI ĐẦU
1
1. Lý do chọn đề tài
1
2. Mục tiêu nghiên cứu
1
3. Phương pháp nghiên cứu
2
4. Tổng quan luận văn
2
Chương 1: Tổng quan về XML và cơ sở dữ liệu quan hệ
3
1.1. Tổng quan về XML
3
1.1.1. Giới thiệu về XML
3
1.1.2. Mục tiêu ra đời của tài liệu XML
3
1.1.3. Các lợi ích khi sử dụng XML
3
1.2. Cấu trúc tài liệu XML
4
1.2.1. Định nghĩa tài liệu XML
4
1.2.2. Cấu trúc tài liệu XML
4
1.2.3. Các tài liệu cơ bản của tài liệu XML
5
1.2.4. Cấu trúc một tài liệu XML hợp khuôn dạng
13
1.2.5. Định nghĩa kiểu DTD
15
1.2.6. Lược đồ XML
17
1.2.7. Bảng định nghĩa kiểu CSS
18
1.3. Phân tích tài liệu XML theo DOM
20
1.3.1. Mô hình đối tượng tài liệu
20
1.3.2. Phân tích tài liệu XML theo mô hình đối tượng dữ liệu DOM
23
1.4. Cơ sở dữ liệu quan hệ
24
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
4
1.4.1. Hệ quản trị cơ sở dữ liệu
24
1.4.2. Mô hình dữ liệu quan hệ
25
1.4.3. Kiến trúc cơ sở dữ liệu quan hệ
25
1.4.4. Ràng buộc toàn vẹn cơ sở dữ liệu quan hệ
26
1.5. Kết luận chương 1
28
Chương 2: Chuyển đổi giữa cơ sở dữ liệu quan hệ và XML
29
2.1. Phương pháp luận
29
2.1.1. Cấu trúc, kiểu cơ chế của XML và lược đồ CSDL quan hệ
29
2.1.2. Mối quan hệ giữa một CSDL quan hệ và một tài liệu XML
33
2.1.3. Tên kiểu phần tử
33
2.1.4. Giá trị rỗng và giá trị mặc định
34
2.1.5. So sánh các quan hệ trong CSDL quan hệ và XML
35
2.1.6. Thứ tự kiểu phần tử trong lược đồ XML
37
2.2. Cơ chế chuyển một CSDL quan hệ thành một tài liệu XML
39
2.2.1. Phi chuẩn hóa các lược đồ quan hệ
40
2.2.2. Kết nối các CSDL đã phi chuẩn hóa
41
2.2.3. Ánh xạ một CSDL quan hệ thành một tài liệu XML
42
2.3. Chuyển một tài liệu XML sang một CSDL quan hệ
45
2.3.1. Phương pháp ánh xạ một tài liệu XML thành CSDL quan hệ
46
2.3.2. Phương pháp băm nhỏ hay phân tách các tài liệu XML
49
2.4. Thuật toán chuyển đổi giữa cơ sở dữ liệu quan hệ và XML
50
2.4.1. Biểu diễn tài liệu XML theo mô hình DOM
51
2.4.2. Biểu diễn tài liệu XML theo dạng bảng của CSDL quan hệ
52
2.4.3. Chuyển một CSDL quan hệ sang một tài liệu XML
53
2.5. Cài đặt thuật toán
53
2.5.1. Đọc tài liệu XML dưới dạng DOM
54
2.5.2. Chuyển đổi một tài liệu XML thành CSDL quan hệ
55
2.5.3. Chuyển một CSDL quan hệ thành một tài liệu XML
56
2.6. Kết luận chương 2
60
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
5
Chương 3: Thực nghiệm
61
3.1. Mô tả bài toán và giả thuyết
61
3.2. Yêu cầu hệ thống
62
3.3. Giao diện và một số chức năng của chương trình
62
3.3.1. Màn hình chính của hệ thống
62
3.3.2. Chức năng đăng nhập hệ thống
63
3.3.3. Chức năng nhập dữ liệu
63
3.3.4. Chức năng tìm kiếm thông tin
64
3.3.5. Chức năng báo cáo thống kê
65
3.4. Một số kết quả cài đặt thuật toán
65
3.4.1. Biểu diễn tài liệu XML theo dạng cây
65
3.4.2. Biểu diễn tài liệu XML dạng bảng
66
3.4.3. Chuyển CSDL sang tài liệu XML
66
3.4.4. Chuyển tài liệu XML sang CSDL quan hệ
67
3.5. Kết luận chương 3
67
KẾT LUẬN
68
TÀI LIỆU THAM KHẢO
70
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
6
BẢNG KÝ HIỆU CÁC CHỮ VIẾT TẮT
Chữ viết
tắt
Nghĩa tiếng anh
Nghĩa tiếng việt
1NF
First Normal Form
Dạng chuẩn 1
2NF
Second Normal Form
Dạng chuẩn 2
3NF
Third Normal Form
Dạng chuẩn 3
BCNF
Boyce Codd Normal Form
Dạng chuẩn Boyce Codd
CSDL
Database
Cơ sở dữ liệu
CSS
Cascading Style Sheets
Bảng kiểu xếp chồng
DHTML
Dynamic HyperText Markup
Language
Ngôn ngữ định dạng siêu văn bản
động
DOM
Document Object Model
Mô hình đối tượng tài liệu
DTD
Document Type Definition
Định nghĩa kiểu tài liệu
HTML
HyperText Markup Language
Ngôn ngữ đánh dấu siêu văn bản
LAN
Local Area Network
Mạng cục bộ
SGML
Standard Generalized Markup
Language
Siêu ngôn ngữ có khả năng sinh
ngôn ngữ khác
SQL
Structured Query Language
Ngôn ngữ truy vấn có cấu trúc
URI
Uniform Resource Identifier
Định danh tài nguyên trên Internet
URL
Universal Resource Locator
Địa chỉ định vị tài nguyên toàn cầu
W3C
World Wide Web Consortium
Tập đoàn mạng toàn cầu
WAN
Wide Area Network
Mạng diện rộng
XHTML
Extensible HyperText Markup
Language
Ngôn ngữ đánh dấu siêu văn bản
mở rộng
XML
eXtensible Markup Language
Ngôn ngữ định dạng mở rộng
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
7
DANH MỤC BẢNG BIỂU
Bảng 1.1. Bảng tham chiếu thực thể trong XML
14
Bảng 1.2. Các loại nút trong mô hình XML
21
Bảng 1.3. Các phương thức trong mô hình DOM
24
Bảng 2.1. Các kiểu phần tử
29
Bảng 2.2. Minh họa định nghĩa kiểu phần tử hợp thành độc giả
30
Bảng 2.3. So sánh các yếu tố trọng một tập hợp
35
Bảng 2.4. Nội dung so sánh các quan hệ
36
Bảng 2.5. Những kiểu phần tử hợp thành không có thứ tự
38
Bảng 2.6. Khi việc băm nhỏ là có hay không là 1 lựa chọn thích hợp
49
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
8
DANH MỤC CÁC HÌNH
Hình 1.1. Cấu trúc tài liệu XML
5
Hình 1.2. Tài liệu XML được biểu diễn theo cấu trúc cây
23
Hình 2.1. Các mức so sánh giữa mô hình quan hệ và XML
33
Hình 2.2. Sơ dồ thực thể liên kết
40
Hình 2.3. Chuẩn hóa các quan hệ
41
Hình 2.4. Phi chuẩn quan hệ
41
Hình 2.5. Những ánh xạ cơ bản từ CSDL quan hệ thành tài liệu XML
42
Hình 2.6. Ánh xạ một CSDL sang một tài liệu XML
43
Hình 2.7. Sơ đồ chuyển CSDL quan hệ thành tài liệu XML
44
Hình 2.8. Chuyển từ bảng CSDL quan hệ thành tài liệu XML
45
Hình 2.9. Tài liệu XML được thể hiện theo mô hình DOM
45
Hình 2.10. Sơ đồ chuyển tài liệu XML thành CSDL quan hệ
46
Hình 2.11. Những ánh xạ cơ bản từ tài liệu XML thành CSDL quan hệ
47
Hình 2.12. Ánh xạ một tài liệu XML thành một CSDL quan hệ
48
Hình 2.13. Chuyển từ một tài liệu XML thành một CSDL quan hệ
48
Hình 2.1.4. Mô hình XML ở dạng bảng và dạng cây
50
Hình 2.15. Biểu diễn tài liệu XML theo mô hình DOM
51
Hình 2.16. Biểu diễn tài liệu XML theo dạng bảng
52
Hình 2.17. Chuyển tài liệu XML sang cơ sở dữ liệu quan hệ
56
Hình 2.18. Chuyển một CSDL sang tài liệu XML
60
Hình 3.1. Giao diện tổng quan của hệ thống
62
Hình 3.2. Màn hình đăng nhập vào quản lý hệ thống
63
Hình 3.3. Màn hình độc giả
63
Hình 3.4. Kết quả tra cứu thông tin độc giả
65
Hình 3.5. Kết quả biểu diễn tài liệu XML theo DOM
65
Hình 3.6. Kết quả biểu diễn tài liệu XML theo dạng bảng
66
Hình 3.7. Kết quả chuyển đổi từ CSDL sang tài liệu XML
66
Hình 3.8. Kết quả chuyển đổi từ XML sang CSDL quan hệ
67
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
9
MỞ ĐẦU
1. Lý do chọn đề tài
Ngày nay công nghệ thông tin đã được ứng dụng rộng rãi trong mọi lĩnh vực
kinh tế, chính trị, xã hội, y tế và giáo dục,…. Đóng vai trò rất quan trọng trong quá
trình chuyển dịch nền kinh tế, xã hội, làm thay đổi đáng kể về lối sống, phong cách
làm việc và nhận thức trong công việc.
Với sự phát triển vượt bậc trong lĩnh vực công nghệ mạng đã cho ra đời nhiều
dịch vụ từ xa, đặc biệt là sự ra đời của dịch vụ “application as a service”. Các giao
dịch, tương tác, giao tiếp với nhau đều thông qua môi trường Internet. Điều này đã
biến công nghệ thông tin trở thành một công cụ không thể thiếu được trong sự phát
triển của mọi lĩnh vực, mọi ngành nghề.
Cùng với sự phát triển đó thì có hàng loạt các ngôn ngữ và các giao thức giao
tiếp, thiết kế trang web cũng ra đời để phục vụ cho những mục đích, dịch vụ nhất
định. Có nhiều ngôn ngữ đã phát triển phổ biến như HTML, DHTML, Java, PHP,
ASP,…. mỗi loại ngôn ngữ cũng đều có ưu và nhược điểm riêng.
XML trở nên phổ biến có rất nhiều nguyên nhân. Điểm quan trọng nhất là
XML cho phép dễ dàng xử lý, chuyển tải và trao đổi dữ liệu giữa nhiều ứng dụng và
tài liệu, người dùng với các định dạng khác nhau.
Nhận thấy tính thiết thực của vấn đề này và được sự gợi ý của giảng viên
hướng dẫn, em đã chọn đề tài “Nghiên cứu cách chuyển đổi cơ sở dữ liệu quan hệ
và XML, ứng dụng vào hệ thống quản lý thư viện” làm đề tài cho luận văn thạc sĩ
của mình.
2. Mục tiêu nghiên cứu
- Tìm hiểu về XML và cách định dạng các tài liệu XML
- Nghiên cứu XML để đơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống
khác nhau, đặc biệt là các hệ thống được kết nối với Internet.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
10
- Nghiên cứu các thuật toán chuyển đổi một cơ sở dữ liệu quan hệ thành một
cơ sở dữ liệu dạng XML và ngược lại chuyển một cơ sở dữ liệu dạng XML về một
cơ sở dữ liệu quan hệ.
3. Phƣơng pháp nghiên cứu
- Nghiên cứu qua các tài liệu như: sách, các bài báo, thông tin trên các website
và các tài liệu liên quan.
- Phân tích, tổng hợp lý thuyết và giới thiệu các thuật toán chuyển đổi một cơ
sở dữ liệu quan hệ sang dạng tài liệu XML và ngược lại.
- Ứng dụng ngôn ngữ lập trình C# trong môi trường ASP.NET để triển khai
xây dựng một chương trình ứng dụng demo về việc “Quản lý thư viện” tại Thư viện
Trường Cao đẳng Công nghiệp Nam Định.
4. Tổng quan luận văn
Luận văn được trình bày theo hình thức từ trên xuống. Bắt đầu của mỗi phần
đều đưa ra những khái niệm cơ bản và quy định cho phần trình bày tiếp sau nhằm
mục đích giúp dễ dàng trong khi đọc, dần dần đi sâu vào để thảo luận rõ hơn những
vấn đề liên quan.
Luận văn được trình bày trong 3 chương và phần kết luận
Chƣơng 1: Tổng quan về XML và cơ sở dữ liệu quan hệ
Trình bày tổng quan về cấu trúc một tài liệu XML, định nghĩa kiểu tư liệu
DTD, lược đồ, mô hình đối tượng tài liệu DOM, phân tích tài liệu XML theo mô
hình DOM và các khái niệm cơ sở về cơ sở dữ liệu (CSDL) quan hệ.
Chƣơng 2: Chuyển đổi giữa cơ sở dữ liệu quan hệ và XML
Giới thiệu phương pháp luận chuyển một tài liệu XML sang một CSDL quan
hệ và ngược lại. Đưa ra thuật toán chuyển đổi giữa cơ sở dữ liệu quan hệ và XML.
Chƣơng 3: Thực nghiệm
Trình bày việc cài đặt thuật toán bằng ngôn ngữ lập trình C# trong môi trường
ASP.NET, trên cơ sở xây dựng ứng dụng “Quản lý thư viện” tại thư viện trường
Cao đẳng Công nghiệp Nam Định
Kết luận: Tóm tắt các nội dung chính, các kết quả đạt được và hướng nghiên
cứu tiếp theo của luận văn.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
11
CHƢƠNG 1
TỔNG QUAN VỀ XML VÀ CƠ SỞ DỮ LIỆU QUAN HỆ
1.1. Tổng quan về XML
1.1.1. Giới thiệu về XML
XML (viết tắt từ tiếng Anh eXtensible Markup Language, "Ngôn ngữ Đánh
dấu Mở rộng") [1] là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị, để
tạo ra các ngôn ngữ đánh dấu khác. Đây là một tập con đơn giản của SGML, có khả
năng mô tả nhiều loại dữ liệu khác nhau. Mục đích chính của XML là đơn giản hóa
việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các hệ thống được kết
nối với Internet. Các ngôn ngữ dựa trên XML (thí dụ: RDF, RSS, MathML,
XHTML, SVG, GML và cXML) được định nghĩa theo cách thông thường, cho
phép các chương trình sửa đổi và kiểm tra hợp lệ bằng các ngôn ngữ này mà không
cần có hiểu biết trước về hình thức của chúng.
1.1.2. Mục tiêu ra đời của tài liệu XML
Mục tiêu ra đời của XML là phải tương thích với SGML, dễ dàng viết những
chương trình để xử lý cho những tài liệu XML. Tiếp theo, là những tài liệu viết bởi
XML phải rõ ràng, dễ đọc và dễ tạo lập. Và điều quan trọng nhất là nó được hỗ trợ
trong nhiều ứng dụng. Nói tóm lại, XML dễ dàng chia sẻ dữ liệu với những định
dạng khác nhau.
1.1.3. Các lợi ích khi sử dụng XML
Từ khi ra đời và phát triển, XML phải trải qua nhiều thử thách trong việc
thuyết phục các nhà lập trình sử dụng XML là sự lựa chọn hàng đầu vì nó dễ đọc,
dễ hiểu và dễ thực hiện bằng cách đưa ra một số lợi ích sau:
- XML được 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ó thể tách rời dữ liệu, có nghĩa là dữ liệu được chứa trong các tập tin
XML riêng biệt.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
12
- XML có thể được dùng để chuyển đổi dữ liệu giữa các hệ thống không tương
thích với nhau.
- XML dùng để mô tả rất tường minh thông tin của các đối tượng phức tạp mà
cơ sở dữ liệu không làm được.
1.2. Cấu trúc tài liệu XML
1.2.1. Định nghĩa tài liệu XML
Một tài liệu HTML có thể tồn tại một số thẻ không đúng quy định thì trình
biên dịch sẽ bỏ qua những thẻ này. Tuy nhiên với một tài liệu XML thì điều này
không thể xảy ra. Khi xây dựng một tài liệu XML, nó phải tuân thủ theo một số quy
luật nhất định. Những tài liệu XML tuân thủ đúng những quy luật này được gọi là
định dạng đúng. Với một tài liệu không phải là định dạng đúng, Internet Explorer sẽ
thông báo lỗi khi nạp tài liệu này [8].
Một tài liệu XML định dạng đúng [11] chưa chắc là một tài liệu hợp lệ. Một
tài liệu XML được xem là hợp lệ nếu nó đảm bảo những quy tắc đặc tả trong tài liệu
DTD hay giản đồ. Một DTD hay schema sẽ định nghĩa mọi thứ từ cấu trúc dữ liệu
tới kiểu dữ liệu, những thuộc tính được yêu cầu, và những ràng buộc về thành phần
và thuộc tính được kết hợp trong tài liệu.
Tài liệu XML có thể được soạn thảo bởi các hệ soạn thảo thông thường như:
Notepad, EditPlus, hay các trình soạn thảo chuyên dụng của XML như: XML
Notepad, XMLWriter, XML Spy, [8].
1.2.2. Cấu trúc tài liệu XML
Tài liệu XML chỉ chứa đựng dữ liệu và cách lưu trữ dữ liệu mà không hề đề
cập tới cách thức trình bày dữ liệu. Một tài liệu XML sẽ chứa những đặc tả về cấu
trúc dữ liệu. Mỗi cấu trúc gồm nhiều phần tử (element), mỗi thành phần được bắt
đầu với một thẻ bắt đầu (Start-tag) và kết thúc với một thẻ kết thúc (End-tag). Giữa
Start-tag và End-tag là nội dung của phần tử này. Nội dung có thể bao gồm dữ liệu
văn bản hay có thể là một phần tử khác.
Một tài liệu XML có thể được chia thành 2 thành phần chính, mỗi thành phần
có thể có các thành phần theo quy định khác nhau.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
13
Phần khởi đầu (PROLOG) chứa các khai báo trong tài liệu XML như : khai
báo phiên bản sử dụng của XML, cách thức mã hóa dữ liệu, chỉ thị xử lý, định
nghĩa kiểu tư liệu cho tài liệu DTD, các chú thích, các khoảng trắng. Chuẩn XML
không bắt buộc phải khai báo phần mở đầu của XML.
Phần thân (BODY) của tài liệu chứa nội dung của dữ liệu bao gồm một hay
nhiều thành phần (bắt buộc phải có ít nhất một thành phần), những thành phần này
bao gồm các phần tử (element). Mỗi phần tử bao gồm một cặp thẻ (thẻ bắt đầu và
thẻ kết thúc). Phần tử đầu tiên của tài liệu được coi là phần tử gốc (root element).
Tất cả các tài liệu XML được gọi là hợp khuôn dạng nếu chứa đựng duy nhất một
phần tử gốc. Phần tử gốc chứa đựng tất cả các phần tử và các cặp thẻ khác trong tài liệu.
Hình 1.1: Cấu trúc tài liệu XML
1.2.3. Các thành phần cơ bản của tài liệu XML
1.2.3.1. Định dạng và dữ liệu kí tự
Tài liệu XML được cấu thành từ phần định dạng và phần dữ liệu kí tự. Trong
tài liệu XML, định dạng giúp phân biệt các thành phần khác nhau trong tài liệu
XML hay các nút khác nhau trong cây XML. Định dạng bao gồm các thẻ bắt đầu,
thẻ kết thúc, các phần tử thẻ rỗng, các tham chiếu thực thể, tham chiếu kí tự, các
chú thích, phân đoạn CDATA, khai báo kiểu tài liệu và chỉ thị xử lý. Tất cả các dữ
liệu còn lại trong tài liệu XML không phải là định dạng đều được xem là dữ liệu kí
tự [8].
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
14
1.2.3.2. Các khai báo trong thẻ XML
Một tài liệu XML có thể bắt đầu bởi khai báo cho biết tài liệu được viết theo
định dạng và đặc tả XML. Khai báo thẻ XML là không bắt buộc trong tài liệu XML,
nếu sử dụng khai báo thẻ XML thì khai báo này bắt buộc phải được đặt ở dòng đầu
tiên của tài liệu XML. Khai báo thẻ XML trong tài liệu được định nghĩa theo cú
pháp sau [8]:
< ?xml [các thuộc tính của thẻ XML] ? >
Trong đó : [các thuộc tính của thẻ XML] gồm version, encoding, và
standalone (tức là bao gồm các phiên bản, mã hoá và thực thể độc lập).
Hoặc có thể được định nghĩa theo cú pháp sau :
<?xml Ten_1=”Gia_tri_1” Ten_2=”Gia_tri_2” … ?>
Trong đó : Ten_1, Ten_2, … là các tên của các tham số
Gia_tri_1, Gia_tri_2, … là các giá trị tương ứng.
Hiện nay có 3 tham số đuợc dùng là version, encoding, và standalone. Tham
số version bắt buộc phải có nếu các tham số khác đuợc sử dụng
- Khai báo phiên bản: khai báo này cho biết phiên bản đặc tả XML mà tài
liệu sử dụng (khai báo này là tùy chọn nhưng W3C khuyến cáo nên sử dụng khai
báo này).
Ví dụ 1.1: < ?xml version=”1.0” ? >
(Cho biết tài liệu dùng phiên bản XML 1.0)
- Khai báo mã hóa: bộ mã được sử dụng trong tài liệu XML phổ biến nhất là
UTF-8. Ngoài ra có thể sử dụng các bộ mã khác như Unicode, UCS-2, USC-4,
(khai báo này là tùy chọn).
Ví dụ 1.2 : Tài liệu XML sử dụng cách mã hóa Unicode ký hiệu utf-8
< ?xml version=”1.0” encoding=”utf-8” ? >
- Khai báo thực thể độc lập: được đặt thuộc tính là „yes‟ nếu tài liệu không
tham chiếu đến các thực thể khác bên ngoài, ngược lại được đặt là „no‟ (khai báo
này là tùy chọn).
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
15
Ví dụ 1.3: Tài liệu XML dùng phiên bản XML 1.0, sử dụng cách mã hóa
Unicode ký hiệu utf-8 và không có tham chiếu với các tài liệu khác :
< ?xml version=”1.0” encoding=”utf-8” standalone=”yes” ? >
1.2.3.3. Chỉ thị xử lý
- Các chỉ thị xử lý được dùng để chỉ dẫn cho bộ phân tích cách xử lý tài liệu
XML trong quá trình phân tích. Những chỉ thị này thường bắt đầu bằng dấu <? kết
thúc cũng bằng dấu ?>. Chẳng hạn, khi chỉ thị yêu cầu bộ phân tích kết hợp dữ liệu
của XML với bảng định kiểu CSS thì ta phải khai báo như sau <?xml-stylesheet?>.
- Chỉ thị xử lý có dạng khai báo chung như sau :
<? Bo_xu_ly Du_lieu ?>
Trong đó :
Bo_xu_ly : là ký hiệu của bộ xử lý sẽ tiến hành một số xử lý nào đó trên tài
liệu XML .
Du_lieu : là thông tin được gởi đến Bo_xu_ly
Ví dụ 1.4: Chỉ thị sau kết nối bảng định kiểu Vidu.css vào tài liệu XML
< ?xml-stylesheet type =”text/css” href=”vidu.css”? >
- Thẻ này sẽ có ý nghĩa với một số trình duyệt Web như IE ( phiên bản 5.0 về
sau ), Netscape ( phiên bản 6.0 về sau)
1.2.3.4. Phần chú thích
Chú thích trong tài liệu XML tương tự như chú thích trong tài liệu HTML [8].
Khi diễn dịch nội dung tài liệu, trình biên dịch sẽ bỏ qua những dòng chú thích. Chú
thích trong tài liệu XML được đặt trong cặp kí tự <! Nội dung chú thích trong
XML >.
Ví dụ 1.5: <?xml version=”1.0” encoding=”utf-8” ?>
< ! phan khai bao >
<document>
< ! phan noi dung >
</document>
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
16
Khi thêm các dòng chú thích vào trong tài liệu XML cần phải đảm bảo một số
quy tắc sau:
- Chú thích không được đặt trước các khai báo.
- Không được đặt chú thích vào bên trong phần định dạng.
Ví dụ 1.6: cách dùng chú thích sau là không hợp lệ
< ! phan khai bao >
<?xml version=”1.0” encoding=”utf-8” ?>
<document>
</document>
1.2.3.5. Thẻ và các phần tử
Cấu trúc tài liệu XML dựa trên các thành phần định dạng, các thành phần này
bao gồm nhiều phần tử. Mỗi phần tử thường bao gồm một cặp thẻ bắt đầu và thẻ kết
thúc. Ngoại trừ các phần tử rỗng sẽ được định nghĩa bằng một thẻ. Thẻ bắt đầu (thẻ
mở) bắt đầu bằng kí tự < và kết thúc bằng kí tự >. Thẻ kết thúc (thẻ đóng) bắt đầu
bằng cặp kí tự </ và kết thúc bằng kí tự >.
Tên thẻ có thể bắt đầu bằng kí tự chữ hoặc dấu gạch dưới (_) hoặc dấu hai
chấm (:). Các kí tự kế tiếp có thể là kí tự số, chữ, gạch dưới, dấu chấm, dấu hai
chấm nhưng không được là khoảng trắng [8].
Ví dụ 1.7: Các tên thẻ sau là hợp lệ
<DOCUMENT>
<document>
<Chapter15>
<Section-19>
<_text>
Mỗi phần tử trong cùng một tài liệu XML là duy nhất. Bộ phân tích tài liệu
XML phân biệt chữ hoa và chữ thường nên khi đặt tên cho các thẻ và thuộc tính thì
cần phải phân biệt chữ hoa và chữ thường. Do đó <DOCUMENT> khác với
<document>
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
17
Phần tử rỗng: là phần tử mà chỉ có một thẻ duy nhất và được đặt trong cặp dấu < />.
Ví dụ 1.8 : Trong tài liệu XML sau thì phần tử <heading> là phần tử rỗng :
<?xml version=”1.0” encoding=”utf-8” ?>
<document>
<heading/>
<subject>
Chao mung cac ban
</subject>
</document>
Phần tử rỗng có thể có thuộc tính :
Ví dụ 1.9 : Trong tài liệu XML sau thì phần tử rỗng <heading> có thuộc tính
là color:
<?xml version=”1.0” encoding=”utf-8” ?>
<document>
<heading color=”ff0000” />
<subject>
Chao mung cac ban
</subject>
</document>
Phần tử gốc: là phần tử chứa đựng tất cả các phần tử và các cặp thẻ khác trong
tài liệu. Phần tử gốc được xem là phần rất quan trọng trong cấu trúc của tài liệu
XML. Trong ví dụ trên phần tử <document>là phần tử gốc của tài liệu
1.2.3.6. Thuộc tính
Thuộc tính của các thẻ trong tài liệu XML tương tự như thuộc tính của các thẻ
HTML[8]. Thuộc tính được kết hợp theo từng cặp tên và giá trị. Thuộc tính cho
phép xác định thêm thông tin của thẻ. Thuộc tính được đặt trong thẻ mở và thẻ rỗng.
Sử dụng dấu bằng (=) để gán giá trị cho thuộc tính.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
18
Thuộc tính luôn được gán giá trị là kiểu text, giá trị của thuộc tính phải đặt
trong cặp dấu nháy kép “”. Tuy nhiên, nếu giá trị chuỗi truyền cho thuộc tính có dấu
nháy kép ta có thể sử dụng nháy đơn để thay thế.
Ví dụ 1.10: <poem title=„Bai tho”Em trước mùa xuân” của Hoàng Trung Thủy„ >
1.2.3.7. Phân đoạn CDATA
Phân đoạn CDATA cũng là một phần tử trong tài liệu XML nhưng chỉ gồm
một thẻ. Thẻ này bắt đầu bằng <![CDATA và kết thúc bằng ]>. Toàn bộ nội dung
được đặt trong phân đoạn CDATA sẽ không được trình phân tích coi như cấu trúc
XML mà chúng chỉ được xem như là dữ liệu thuần túy [8].
1.2.3.8. Không gian tên gọi
XML cho phép tự định nghĩa và đặt tên cho các thẻ [8]. Nếu tài liệu XML chỉ
sử dụng cho một mục đích nào đó và không cần phải kết hợp với các tài liệu XML
khác thì điều này không cần thiết. Nhưng một khi các ứng dụng phát triển, tập định
nghĩa các thẻ XML cần chia sẻ và kết hợp với nhau thì đó là một vấn đề cần phải
quan tâm.
Để định nghĩa không gian tên gọi cho các thẻ, ta đưa vào thuộc tính
xmlns:prefix="yournamespace" vào gốc phần tử. Trong đó prefix là tên miền hay
tiền tố mà ta muốn dùng cho không gian tên, yournamespace là không gian tên gọi
mà ta muốn chỉ định, mỗi không gian tên gọi có một định danh duy nhất (có thể là
định danh URL hoặc URI). Sau đó sử dụng không gian tên gọi này cho tất cả các
thẻ trong tài liệu XML mà ta muốn chúng thuộc không gian tên gọi đã định nghĩa
theo cú pháp: <prefix:TagName> đối với thẻ mở và </prefix:TagName> đối với
thẻ đóng.
Ví dụ 1.11: Cho tài liệu XML chưa định nghĩa không gian tên gọi sau:
<?xml version="1.0" encoding="utf-8" ?>
<DanhSach_DG> <! DG: Độc giả >
<Docgia Madg="B001">
<Tendg>
Lê Thị Ánh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
19
</Tendg>
<GioiTinh>
Nữ
</GioiTinh>
<Namsinh>
1992
</Namsinh>
<DiaChi>
Thái Bình
</DiaChi>
<Nghenghiep>
Sinh viên
</Nghenghiep>
<Khoa>
Kinh tế
</Khoa>
<Lop>
CĐ51KT1
</Lop>
<DienThoai>
0123660672
</DienThoai>
</Docgia>
</DanhSach_Dg>
Giả sử nếu ta sử dụng không gian tên gọi " với tiền
tố là ds cho ví dụ trên, ta sẽ sử dụng như sau:
<?xml version="1.0" encoding="utf-8" ?>
<DanhSach_HV> <! HV: Độc giả >
<xmlns:ds="
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
20
<Docgia Madg="B001">
<Tendg>
Lê Thị Ánh
</Tendg>
<GioiTinh>
Nữ
</GioiTinh>
<Namsinh>
20/07/1992
</Namsinh>
<DiaChi>
Thái Bình
</DiaChi>
<Nghenghiep>
Sinh viên
</Nghenghiep>
<Khoa>
Kinh tế
</Khoa>
<Lop>
CĐ51KT1
</Lop>
<DienThoai>
0123660672
</DienThoai>
</Docgia>
</DanhSach_Dg>
Khi đó, việc sử dụng không gian tên gọi cho tất cả các thẻ trong tài liệu XML
như sau:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
21
<?xml version="1.0" encoding="utf-8" ?>
<DanhSach_DG> <! DG: Độc giả >
<xmlns:ds="
<ds:Docgia Madg="B001">
<ds:Tendg>
Lê Thị Ánh
</ds:Tendg>
<ds:GioiTinh>
Nữ
</ds:GioiTinh>
<ds:Namsinh>
1992
</ds:Namsinh>
<ds:DiaChi>
Thái Bình
</ds:DiaChi>
<ds:Nghenghiep>
Sinh viên
</ds:Nghenghiep>
<ds:Khoa>
Kinh tế
</ds:Khoa>
<ds:Lop>
CĐ51KT1
</ds:Lop>
<ds:DienThoai>
0123660672
</ds:DienThoai>
<ds:/Docgia>
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
22
</ds:DanhSach_Dg>
1.2.4. Cấu trúc một tài liệu XML hợp khuôn dạng
Một tài liệu XML được coi là một tài liệu hợp khuôn dạng nếu tuân theo các
quy tắc sau [8]:
- Các khai báo XML phải được đặt ở dòng đầu tiên của tài liệu. Khai báo chỉ
thị xử lý XML đầu tiên không bắt buộc, tuy nhiên nếu sử dụng thì phải đặt chúng ở
ngay dòng đầu tiên của tài liệu. Nếu không theo yêu cầu này thì tài liệu XML được
xem là không hợp lệ.
- Một tài liệu XML chỉ có duy nhất một phần tử gốc, các phần tử khác nếu có
phải là con của phần tử gốc.
- Mọi phần tử XML khác rỗng phải bao gồm đầy đủ thẻ đóng và thẻ mở.
Trong tài liệu XML hợp khuôn dạng, mọi thẻ mở (ngoại trừ thẻ rỗng) phải có thẻ
đóng tương ứng. Nếu bộ phân tích XML phát hiện một phần tử bị thiếu thẻ đóng
hay thẻ mở thì quá trình phân tích, biên dịch tài liệu sẽ bị kết thúc.
- Đóng phần tử rỗng với chuỗi />. Phần tử rỗng là phần tử chỉ có một thẻ. Dấu
kết của phần tử rỗng phải là /> nếu không tài liệu sẽ được coi là không hợp khuôn
dạng.
- Mọi phần tử trong tài liệu XML khác phần tử gốc đều phải nằm giữa cặp thẻ gốc.
- Các phần tử lồng nhau phải có thẻ đóng, mở tương ứng đúng vị trí.
- Chỉ nên sử dụng 5 tham chiếu thực thể được định nghĩa trước trong XML.
Trong ngôn ngữ định dạng XML, một số kí tự nhận dạng đặc biệt như <, >, „, “, và
& không thể sử dụng trong tài liệu theo cách thể hiện dữ liệu thông thường. Muốn
sử dụng những kí hiệu này phải dùng tham chiếu thực thể đã được XML định nghĩa
trước như sau:
Bảng 1.1: Bảng tham chiếu thực thể trong XML
Tham chiếu thực thể
Ý nghĩa tƣơng ứng
&
&
<
<
>
>
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
23
'
„
"
“
Ví dụ 1.12: Giá trị thời gian là 50‟ 11‟‟
<date time="50'11""/>
- Sử dụng tên thuộc tính là duy nhất. Các thẻ trong thuộc tính không được đặt
cùng tên.
Ví dụ 1.13: Tài liệu sau vi phạm ràng buộc này
<message text = "Hi there" text = "Hello" >
- Tất cả các giá trị của thuộc tính đều phải nằm trong cặp dấu nháy kép (“)
hoặc nháy đơn („).
- Chỉ nên sử dụng kí tự < và & đối với thẻ mở và các thực thể.
1.2.5. Định nghĩa kiểu tài liệu DTD
Khi định nghĩa thẻ XML, ta tùy ý quyết định cách sử dụng chúng. Ta có thể
quyết định thẻ chỉ chứa nội dung là dữ liệu văn bản thuần túy hoặc có thể chứa các
phần tử con khác. Tuy nhiên, để tài liệu rõ ràng ta nên định nghĩa kiểu tài liệu mà
mỗi phần tử sẽ biểu diễn.
Một tài liệu XML được coi là hợp lệ và có giá trị khi toàn bộ các phần tử trong
tài liệu được định nghĩa kiểu mà nó sẽ chứa.
Định nghĩa kiểu tài liệu DTD phải theo cú pháp quy định của tổ chức XML
W3C. Sử dụng thẻ khai báo <!DOCTYPE> để bắt đầu định nghĩa cho các phần tử
XML. Mẫu khai báo như sau:
<!DOCTYPE rootname [DTD]>
Trong đó:
- DOCTYPE : là một phần của phần mở đầu tài liệu.
- DTD : là định nghĩa cho các phần tử trong tài liệu.
- rootname : Tên phần tử gốc.
Mỗi phần tử được định nghĩa theo cú pháp sau:
<!ELEMENT NAME CONTENT_MODEL>
Trong đó:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
24
- NAME : là tên của phần tử muốn định nghĩa.
- CONTENT_MODEL : có thể được đặt là EMPTY hay ANY hoặc trộn
lẫn cả hai nội dung (bao gồm dữ liệu có thể dùng phân tích hoặc các phần tử
con khác).
Ví dụ 1.14: khai báo và định nghĩa DTD trong tài liệu XML:
<?xml version="1.0" standalone="yes" encoding="UTF-8" ?>
<!DOCTYPE DanhSach_DG[
<!ELEMENT DanhSach_DG(Docgia)*>
<!ELEMENT HocVien(MaDG, Tendg, GioiTinh, Namsinh, DiaChi,
Nghenghiep, Khoa,Lop, Dienthoai)>
<! ELEMENT Madg(#PCDATA)>
<! ELEMENT Tendg(#PCDATA)>
<! ELEMENT Gioitinh(#PCDATA)>
<! ELEMENT Namsinh(#PCDATA)>
<! ELEMENT DiaChi(#PCDATA)>
<! ELEMENT Nghenghiep(#PCDATA)>
<! ELEMENT Khoa(#PCDATA)>
<! ELEMENT Lop(#PCDATA)>
<! ELEMENT Dienthoai(#PCDATA)>
]>
<DanhSach_DG> <! HV: Độc giả >
<Docgia Madg="B001">
<Tendg>
Lê Thị Ánh
</Tendg>
<GioiTinh>
Nữ
</GioiTinh>
<Namsinh>
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
25
1992
</Namsinh>
<DiaChi>
Thái Bình
</DiaChi>
<Nghenghiep>
Sinh viên
</Nghenghiep>
<Khoa>
Kinh tế
</Khoa>
<Lop>
CĐ51KT1
</Lop>
<DienThoai>
0123660672
</DienThoai>
</Docgia>
</DanhSach_Dg>
1.2.6. Lƣợc đồ XML
XML Schema là một tài liệu XML được viết dưới dạng thức thuần văn bản
với phần mở rộng .xsd. Tài liệu này mở đầu bằng khai báo chuẩn XML, tiếp theo
dùng tiếp đầu ngữ xsd: để khai báo không gian tên XML Schema, theo cú pháp sau :
<?xml version = “1.0” ?>
<xsd:schema xmlns:xsd = http : // www.w3.org/1999/XMLSchema>
…………
</xsd:schema>
Để chương trình xử lý XML có thể sử dụng tập tin lược đồ (.xsd) cho tài liệu
XML, thì các bộ xử lý phải có cách cài đặt cụ thể của riêng nó để nhận ra lược đồ đi
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên