Vũ Thị Tuyết - CNTT
LỜI CAM ĐOAN
Tôi xin cam đoan, kết quả của luận văn là kết quả do bản thân tôi tự tìm
hiểu, nghiên cứu và tổng hợp từ nhiều nguồn tài liệu khác nhau. Luận văn tốt
nghiệp là kết quả của quá trình học tập, nghiên cứu và thực hiện hoàn toàn
nghiêm túc, trung thực của bản than. Các tài liệu tham khảo được trích dẫn và
chú thích đầy đủ.
Thái Nguyên, ngày 15/10/2010.
Người cam đoan
Vũ Thị Tuyết
LỜI CẢM ƠN
Trước tiên tôi xin gửi lời cảm ơn chân thành nhất đến thầy PGS. TS
Đoàn Văn Ban đã định hướng và nhiệt tình hướng dẫn, giúp đỡ tôi rất nhiều
về mặt chuyên môn trong quá trình làm luận văn.
Tôi xin gửi lời biết ơn sâu sắc đến các thầy, các cô đã dạy dỗ và truyền
đạt những kinh nghiệm quý báu cho chúng tôi trong suốt hai năm học cao học
tại khoa Công nghệ thông tin - Đại học Thái Nguyên.
Tôi xin cảm ơn bạn bè, đồng nghiệp và gia đình, những người luôn gần
gũi động viên, chia sẻ cùng tôi trong suốt thời gian làm luận văn tốt nghiệp.
Thái Nguyên, tháng 11 năm 2010.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
i
MỤC LỤC
Trang
Trang phụ bìa
Lời cam đoan
Lời cảm ơn
MỤC LỤC i
DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT iii
MỞ ĐẦU 1
CHƢƠNG 1: TỔNG QUAN VỀ XML VÀ CƠ SỞ DỮ LIỆU QUAN HỆ 4
1.1 Tổng quan về XML 4
1.1.2 Cấu trúc của tài liệu XML 4
1.1.2.1 Tài liệu XML 4
1.1.2.2 Cấu trúc của tài liệu XML 5
1.1.3 Các thành phần cơ bản trong tài liệu XML 6
1.1.4 Cấu trúc tài liệu XML hợp khuôn dạng 11
1.1.5 Định nghĩa kiểu tài liệu DTD (Document Type Definition) 13
1.1.6 Lƣợc đồ XML (XML schema) 15
1.1.7 Bảng định kiểu CSS (Cascading Style Sheet) 16
1.1.8 Mô hình DOM (Document Object Model) 18
1.1.9 Phân tích tài liệu XML theo mô hình DOM 20
1.2 Cơ sở dữ liệu quan hệ 21
1.2.1 Cấu trúc cơ sở dữ liệu quan hệ 21
1.2.2 Ràng buộc toàn vẹn trên một cơ sở dữ liệu quan hệ 24
1.2.2.1 Định nghĩa 24
1.2.2.2 Các yếu tố của ràng buộc toàn vẹn 24
1.2.3 Chuẩn hóa một cơ sở dữ liệu quan hệ 25
1.3 Kết luận 27
CHƢƠNG 2: TÍCH HỢP CÁC HỆ THỐNG CƠ SỞ DỮ LIỆU QUAN HỆ
VÀ XML 28
2.1 Phƣơng pháp luận 28
2.1.1 Đối sánh nội dung của một CSDL quan hệ và một tài liệu XML 29
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
ii
2.1.2 Cấu trúc và kiểu cơ chế của một tài liệu XML và một lƣợc đồ
CSDL quan hệ. 31
2.1.3 Tên duy nhất 34
2.1.4 Các giá trị rỗng và các giá trị mặc định 35
2.1.5 Quan hệ 36
2.1.6 Thứ tự 38
2.2 Chuyển một tài liệu XML sang một cơ sở dữ liệu quan hệ 39
2.3 Chuyển một CSDL quan hệ thành một tài liệu XML 41
2.3.1 Phi chuẩn các lƣợc đồ quan hệ 42
2.3.2 Kết nối các CSDL đã phi chuẩn 45
2.3.3 Ánh xạ một CSDL quan hệ đã kết nối thành một DOM chính và
chuyển thành một tài liệu XML 47
2.4 Kết luận 51
CHƢƠNG 3: THUẬT TOÁN TÍCH HỢP CÁC HỆ THỐNG CƠ SỞ DỮ
LIỆU QUAN HỆ VÀ XML 52
3.1 Thuật toán 52
3.1.1 Đọc tài liệu XML dƣới dạng sơ đồ hình cây 52
3.1.2 Hiển thị tài liệu XML dƣới dạng bảng 54
3.1.3 Chuyển một CSDL quan hệ sang một tài liệu XML 55
3.2 Cài đặt thuật toán 55
3.3 Đánh giá kết quả 59
3.4 Kết luận 59
CHƢƠNG IV: CÀI ĐẶT THỬ NGHIỆM 60
4.1 Yêu cầu cài đặt: 60
- Phần mềm: 60
4.2 Giao diện của chƣơng trình nhƣ sau: 60
KẾT LUẬN 67
TÀI LIỆU THAM KHẢO 69
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
iii
DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT
CSDL
Cơ sở dữ liệu quan hệ
CSS
Cascading Style Sheets
DOM
Document Object Model
DTD
Document Type Definition
HTML
Hyperlink Text Markup Language
ODBC
Open Database Connectivity
SGML
Standard Generalized Markup Language
SQL
Structured Query Language
URL
Uniform Resource Locator
URI
Uniform Resource Identifier
W3C
World Wide Web Consortium
XML
eXtensible Markup Language
XSL
eXtensible Stylesheet Language
XSLT
eXtensible Stylesheet Language Transformations
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
1
MỞ ĐẦU
1. Lý do chọn đề tài
Hiện nay có rất nhiều các giao dịch, tƣơng tác thông qua Internet đƣợc
phát triển rầm rộ, 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 nhất định. Có thể kể
đến nhiều ngôn ngữ đã phổ biến nhƣ HTML, DHTML, Java, PHP, ASP,…
mỗi loại có ƣu và nhƣợc điểm riêng.
Ngôn ngữ XML (eXtensible Markup Language) mới phát triển trong
thời gian gần đây và đƣợc phổ biến rộng rãi (ở các ngôn ngữ .NET). Không
giới hạn và định nghĩa sẵn nhƣ HTML, XML cho phép ngƣời dùng tự định
nghĩa ra các thành phần riêng và mở rộng tuỳ ý.
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áo viên
hƣớng dẫn, em đã chọn đề tài “Tích hợp cơ sở dữ liệu quan hệ và XML” làm
đề tài cho luận văn tốt nghiệp của mình.
2. Mục đích nghiên cứu
Luận văn tập trung tìm hiểu về XML và mô hình DOM, phƣơng pháp
sử dụng mô hình DOM để chuyển một cơ sở dữ liệu quan hệ sang tài liệu
XML và ngƣợc lại.
3. Đối tƣợng nghiên cứu
Tìm hiểu về công nghệ XML.
Tìm hiểu về cơ sở dữ liệu quan hệ.
Cách chuyển đổi một tài liệu XML sang một cơ sở dữ liệu.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
2
Cách chuyển một cơ sở dữ liệu quan hệ sang một tài liệu XML.
4. Giả thiết khoa học
Nếu chúng ta sử dụng công nghệ XML thì chúng ta không những có thể
phát triển một tài liệu XML mới trong khi vẫn sử dụng các cơ sở dữ liệu đang
tồn tại mà còn có thể trích rút các dữ liệu từ các tài liệu XML.
5. Nhiệm vụ nghiên cứu
Nghiên cứu về XML.
Nghiên cứu giải pháp thực hiện chuyển đổi giữa XML và cơ sở dữ
liệu quan hệ.
Xây dựng đƣợc một ứng dụng cụ thể dựa trên các kết quả nghiên
cứu ở trên.
Đồng thời luận văn cũng mong muốn nêu ra đƣợc một số hƣớng
nghiên cứu tiếp theo căn cứ vào các kết quả đã đạt đƣợc.
6. Phạm vi nghiên cứu
Luận văn tập trung nghiên cứu các kiến thức có liên quan, các cơ sở lý
thuyết: tài liệu XML, mô hình DOM, lý thuyết cơ sở dữ liệu, thuật toán
chuyển đổi giữa cơ sở dữ liệu quan hệ và XML.
7. Phƣơng pháp nghiên cứu
Đọc tài liệu: sách, báo và các tài liệu liên quan.
Phân tích - tổng hợp lý thuyết và xây dựng 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.
Khai thác ngôn ngữ lập trình C# để viết chƣơng trình Demo.
Luận văn đƣợc trình bày gồm bốn chƣơng:
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ài liệu DTD,
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3
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: “Tích hợp các hệ thống cơ sở dữ liệu 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.
Chƣơng 3: “Thuật toán tích hợp các hệ thống cơ sở dữ liệu quan hệ và
XML” – Đƣa ra thuật toán tích hợp các hệ thống cơ sở dữ liệu quan hệ và
XML.
Chƣơng 4: “Cài đặt thử 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 trang web “Đăng ký học tín chỉ” của trƣờng Đại học Hàng Hải Việt
Nam.
Và phần cuối 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
4
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 công nghệ XML
XML (viết tắt từ tiếng Anh eXtensible Markup Language, “Ngôn ngữ
Đánh dấu Mở rộng”) [2], [11] 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 Cấu trúc của tài liệu XML
1.1.2.1 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
(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 nào đó. Những tài liệu XML tuân thủ đúng những quy
luật này đƣợc gọi là well-formed (tạm dịch là định dạng đúng). Với một tài
liệu không phải là well–formed, Internet Explorer sẽ thông báo lỗi khi nạp tài
liệu này.
Một tài liệu XML well–formed 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 Document Type Definition (DTD) hay giản đồ (schema). 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
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
5
hợp trong tài liệu. Phƣơng thức kiểm tra tài liệu này thƣờng đƣợc sử dụng
trong giao tiếp giữa ứng dụng – ứng dụng, đảm bảo dữ liệu trao đổi hợp lệ
tránh dẫn tới những ảnh hƣởng của dữ liệu không hợp lệ trên toàn hệ thống.
Tài liệu XML có thể viết bằng trình soạn thảo thông thƣờng (Notepad),
hay các trình soạn thảo chuyên dụng của XML: XML Notepad, XMLWriter,
XML Spy,
1.1.2.2 Cấu trúc của 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
phần tử đƣợ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.
Hình 1.1 Cấu trúc tài liệu XML
Phần mở đầ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ài liệu cho tài liệu DTD, các chú thích, các khoảng trắng.
Phần mở đầu
Phần nội dung
Khai báo
Mô tả cấu trúc tài liệu
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
6
Chuẩn XML không bắt buộc phải khai báo phần mở đầu của XML. Tuy nhiên
W3C khuyến khích chúng ta nên sử dụng phần khai báo này, ít nhất cũng là
phần khai báo phiên bản sử dụng 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.
1.1.3 Các thành phần cơ bản trong tài liệu XML
Định dạng và dữ liệu kí tự:
Tài liệu XML đƣợc tạo thành từ thành phần định dạng và thành 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ự, lời 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ự.
Các khai báo XML:
Một tài liệu XML có thể bắt đầu khai báo cho biết tài liệu đƣợc viết
theo định dạng và đặc tả XML. Nếu sử dụng khai báo XML, khai báo này
phải đƣợc đặt ở dòng đầu tiên của tài liệu. Không đƣợc khai báo XML sau bất
kỳ dòng nào khác. Khai báo XML trong tài liệu đƣợc viết theo cấu trúc:
< ?xml [các kiểu khai báo] ?>
Các khai báo trong XML gồm:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
7
Khai báo phiên bản (version): 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).
Khai báo mã hóa (encoding): bộ mã đƣợc sử dụng trong tài liệu XML
mặc định 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).
Khai báo thực thể độc lập (standalone): đƣợ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).
Phần chú thích:
Chú thích trong XML tƣơng tự với chú thích trong HTML. Khi diễn
dịch nội dung tài liệu, các bộ phân tích thƣờng bỏ qua những dòng chú thích.
Chú thích trong XML đƣợc đặt trong cặp kí tự < ! Nội dung chú
thích !>.
Cần tuân theo một số quy tắc khi thêm dòng chú thích vào tài liệu
XML :
Chú thích không đƣợc đặt trƣớc các khai báo.
Không đƣợc đặt trƣớc chú thích vào bên trong phần định dạng.
Không dùng chuỗi bên trong chú thích.
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 ?> tƣơng tự nhƣ phần khai báo.
Ví dụ: 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:
<?xml-stylesheet?>
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
8
Thẻ và các phần tử (element)
Cấu trúc tài liệu XML dựa trên các thành phần định dạng (markup).
Những thành phần này bao gồm các phần tử (element). Mỗi phần tử thƣờng
bao gồm một cặp thẻ, 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 (còn đƣợc gọi là thẻ mở) và bắt
đầu bằng kí tự < và kết thúc bằng kí tự >. Thẻ kết thúc (còn gọi là 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ự, gạch chân (_) hoặc dấu hai chấm (:).
Các kí tự kế tiếp có thể là kí tự, kí số, gạch chân, gạch nối, dấu chấm, dấu hai
chấm nhƣng không đƣợc là khoảng trắng.
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 và cần phân biệt chữ hoa và chữ thƣờng.
Phần tử rỗng: là phần tử chỉ có một thẻ duy nhất đƣợc đặt trong cặp dấu < />.
Phần tử gốc (root element): 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 XML.
Thuộc tính (attribute)
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. Thuộc tính đƣợc kết hợp theo cặp name = value. Thuộc tính
cho phép xác định thêm thông tin và thuộc tính của thẻ. Thuộc tính đƣợc đặt
trong thẻ mở và thẻ rỗng. Để gán giá trị cho thuộc tính thƣờng dùng dấu bằng (=).
Thuộc tính luôn đƣợc gán giá trị là kiểu text (do phần định dạng luôn là
văn bản text). Trong XML, 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 bao gồm luôn cả
dấu nháy kép ta có thể sử dụng nháy đơn thay thế.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
9
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.
Không gian tên (namespace)
XML cho phép tự định nghĩa và đặt tên cho các thẻ. 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 thành vấn đề. 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 sống chung và kết hợp với
nhau thì đó là một vấn đề.
Để định nghĩa không gian tên cho các thẻ, ta đƣa vào thuộc tính
xmlns:prefix vào gốc phần tử. Trong đó prefix là tên miền hay không gian tên
mà ta muốn chỉ định, mỗi không gian tên có một định danh duy nhất (có thể là
định danh URL hoặc URI). Sau đó áp dụng không gian tên 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 đã định nghĩa
theo cú pháp:
<prefix:TagName> đối với thẻ mở,
</prefix:TagName> đối với thẻ đóng.
Ví dụ 1.1: Cho một tài liệu XML chƣa định nghĩa không gian tên nhƣ sau:
<?xml version="1.0" encoding="utf-8" ?>
<Danh_Sach_SV>
<SinhVien SinhVienID="0001">
<TenSV>
Nguyen Thanh Nam
</TenSV>
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
10
<NganhHocID>
14
</NganhHocID>
<DiaChi>
Ha Noi
</DiaChi>
<DienThoai>
0986735461
</DienThoai>
</SinhVien>
</Danh_Sach_SV>
Không gian tên danhsachsv đƣợc tạo cho thƣ viện sau:
< Danh_Sach_SV>
xmlns:danhsachsv=
< SinhVien SinhVienID="0001">
<TenSV>
Nguyen Thanh Nam
</TenSV>
<NganhHocID>
14
</NganhHocID>
<DiaChi>
Ha Noi
</DiaChi>
<DienThoai>
0986735461
</DienThoai>
</Danh_Sach_SV>
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
11
Sau đó áp dụng không gian tên cho các thẻ trong tài liệu XML nhƣ sau:
<danhsachsv:Danh_Sach_SV>
xmlns:danhsachsv=
<danhsachsv:SinhVien SinhVienID="0001">
<danhsachsv:TenSV>
Nguyen Thanh Nam
</danhsachsv:TenSV>
<danhsachsv:NganhHocID>
14
</danhsachsv:NganhHocID>
<danhsachsv:DiaChi>
Ha Noi
</danhsachsv:DiaChi>
<danhsachsv:DienThoai>
0986735461
</danhsachsv:DienThoai>
</danhsachsv:SinhVien>
</danhsachsv:Danh_Sach_SV>
1.1.4 Cấu trúc 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:
Các khai báo XML cần đƣợ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 thực hiện đƣợc yêu cầu
này, tài liệu XML đƣợc xem là không hợp lệ.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
12
Tài liệu XML chỉ có 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ở (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 tài liệu sẽ kết thúc.
Đóng phần tử rỗng với chuỗi đóng />. 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 (root) đề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ở hợp vị trí.
Sử dụng tên thuộc tính là duy nhất. Các thuộc tính trong thẻ không đƣợc đặt
cùng tên.
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:
Tham chiếu thực thể
Ý nghĩa của kí tự tƣơng ứng
&
&
<
<
>
>
'
„
"
“
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
13
Bảng 1.1 Bảng tham chiếu thực thể trong XML
Bao giá trị thuộc tính bằng cặp dấu nháy. Tất cả các thuộc tính đƣợc thể
hiện ở dạng chuỗi và phải bao giá trị gán cho thuộc tính bằng cặp 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.1.5 Định nghĩa kiểu tài liệu DTD (Document Type Definition)
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 text 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 chú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 (type definition) mà nó sẽ chứa. Việc
định nghĩa kiểu tài liệu (DTD – Document Type Definition) cần theo cú pháp
quy định của tổ chức XML W3C.
Định nghĩa kiểu tài liệu DTD:
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 đó: DTD là định nghĩa cho các phần tử trong tài liệu.
Mỗi phần tử đƣợc định nghĩa theo cú pháp:
<!ELEMENT NAME CONTENT_MODEL>
Trong đó: 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.2: Khai báo và định nghĩa DTD trong tài liệu XML:
<?xml version="1.0" standalone=“yes” encoding="utf-8" ?>
<!DOCTYPE Danh_Sach_SV[
<!ELEMENT Danh_Sach_SV(SinhVien)*>
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
14
<!ELEMENT
SinhVien(SinhVienID,TenSV,NganhHocID,DiaChi,DienThoai)>
<! ELEMENT SinhVienID(#PCDATA)>
<! ELEMENT TenSV(#PCDATA)>
<! ELEMENT NganhHocID(#PCDATA)>
<! ELEMENT DiaChi(#PCDATA)>
<! ELEMENT DienThoai(#PCDATA)>
]>
<Danh_Sach_SV>
<SinhVien SinhVienID="0001">
<TenSV>
Nguyen Thanh Nam
</TenSV>
<NganhHocID>
14
</NganhHocID>
<DiaChi>
Ha Noi
</DiaChi>
<DienThoai>
0986735461
</DienThoai>
</SinhVien>
</Danh_Sach_SV>
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
15
1.1.6 Lược đồ XML (XML schema)
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 kèm với tài liệu XML. W3C cho phép khai báo không gian tên cho
tài liệu XML tham chiếu đến tập tin lƣợc đồ theo địa chỉ URL nhƣ sau:
<?xml version = “1.0” ?>
<rootElement xmlns = “URL”>
………
</rootElement>
XML Schema đƣợc Microsoft đề xuất để thay thế cho định kiểu tài liệu
(Document Type Definition - DTD), đƣợc sử dụng để định nghĩa kiểu tài liệu
cho các phần tử XML, vốn xuất thân từ SGML, khó sử dụng và có một số
nhƣợc điểm nhƣ không định nghĩa chính xác đƣợc các loại dữ liệu. XML
Schema có một số ƣu điểm:
Dễ học và dễ dùng hơn DTD.
Định nghĩa chính xác đƣợc các kiểu dữ liệu (data type) .
Có hệ thống không gian tên (NS) tốt hơn.
Dùng lại đƣợc các phần tử bằng cách thừa kế.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
16
1.1.7 Bảng định kiểu CSS (Cascading Style Sheet)
CSS là mô hình định nghĩa kiểu định dạng dùng cho việc hiển thị tài
liệu. Ta có thể dùng CSS để hiển thị tài liệu XML tƣơng tự các trang HTML.
CSS cho phép tách rời định dạng với nội dung dữ liệu. CSS tƣơng tự nhƣ một
tập mẫu (template) quy định các kiểu định dạng cho các phần tử trong XML
nhƣ định dạng về font chữ, màu chữ, màu nền, ….
Bảng định kiểu CSS đã đƣợc áp dụng trong tài liệu HTML, tuy nhiên
điểm khác biệt chủ yếu giữa việc áp dụng CSS vào HTML với việc áp dụng
CSS vào XML là các thẻ trong HTML thì có sẵn thông tin định dạng còn các
thẻ trong XML thì không có.
Bản chất của CSS là tạo ra một tập mẫu quy định các kiểu định dạng
cho các phần tử trong XML (hay các thẻ HTML) trong một file tách biệt với
tài liệu. Sau đó tập mẫu này đƣợc áp dụng vào trong tài liệu XML thông qua
xử lý:
<?xml-stylesheet type=“text/css” href=“filename.css” ?>
Trong đó filename là tên file chứa tệp mẫu quy định các định dạng cho
các phần tử trong tài liệu, file này có phần mở rộng là .css và nội dung là các
định dạng cho các phần tử trong tài liệu.
Nội dung định dạng của mỗi phần tử đƣợc định nghĩa theo cú pháp:
elementName{display:block;attName:attValue1;….;attNamen:attValue}
Trong đó:
elementName là tên phần tử cần định dạng,
display:block hiển thị thành phần theo cấp khối (bắt đầu ở đầu dòng và
các thành phần theo sau nó sẽ bắt đầu ở dòng tiếp theo), hoặc display:line sẽ
hiển thị thành phần theo nội dung.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
17
attName là tên thuộc tính và attValue là giá trị của thuộc tính. Nếu
muốn gom giá trị các thuộc tính định kiểu lại một nhóm (gọi là lớp) thay vì
định kiểu cho từng phần tử, ta sử dụng cú pháp sau:
.className{attName1:attValue1; ….; attNamen:attValuen}
Trong đó className là tên lớp và lớp này đƣợc sử dụng bên trong phần
tử cần định dạng thông qua thuộc tính theo cú pháp:
<elementName CLASS=“className”>
Ví dụ 1.3: Có tệp định dạng SinhVien.css nhƣ sau:
Danh_Sach_SV{background-color: #ffffff; width: 100%}
SinhVien{background-color: Green; width:100%}
SinhVienID{display:block; margin-bottom:30pt;margin-left:0}
TenSV{display:block; margin-bottom:30pt; margin-left:0}
NganhHocID{color:Maroon;font-size:20pt}
DiaChi{color:Maroon; font-size:20pt}
DienThoai{color:Maroon; font-size:20pt}
Và một tài liệu XML có nội dung nhƣ sau:
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type = "text/css" href = "SinhVien.css"?>
<Danh_Sach_SV>
<SinhVien SinhVienID="0001">
<TenSV>
Nguyen Thanh Nam
</TenSV>
<NganhHocID>
14
</NganhHocID>
<DiaChi>
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
18
Ha Noi
</DiaChi>
<DienThoai>
0986735461
</DienThoai>
</SinhVien>
</Danh_Sach_SV>
1.1.8 Mô hình DOM (Document Object Model)
Để xử lý tài liệu XML, W3C định nghĩa tài liệu theo mô hình hƣớng
đối tƣợng DOM (Document Object Model) [4], [10]. Theo mô hình này tài
liệu XML đƣợc tổ chức theo cấu trúc hình cây bao gồm các nút đối tƣợng, nội
dung của mỗi nút (node), trên cây có thể chứa phần tử (element), dữ liệu
(text), thuộc tính (attribute),… và các nút con khác. Cụ thể, trong mô hình
XML có các loại nút sau đây:
Nút
Ý nghĩa
Element
Phần tử XML
Attribute
Thuộc tính XML
Text
Dữ liệu text
CDATA section
Phân đoạn CDATA
Entity reference
Tham chiếu thực thể
Entity
Thực thể
Processing Instruction
Chỉ thị xử lý
Comment
Chú thích
Document
Tài liệu
Document Type
Kiểu tài liệu
Document fragment
Đoạn tài liệu
Notation
Ghi chú
Bảng 1.2 Các loại nút trong mô hình XML
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
19
Mô hình DOM đƣợc W3C định nghĩa theo nhiều cấp độ khác nhau. Cụ
thể là các cấp độ sau:
Level 0: là đặc tả XML không chính thức và đƣợc áp dụng cho các
trình duyệt trƣớc đây nhƣ Nestcape Navigator 3.0 và IE 3.0.
Level 1: Tập trung vào kết hợp giữa tài liệu HTML và XML.
Level 2: Hỗ trợ không gian tên XML, khung nhìn có lọc (filtered
views) và các sự kiện DOM.
Level 3: Nâng cao các khả năng của DOM với việc cho phép nạp, xử
lý, lƣu lại mô hình cho nội dung tài liệu.
Ví dụ 1.4: Cho một tài liệu XML sau:
<?xml version="1.0" encoding="utf-8" ?>
<SinhVien>
<SinhVienID>
0001
</SinhVienID>
<TenSV>
Nguyen Thanh Nam
</TenSV>
<NganhHocID>
14
</NganhHocID>
<DiaChi>
Ha Noi
</DiaChi>
<DienThoai>
0986735461
</DienThoai>
</SinhVien>
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
20
Theo mô hình DOM, tài liệu XML trên đƣợc tổ chức theo cấu trúc cây sau:
1.1.9 Phân tích tài liệu XML theo mô hình DOM
W3C định nghĩa tài liệu theo mô hình DOM. Về cơ bản DOM là giao
diện trình ứng dụng API (Application Progam Interface) không phụ thuộc vào
ngôn ngữ và chƣơng trình, cho phép các chƣơng trình và các kịch bản truy
cập và cập nhật tự động nội dung, cấu trúc và kiểu của các tài liệu XML cũng
nhƣ HTML.
Với mô hình DOM, một tài liệu XML có thể đƣợc phân tích: tạo, duyệt,
thêm, loại bỏ, thay đổi các phần tử thông qua các ngôn ngữ nhƣ: Java,
JavaScript, Visual Studio.NET, C/C++, …. Dù sử dụng ngôn ngữ nào để phân
tích thì ta cũng phải sử dụng tới các phƣơng thức mà DOM cung cấp đƣợc liệt
kê trong bảng sau:
Phƣơng thức
Ý nghĩa
documentElement
Lấy về nút gốc của tài liệu DOM
parentNode
Lấy nút cha của nút hiện tại
firstChild
Lấy nút con đầu tiên
previousChild
Lấy nút con trƣớc đó
nextChild
Lấy nút con kế tiếp
lastChild
Lấy nút con cuối cùng
firstSibling
Lấy nút con cùng cấp đầu tiên
SinhVien
SinhVien
SinhVienID
TenSV
NganhHocID
DiaChi
DienThoai
0001
Nguyen Thanh Nam
14
Ha Noi
0986735461