Tải bản đầy đủ (.docx) (73 trang)

Chuyển đổi dữ liệu từ XML sang cơ sở dữ liệu quan 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 (1.63 MB, 73 trang )

LỜI CẢM ƠN
Lời đầu tiên, em xin chân thành cảm ơn Trường Đại học công nghệ thông tin
và truyền thông, Đại học Thái Nguyên đã tạo điều kiện thuận lợi cho phép em
thực hiện hiện đề tài này.
Đặc biệt em xin chân thành cảm ơn tới ThS.Hà Thị Thanh đã rất tận tình
định hướng và chỉ dẫn rất nhiệt tình trong thời gian vừa qua.
Em cũng xin chân thành cảm ơn các thầy cô trong bộ môn đã tận tình giảng
dạy, hướng dẫn cho chúng em những kiến thức cần thiết trong 5 năm đã học tập
tại trường.
Mặc dù em đã cố gắng nhưng với kiến thức còn hạn chế, trong quá trình làm
đề tài không tránh khỏi những thiếu sót. Em hy vọng sẽ nhận được những ý kiến
nhận xét, góp ý của các thầy cô giáo và bạn bè để em có thể thực hiện đề tài của
mình được hoàn thiện hơn.
Em xin chân thành cảm ơn!


LỜI CAM ĐOAN
Em xin cam đoan toàn bộ đề tài: “Chuyển đổi dữ liệu từ XML sang cơ sở
dữ liệu quan hệ”, là do bản thân tìm hiểu, nghiên cứu. Không có sự sao chép nội
dung từ các đồ án khác. Tất cả nội dung hoặc hình ảnh minh họa đều có nguồn
gốc xuất xứ rõ ràng từ các tài liệu tham khảo ở nhiều nguồn khác nhau mà xây
dựng lên. Ngoài ra còn có sự góp ý và định hướng của cô giáo Ths.Hà Thị
Thanh.
Em xin cam đoan những lời trên là đúng, mọi thông tin sai lệch em xin hoàn
toàn chịu trách nhiệm trước hội đồng.
Thái Nguyên, tháng 6 năm 2012
Sinh viên
Luyện Huy Ánh

2



MỤC LỤC

3


DANH MỤC HÌNH ẢNH

4


DANH MỤC CÁC BẢNG

5


DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT
Tên viết tắt

Ý nghĩa

API

Application Programming Interface

CNTT

Công nghệ thông tin

CSDL


Cơ sở dữ liệu

DBMS

Hệ quản trị cơ sở dữ liệu_Database Management
System

RDBMS

Hệ quản trị cơ sở dữ liệu quan hệ_Relational Database
Manegement System

DOM

Document Object Model

DTD

Document Type Definition

HTML

HyperText Markup Language

XML

eXtensible Markup Language

SQL


Structured Query Language

W3C

World Wide Web Consortium

UC

Use Case

SGML

Standard Generalized Markup Language

6


MỞ ĐẦU
Ngày nay, Internet phát triển mạnh mẽ làm cho HTML (HyperText Markup
Language - ngôn ngữ đánh dấu siêu văn bản) một ngôn ngữ lý tưởng để hiển
thị trang Web được nhiều người biết đến. Tuy vậy, HTML không thể phát triển xa
hơn nữa trong thế giới ảo, nó được đánh giá là khá tồi khi mô tả nội dung trang
web dưới dạng dữ liệu để có thể thao tác dễ dàng được ở bất cứ thời điểm và
hoàn cảnh nào. Điều này đã làm cho người ta suy nghĩ đến XML. Vậy XML là
gì?.
XML là ngôn ngữ lập trình tương đối mới, nhưng đang ngày càng trở nên phổ
dụng trong nhiều ứng dụng đa dạng. XML xuất hiện cung cấp cho chúng ta một
cách thức mô tả dữ liệu có cấu trúc mà bản thân tên gọi của nó đã nêu rõ
eXtensible Markup Language (ngôn ngữ tăng cường). Do đó, ở đâu có dữ liệu

nhập/xuất, lưu trữ hoặc truyền từ nơi này đến nơi khác thì ở đó trở thành mảnh
đất đầy tiềm năng thích hợp với các khả năng của XML. Có lẽ nổi tiếng nhất vẫn
là các ứng dụng có liên quan đến web.
Nhưng có nhiều ứng dụng khác không thuộc web vẫn thích hợp với XML. Ví
dụ: Để thay thế cho các dữ liệu truyền thống hoặc để chuyển giao thông tin tài
chính giữa các doanh nghiệp,…Có thể nói, XML là một ngôn ngữ chung thống
nhất cho toàn bộ dữ liệu trên web, giúp cho các nhà phát triển sức mạnh để đem
lại mọi thông tin và dữ liệu có cấu trúc cần thiết từ bất cứ chương trình nào tới
tận màn hình của người sử dụng.
Mặc dù XML rất hiệu quả trong quá trình trao đổi, truy suất trên Internet,
nhưng nó không thể có được những tính năng tuyệt vời của cơ sở dữ liệu quan
hệ như: lưu trữ hiệu quả với dung lượng cực lớn, sao chép dự phòng, phục hồi dữ
liệu, tối ưu hệ thống,... Ngoài ra, số lượng ngày càng tăng của các tài liệu XML
đòi hỏi sự cần thiết để lưu trữ và truy vấn tài liệu XML một cách hiệu quả. Vì
vậy, trong phạm vi của đề tài này, em sẽ trình bày “quá trình chuyển đổi dữ liệu
XML sang dữ liệu quan hệ”.Em chọn cơ sở dữ liệu Microsoft SQL Server 2005
để lưu trữ dữ liệu trong quá trình thực hiện chuyển đổi. Trước khi đi vào nội
dung chính của đề tài, chúng tôi sẽ tìm hiểu một số khái niệm cơ bản về XML
7


cũng như XML DOM và cơ sở dữ liệu quan hệ cũng như đặc điểm nổi bật của cơ
sở dữ liệu quan hệ.
1 Lý do chọn đề tài
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. 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 tùy ý.
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.
Mặc dù XML rất hiệu quả trong quá trình trao đổi, truy xuất trên internet
nhưng nó không thể có được những tính năng tuyệt vời của CSDL quan hệ như
lưu trữ hiệu quả với dung lượng cực lớn, sao chép dự phòng, phục hồi dữ liệu, tối
ưu hệ thống,...do đó nhu cầu chuyển đổi dữ liệu từ XML sang CSDL quan hệ là
rất cần thiết khi lượng tài liệu XML ngày càng tăng , đồng thời được sự gợi ý của
giáo viên hướng dẫn, em đã chọn đề tài “Chuyển đổi dữ liệu từ XML sang cơ sở
dữ liệu quan hệ ” làm đồ án tốt nghiệp của mình.
2 Mục tiêu của đề tài
Đề tài tập chung nghiên cứu kiến thức tổng quan nhất về XML, một số ứng
dụng của XML, nghiên cứu thuật toán chuyển đổi dữ liệu từ XML sang CSDL
quan hệ.
3 Nội dung chính của đề tài bao gồm các phần chính sau
Chương 1: Giới thiệu tổng quan về XML.
Chương 2: XML và cơ sở dữ liệu quan hệ.
Chương 3: Phân tích thiết kế và cài đặt chương trình

8


9


CHƯƠNG 1: TỔNG QUAN VỀ XML
1.1 Tổng Quan Về XML

1.1.1 Lịch sử phát triển của XML
XML được triển khai nhờ sự đóng góp của rất nhiều người trong 10 năm qua.
Cách đây hơn 10 năm SGML ra đời (Standard Generalised Markup Language),
một ngôn ngữ quốc tế vô cùng phức tạp, dùng để mô tả các tài liệu phức tạp và

có cấu trúc tinh vi. SGML là ngôn ngữ rất khó học và các công cụ để phát triển
nó cũngkhá đắt tiền.
Năm 1990, Tim Berners-Lee ở CERN đã phát minh ra HTML, một phần nhỏ
của SGML, nhưng dễ sử dụng hơn, có thể được viết bằng tay mà không cần phải
có một chương trình nào giúp đỡ. Sự thành công của HTML vượt quá sức tưởng
tượng của chính tác giả, nhưng vào đầu năm 1995, các nhà phát triển đã bắt đầu
nhận ra sự giới hạn của HTML, mặc dù Microsoft, Netscape cố gắng thêm thắt
rất nhiều thứ vào HTML nhưng cũng không ngăn được việc lộ rõ những giới hạn
của HTML.

Hình 1.a: Tim Berners-Lee Cha đẻ của WWW đã phát minh ra HTML năm 1990
Mùa hè năm 1996, Jon Bosak ở Sun Microsystem khởi đầu nhóm cộng tác
W3C SGML, được gọi là nhóm XML. Mục đích của nhóm là đơn giản hoá
SGML để nó dễ sử dụng như HTML, đồng thời lại mạnh mẽ và linh động. Tim
Bray và C.M. Sperberg-McQueen viết hầu hết Specification (bản điều kiện kỹ
thuật) nguyên thủy của XML. Trước đó Bray đã có kinh nghiệm nhiều năm quản

10


lý dự án “New Oxford English Dictionary”. Ông muốn XML hội tụ các điều
kiện sau:
- Đơn giản đủ cho lập trình viên áp dụng
- Dễ cho Search Engine (Alta Vista, Yahoo, InfoSeek,…) phân loại
- Không giới hạn trong tiếng anh của nước Mỹ

Hình 1.b: GuTim Bray
Chính vì vậy phiên bản Specification nháp đầu tiên của XML được phát hành
vào tháng 11 năm 1996. Tháng 7 năm 1997, Microsoft lần đầu tiên đưa ra một áp
dụng thực sự của XML, Channel Definition Format (CDF), sử dụng để xuất bản

các trang Web tới các vị khách đã đóng tiền đặt mua trước theo tháng. Vào thời
gian đó, CDF đã được tích hợp vào IE 4.0. Sau đó Microsoft và Inso
Corporation đã cùng hợp tác để xuất bản XSL (eXtensible Style Language) để
làm Style Sheet diễn tả cách trình bày một trang XML.
Tháng 1 năm 1998 Microsoft đã đưa ra một chương trình miễn phí tên
MSXSL để generate một trang HTML từ một cặp trang XML và XSL. Sau này
IE5.0 đã hỗ trợ việc hiển thị một trang XML đơn.
Tháng 2 năm 1998, W3C đã phê chuẩn cho thi hành chính thức Version 1.0
của XML Specification.

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


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.3 Cấu trúc tài liệu XML
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 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, ....

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–

12


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.
Phần mở đầu
Phần nội dung
Khai Báo
Mổ tả cấu trúc tài liệu


Hình 1.c: Cấu trúc tài liệu XML
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.
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.
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 thành phần và các
cặp thẻ khác trong tài liệu.
13


1.1.4 Các thành phần cơ bản của 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
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 tài liệu còn lại trong tài liệu XML không phải đị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
Khai báo phiên bản (verion): 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 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ự >.
14


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 dấu ?> 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?>
- 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). 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 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 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
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ự 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
15


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 “ =”.

Thuộc tính luôn được gán giá trị 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 dấu nháy đơn thay thế.
- 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ụ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à vấn đề.
Để định nghĩa không gian tên cho các thẻ , ta đưa vào thuộc tính xmls: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:
đố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=”h01”>
<TenSV>
Hoang Van Thanh
</TenSV>
16



<NganhHocID>
120
</NganhHocID>
<DiaChi>
Thai Nguyen
</DiaChi>
<DienThoai>
0989582491
</DienThoai>
</SinhVien>
</DANH_SACH_SV>
Không gian tên danhsachsv được tạo cho thư viện như sau:
Xmlns:danhsachsv= /><SinhVien SinhVienID=”h01”>
<TenSV>
Hoang Van Thanh
</TenSV>
<NganhHocID>
120
</NganhHocID>
<DiaChi>
Thai Nguyen
</DiaChi>
<DienThoai>
0989582491
</DienThoai>
</SinhVien>
</DANH_SACH_SV>
Sau đó áp dụng không gian tên cho các thẻ trong tài liệu XML như sau:


17


Xmlns:danhsachsv= /><danhsachsv:SinhVien SinhVienID=”h01”>
<danhsachsv:TenSV>
Hoang Van Thanh
</ danhsachsv:TenSV>
< danhsachsv:NganhHocID>
120
</ danhsachsv:NganhHocID>
< danhsachsv:DiaChi>
Thai Nguyen
</ danhsachsv:DiaChi>
< danhsachsv:DienThoai>
0989582491
</ danhsachsv:DienThoai>
</ danhsachsv:SinhVien>
</ danhsachsv:DANH_SACH_SV>

1.1.5 Cấu trúc 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ệ.
- 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.
18


- Đó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 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.
Tham chiếu thực thể

Ý nghĩa của kí tự tương ứng

&

&

<

<

>

>


'



"


Bảng 1:Bảng tham chiếu thực thể trong XML

- 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 định nghĩa
trước như bảng trên.
- 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ẻ thực thể.

1.1.6 Đị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.
19


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ử tring
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 CONTEN_MODEL>
NAME là tên của phần tử muốn định nghĩa;
CONTEN_MODEL có thể được đặt là EMTY 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)*>
SinhVien(SinhVienID,TenSV,NganhHocID,DiaChi,DienThoai)>
<! ELEMENT SinhVienID(#PCDATA)>
<! ELEMENT TenSV(#PCDATA)>
<! ELEMENT NganhHocID(#PCDATA)>
<! ELEMENT DiaChi(#PCDATA)>
]>
<DANH_SACH_SV>
<SinhVien SinhVienID=”h01”>
<TenSV>
Hoang Van Thanh
</TenSV>
<NganhHocID>

20



120
</NganhHocID>
<DiaChi>
Thai Nguyen
</DiaChi>
<DienThoai>
0989582491
</DienThoai>
</SinhVien>
</DANH_SACH_SV>

1.1.7 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. 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 2. Các nút trong mô hình DOM.

21


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>
H01
<SinhVienID>
<TenSV>
Hoang Van Thanh
</TenSV>
<NganhHocID>
120
</NganhHocID>
<DiaChi>
Thai Nguyen
</DiaChi>
<DienThoai>
0989582491
</DienThoai>
</SinhVien>
Theo mô hình DOM, Tài liệu XML trên được tổ chức theo cấu trúc cây sau:
SinhVien
22


SinhVienID
TenSV
NganhHocID
DienThoai
DiaChi
H01

HoangVanThanh
120
ThaiNguyen
0989582491

1.2 Một số ứng dụng của XML
XML có rất nhiều ứng dụng trong thực tế. Trong đó có một số ứng dụng điển
hình mà hiện nay hay dùng đó là:
XML được sử dụng trong nhiều khía cạnh phát triển WEB, thường để đơn
giản hóa các dữ liệu lưu trữ và chia sẻ.

1.2.1 XML tách dữ liệu từ HTML:
- Nếu bạn cần hiển thị thông tin trong tài liệu HTML của bạn, nó sẽ mất rất
nhiều công việc để chỉnh sửa HTML mỗi khi thay đổi dữ liệu.
- Với XML, dữ liệu có thể được lưu trữ trong các file XML riêng biệt. Bằng
cách này bạn có thể tập trung vào việc sử dụng HTML để bố trí và hiển thị, và
23


chắc chắn rằng những thay đổi trong dữ liệu cở bản trong XML sẽ không có yêu
cầu bất kỳ thay đổi nào với HTML.
- Với một dòng mã Javascript, bạn có thể đọc được một file XML bên ngoài
và cập nhật nội dung dữ liệu vào trang web của bạn.

1.2.2 XML đơn giản hóa việc chia sẻ dữ liệu:
Trong thế giới thực, các hệ thống máy tính và các cơ sở dữ liệu chứa dữ
liệu định dạng không tương thích. Dữ liệu XML được lưu trữ ở dạng văn bản
thuần. Điều này cung cấp một phần mềm và phần cứng một cách độc lập với dữ
liệu lưu trữ. Điều này làm cho nó dễ dàng hơn trong việc tạo ra dữ liệu có thể
chia sẻ bởi các ứng dụng khác nhau.


1.2.3 XML đơn giản hóa việc vận chuyển dữ liệu:
Một trong những thách thức tốn thời gian cho các nhà phát triển là việc trao
đổi các dữ liệu giữa các hệ thống không tương thích trên internet. Trao đổi dữ
liệu bằng XML làm giảm đáng kể độ phức tạp này, kể từ khi các dữ lieeujj có thể
được đọc bởi các ứng dụng không tương thích khác nhau.

1.2.4 XML làm cho dữ liệu của bạn khả dụng hơn:
Các ứng dụng khác nhau có thể truy cập dữ liệu của bạn, không chỉ trong các
trang HTML mà còn từ các nguồn dữ liệu XML.
Dữ liệu XML được lưu trữ trong định dạng văn bản. Chính điều này làm cho
nó dễ dàng hơn khi mở rộng hoặc nâng cấp lên hệ điều hành mới, ứng dụng mới,
hoặc các trình duyệt mới mà không làm mất dữ liệu.

1.2.5 XML đơn giản hóa việc thay đổi nền tảng:
Khi nâng cấp lên hệ thống mới (phần cứng hay nền tảng phần mềm) một phần
lớn dữ liệu phải được thay đổi, và phần dữ liệu không tương thích thường bị mất.
Dữ liệu XML được lưu trữ trong định dạng văn bản. Chính điều này làm cho
nó dễ dàng hơn khi mở rộng hoặc nâng cấp lên hệ điều hành mới, ứng dụng mới,
hoặc các trình duyệt mới mà không làm mất dữ liệu.

1.2.6 XML dùng để tạo ngôn ngữ internet mới.
Dưới đây là một số ví dụ:

24


XHTML (Extensible HyperText Markup Language) : Ngôn ngữ đánh dấu siêu
văn bản mở rộng.
WSDL (Web Service Definition Language) : Dùng để mô tả các dịch vụ web

có sẵn.
WAP (Wireless Application Protocol) và WML (Wireless Markup Language)
là ngôn ngữ đánh dấu cho thiết bị cầm tay.
RSS (Really Simple Syndication Frameword) và OWL (The Web Ontology
Language) để mô tả tài nguyên và ontology.
SMIL (Synchronized Multimedia Integration Language) để mô tả đa phương
tiện cho web.
Tương lai chúng ta có thể đọc,, ghi cơ sở dữ liệu trong XML (giống như một
trình xử lý văn bản) mà không cần bất kỳ tiện ích chuyển đổi trung gian như hiện
nay.

1.2.7 Ứng dụng truy vấn dữ liệu từ file XML: Sử dụng LinQ
LinQ to XML là gì ?
LINQ to XML cung cấp một giao diện lập trình XML.
LINQ to XML sử dụng những ngôn ngữ mới nhất của .Net Language
Framework và được nâng cấp, thiết kế lại với giao diện lập trình XML DOM.
XML đã được sử dụng rộng rãi để định dạng dữ liệu trong một loạt các ngữ
cảnh ( các trang web, trong các tập tin cấu hình, trong các tập tin Word, và trong
cơ sở dữ liệu ).
LINQ to XML có cấu trúc truy vấn tương tự SQL. Nhà phát triển trung bình
có thể viết các truy vấn ngắn gọn, mạnh mẽ, viết mã ít hơn nhưng có ý nghĩa
nhiều hơn. Họ có thể sử dụng các biểu thức tuy vấn dữ liệu các lĩnh vực tại một
thời điểm.
LINQ to XML giống như DOM ở chỗ nó chuyển các tài liệu XML vào bộ
nhớ. Bạn có thể truy vấn và sửa đổi các tài liệu, và sau khi bạn chỉnh sửa nó, bạn
có thể lưu nó bào một tập tin hoặc xuất nó ra. Tuy nhiên, LINQ to XML khác
DOM: Nó cung cấp mô hình đối tượng mới đơn giản hơn và để thao tác hơn để
làm việc, và đó là tận dụng các cải tiến ngôn ngữ trong Visual C# 2008.
25



×