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

Tích hợp các hệ thống cơ sở dữ liệu quan hệ và XML

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.06 MB, 73 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

TRẦN THỊ XUÂN

TÍCH HỢP CÁC HỆ THỐNG
CƠ SỞ DỮ LIỆU QUAN HỆ VÀ XML

Ngành: CÔNG NGHỆ THÔNG TIN
Mã số: 1.01.10
LUẬN VĂN THẠC SĨ

Người hướng dẫn khoa học:
PGS.TS. ĐOÀN VĂN BAN

HÀ NỘI, 2007


MỤC LỤC
MỞ ĐẦU ............................................................................................................................... 1
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 công nghệ XML ................................................................................... 3
1.1.2 Cấu trúc 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 hợp khuôn dạng ........................................................................ 10
1.1.5 Định nghĩa kiểu tư liệu DTD .............................................................................. 11
1.1.6 Lược đồ XML .................................................................................................... 13


1.1.7 Bảng định kiểu CSS ............................................................................................ 18
1.1.8 Mô hình DOM .................................................................................................... 20
1.1.9 Phân tích tài liệu XML theo mô hình DOM ........................................................ 22
1.1.10 XPATH ............................................................................................................ 25
1.1.11 XLINK và XPOINTER..................................................................................... 27
1.1.11.1 XLINK ................................................................................................. 27
1.1.11.2 XPOINTER .......................................................................................... 28
1.2 Cơ sở dữ liệu quan hệ ................................................................................................... 29
1.2.1 Cấu trúc cơ sở dữ liệu quan hệ ............................................................................ 29
1.2.2 Ràng buộc toàn vẹn trên một CSDL quan hệ ....................................................... 31
1.2.2.1 Định nghĩa .............................................................................................. 31
1.2.2.2 Các yếu tố của ràng buộc toàn vẹn .......................................................... 32
1.2.3 Chuẩn hoá một CSDL quan hệ ............................................................................ 33
1.3 Kết luận ......................................................................................................................... 34
Chương 2: TÍCH HỢP CÁC HỆ THỐNG CSDL QUAN HỆ VÀ XML ......................... 35
2.1 Phương pháp luận ........................................................................................................ 36
2.1.1 Đối sánh nội dung của một CSDL quan hệ và một tài liệu XML ......................... 36
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ệ .. 38
2.1.3 Tên duy nhất ....................................................................................................... 41


2.1.4 Các giá trị rỗng và các giá trị mặc định .............................................................. 41
2.1.5 Quan hệ .............................................................................................................. 43
2.1.6 Thứ tự ................................................................................................................ 44
2.2 Chuyển một tài liệu XML sang một CSDL quan hệ ................................................... 46
2.3 Chuyển một CSDL quan hệ sang một tài liệu XML ................................................... 48
2.3.1 Phi chuẩn các lược đồ quan hệ ........................................................................... 48
2.3.2 Kết nối các CSDL đã phi chuẩn .......................................................................... 52
2.3.3 Ánh xạ CSDL quan hệ đã kết nối thành một DOM chính để chuyển thành tài liệu
XML .................................................................................................................................... 54

2.4 Kết luận ......................................................................................................................... 57
Chương 3: CÀI ĐẶT THUẬT TOÁN TÍCH HỢP CÁC HỆ THỐNG CSDL QUAN HỆ VÀ XML ............................................................................................................................. 58
3.1 Thuật toán..................................................................................................................... 58
3.1.1 Đọc tài liệu XML dưới dạng sơ đồ hình cây........................................................ 58
3.1.2 Hiển thị tài liệu XML dưới dạng bảng ................................................................ 59
3.1.3 Chuyển một CSDL quan hệ sang một tài liệu XML ............................................ 60
3.2 Cài đặt thuật toán ......................................................................................................... 61
3.3 Kết quả - đánh giá ........................................................................................................ 68
KẾT LUẬN ........................................................................................................................ 69
TÀI LIỆU THAM KHẢO .................................................................................................. 70


1

MỞ ĐẦU
Ngày nay cùng với việc bùng nổ thông tin, các thông tin trên Internet cũng
ngày càng nhiều (số lượng các trang Web trên Internet khoảng gần 2 tỷ), mà như
chúng ta biết thì các Cơ sở dữ liệu quan hệ ngày càng chiếm nhiều ưu thế trong
việc lưu trữ nội dung của các web site. Cùng lúc đó, ngôn ngữ định dạng mở
rộng (Extensible Markup Language –XML) nhanh chóng chiếm ưu thế trong
những web site sử dụng văn bản siêu liên kết. Vì vậy, sự tích hợp các hệ thống
Cơ sở dữ liệu quan hệ và XML là chủ đề chính của luận văn này với mục đích là
mong muốn tất cả các dữ liệu cùng với các chương trình trong tương lai sẽ tích
hợp và hiểu nhau hơn thông qua XML.
Trong giai đoạn đầu, hầu hết các trang Web đều được viết bằng ngôn ngữ
định dạng dữ liệu thông qua các cặp thẻ đặc biệt trong tệp tin văn bản HTML.
Do tính đơn giản, dễ hiểu và dễ sử dụng của HTML mà nó đã trở thành ngôn ngữ
được ưa chuộng để xây dựng các trang Web trong thời gian đó. Tuy vậy, với
lượng thông tin khổng lồ và không ngừng tăng của Web, cùng với thị hiếu và
nhu cầu sử dụng của người dùng ngày càng cao thì HTML không đủ để đáp ứng

những yêu cầu đó – nó chỉ có thể tạo trang Web chuẩn. Chính vì vậy mà ngôn
ngữ XML đã ra đời, với những tính năng nổi trội của mình, XML đã giúp cho
việc quản lý, trình bày và tổ chức thông tin trên Web thông qua các hệ cơ sở dữ
liệu được dễ dàng và đặc biệt là đáp ứng được những mong mỏi từ phía người
dùng.
Trên thực tế, công nghệ XML đã và đang được người sử dụng ưa thích bởi
sự tích hợp dễ dàng của nó với các cơ sở dữ liệu quan hệ – 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 quan hệ đ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. Để giải quyết vấn đề này, chúng ta cần tìm hiểu rõ về XML và mô hình
DOM cũng như 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. Và đây cũng chính là nội dung


2
được đưa ra trong luận văn thông qua những nghiên cứu của một số bài báo, các
báo cáo chuyên ngành ở các hội nghị quốc tế được phổ biến trên mạng cùng với
các giáo trình về XML và các giáo trình liên quan khác.
Luận văn được trình bày gồm ba 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 của 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: “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 CSDL quan hệ và XML và
cài đặt thuật toán bằng ngôn ngữ lập trình Java.
và phần Kết luận.

.
Hà Nội, tháng 05 năm 2007


3

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ề công nghệ XML
Ngôn ngữ định dạng (markup language) là tất cả những gì dùng để mô tả
nội dung một tài liệu – Đó là cách nội dung tài liệu được diễn dịch. Ngôn ngữ
định dạng mà mọi người đều rất quen thuộc hiện nay chính là ngôn ngữ HTML
(Hyper Text Markup Language). HTML cho phép ta tạo nội dung của các trang
Web rất đẹp. Theo thời gian, với các phiên bản khác nhau của HTML, số các cặp
thẻ được định nghĩa ngày càng tăng. Ví dụ, với phiên bản HTML 4.01 gần đây
đã định nghĩa số các cặp thẻ là 120 (kể cả các cặp thẻ mở rộng). Tuy nhiên để xử
lý các ứng dụng trên Web với sự phát triển của ứng dụng mạng thì rõ ràng số các
cặp thẻ đó vẫn chưa đủ (thực sự thì ta không thể có đủ các cặp thẻ để sử dụng
cho những mục đích riêng của mình). Vậy câu hỏi đặt ra là làm thế nào để giải
quyết được vấn đề đó?
Sự ra đời của ngôn ngữ XML (Extensible Markup Language) như một giải
pháp cho vấn đề trên. XML là ngôn ngữ được định nghĩa bởi tổ chức mạng toàn
cầu (World Wide Web Consortium- W3C). HTML và XML có quan hệ rất gần
gũi với nhau - cả XML và HTML đều dựa trên chuẩn ngôn ngữ định dạng tổng
quát SGML (Standard Generalized Markup Language) và cả hai ngôn ngữ đều
sử dụng các cặp thẻ. Tuy vậy trong ngôn ngữ XML, các cặp thẻ được sử dụng để
định nghĩa và khai báo cấu trúc dữ liệu và được định nghĩa bởi người dùng thông
qua một số quy tắc của nó trong khi các cặp thẻ của HTML chỉ sử dụng để định
dạng và được định nghĩa, quy định trước. Nhờ khả năng tự định nghĩa các thẻ

cũng như khả năng cho phép định nghĩa và khai báo cấu trúc dữ liệu mà ngôn
ngữ XML trở thành ngôn ngữ rất cần cho công nghệ Internet và các ứng dụng
mạng ngày nay. Nhưng có lẽ lý do quan trọng nhất để XML trở lên phổ biến đó
là XML cho phép dễ dàng xử lý, chuyển tải và trao đổi dữ liệu giữa rất nhiều


4
ứng dụng và tài liệu người dùng với các định dạng khác nhau. Trong XML dữ
liệu được định dạng và lưu ở dạng text, do vậy ta có thể dễ dàng cấu hình cũng
như thay đổi chúng bằng các trình soạn thảo thông thường hoặc bằng các trình
soạn thảo chuyên nghiệp của XML (XML Notepad, XML Writer, XML Spy hay
eNotepad). Sự kết hợp giữa XML với định dạng CSS (Cascade Style Sheet) hay
XSL (Extensible Style Language) giúp cho việc định dạng dữ liệu hiệu quả hơn
rất nhiều so với định dạng nhị phân (định dạng được coi là hiệu quả vì nó chứa
dữ liệu ở dạng nén)[1]. Ngoài ra, khả năng được coi là mạnh nhất của XML đó là
khả năng có thể tạo ra các ngôn ngữ định dạng tuỳ biến – nó cho phép ta có thể
tuỳ biến vào trình duyệt hoặc ứng dụng để xử lý theo ngôn ngữ định dạng phù
hợp theo một tập thẻ quy ước. Một thế mạnh khác của XML đó là nó không chỉ
cho phép ta lưu dữ liệu vào file XML mà còn có thể tổ chức dữ liệu theo cấu
trúc. XML cho phép các phần tử thẻ tích hợp với nhau tạo nên một cấu trúc dữ
liệu phân cấp hoàn chỉnh. Điều này thật quan trọng khi chúng ta cần đến khả
năng định nghĩa dữ liệu có cấu trúc.
XML là một ngôn ngữ đòi hỏi tính chính xác cú pháp của ngôn ngữ rất cao.
Trình duyệt không chấp nhận một tài liệu XML viết sai cú pháp và nó sẽ không
phân tích tiếp tài liệu XML cho đến khi nào tài liệu XML hoàn toàn đúng khuôn
dạng và cú pháp.
1.1.2. Cấu trúc của tài liệu XML
1.1.2.1. Tài liệu XML
Các thẻ trong XML được tự định nghĩa và xác định mục đích sử dụng thẻ.
Do vậy vấn đề đặt ra ở đây là cần xác định cho mình cú pháp để các thẻ tuân

theo. Có hai cách để xác định cú pháp mà tài liệu XML có thể tuân theo, đó là:
 Mô hình định nghĩa kiểu tư liệu XML (DTD – Definition Type Document)
 Mô hình lược đồ XML (schema).
Nội dung của một tài liệu XML bị ràng buộc bởi hai tính chất:
 Tính hợp khuôn dạng (well – formed document)


5
 Tính hợp lệ (validity)
Tài liệu XML có thể được viết bằng các trình soạn thảo thông thường hoặc
các trình soạn thảo chuyên dụng của XML.
1.1.2.2. Cấu trúc của tài liệu XML
Một tài liệu XML có thể được chia thành 2 phần chính, mỗi phần có thể có
các thành phần theo quy định khác nhau.
a, 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ã hoá 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, 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 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.
b, 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 (phần này 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ử thường 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 gọi 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.
PROLOG

Khai báo


DTD- Định nghĩa kiểu tư liệu

Phần thân của tài liệu

Hình 1.1: Cấu trúc tài liệu XML


6
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 loại nút trong cây
XML. Định dạng bao gồm các cặp thẻ (thẻ bắt đầu và 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ự, 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
XML không phải là định dạng đều được xem là ký tự. Các ký tự này được chuẩn
hoá theo chuẩn ISO/ IEC 10646. XML hỗ trợ rất nhiều kiểu mã hoá dữ liệu như:
UTF–8, UTF-16, ISO–8859-5, ISO-10646-UCS-4. Tất cả các trình xử lý XML
đều được hỗ trợ mã hoá dữ liệu theo chuẩn Unicode UTF-8, UTF-16. Có những
ký tự mà chúng vừa được sử dụng để tạo các định dạng, vừa là dữ liệu ký tự nên
rất dễ nhầm lẫn trong việc sử dụng. Ví dụ như dấu &, >, <,…[1]
Các khai báo XML:
o Khai báo trong tài liệu XML được viết theo cấu trúc khai báo]?>. Ví dụ có khai báo: <?xml version=”1.0” standalone=”yes” ?>. Phần
khai báo không bắt buộc phải có trong tài liệu, tuy nhiên nếu có khai báo thì bắt
buộc phải đặt ở dòng đầu tiên của tài liệu.
o Các khai báo trong XML[1]:
 Khai báo phiên bản (version): khia 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à tuỳ chọn nhưng W3C khuyến

khích nên sử dụng phần khai báo này).
 Khai báo mã hoá (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 mã khác như: Unicode,
UCS-2, UCS-4,…(khai báo này là tuỳ 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à tuỳ chọn).


7
Phần chú thích:
o Chú thích trong XML cũng tương tự như chú thích trong các ngôn
ngữ khác – không ngoài mục đích làm chương trình được rõ ràng, mạch lạc hơn
không chỉ đối với người xây dựng chương trình mà còn đối với các đọc giả khác.
Chú thích trong XML được đặt trong cặp chuỗi kí tự <!-- Nội dung chú thích -->
và khi diễn dịch nội dung tài liệu các trình phân tích bỏ qua những dòng chú
thích.
o Một số quy tắc khi viết chú thích trong tài liệu XML:
 Không được đặt chú thích trước các khai báo.
 Không đặt chú thích bên trong các định dạng.
 Không dùng chuỗi -- bên trong chú thích.
Chỉ thị xử lý:
o Chỉ thị xử lý được sử dụng để chỉ dẫn cho bộ phân tích cách xử lý
tài liệu trong quá trình phân tích. Chỉ thị xử lý được bắt đầu bằng bằng ?> và thường được đặt ở đầu tài liệu.
o Ví dụ một chỉ thị xử lý: href=”greeting.css” ?> là một chỉ thị xử lý 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 (Cascade Style Sheet).
Thẻ, các phần tử (element), thực thể (entity) và thuộc tính (attribute):
o Thẻ và các phần tử:

 Cấu trúc tài liệu XML được tạo 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) và mỗi
phần tử trong tài liệu XML bao gồm một cặp thẻ - thẻ bắt đầu và thẻ kết thúc
(trong mỗi cặp thẻ có thể chứa các cặp thẻ khác hoặc chỉ chứa dữ liệu). Một phần
tử

XML

tuân

theo



pháp

tổng

quát

sau:


[attName=”attValue”]>Content</TagName>. Trong đó, TagName là tên thẻ
(được đặt theo nguyên tắc: tên thẻ có thể bắt đầu bằng ký tự, gạch chân (_), hoặc


8
dấu hai chấm (:), tiếp theo có thể là ký tự, ký số, gạch nối, dấu hai chấm nhưng

không được chứa khoảng trắng), attName là tên thuộc tính (được đặt theo
nguyên tắc đặt tên thẻ), attValue là giá trị được gán cho thuộc tính và Content là
nội dung của phần tử. 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 < />. Ví dụ thẻ <DOCUMENT/> là một phần tử và là một phần tử rỗng [1].
 Phần tử gốc (root element): Là phần tử chứa 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 là duy nhất đối với một tài liệu
XML được coi là hợp khuôn dạng.
o Thực thể (entity):
 Một thực thể thường có nội dung là văn bản (text), tuy nhiên
cũng có thể là dữ liệu nhị phân. Một thực thể thực chất chính là cách mà XML
tham chiếu đến một mục dữ liệu. Có hai loại thực thể: thực thể tổng quát
(general entity) và thực thể tham số (parameter entity). Trong tài liệu, thực thể
tổng quát được tham chiếu theo cú pháp: &entityName; và thực thể tham số
được tham chiếu theo cú pháp: %entityName;
 Thực thể tổng quát có thể là các thực thể đã được định nghĩa
trước trong XML như: <, >, &, ", &apos (đại diện cho các ký tự
tương ứng: <, >, &, “, „) hoặc cũng có thể là các thực thể được người dùng định
nghĩa trong DTD theo cú pháp: <!ENTITY NAME DEFINITION>, trong đó
NAME là tên thực thể, được sử dụng để tham chiếu đến nội dung được định
nghĩa của chúng. DEFINITION là định nghĩa của thực thể (có nhiều dạng định
nghĩa thực thể, định nghĩa đơn giản nhất là các văn bản mà ta muốn thay thế khi
thực thể được tham chiếu đến.
o Thuộc tính (attribute):


9
 Cho phép xác định thêm thông tin và ý nghĩa của thẻ. Thuộc

tính được kết hợp theo cặp name=value và được đặt bên trong thẻ mở hoặc thẻ
rỗ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à dữ liệu dạng text)  giá trị gán cho thuộc tính được đặt trong cặp
“” hoặc cặp „‟.
Phân đoạn CDATA:
o Phân đoạn CDATA cũng là một phần tử trong tài liệu XML nhưng
bao gồm chỉ một thẻ. Thẻ này bắt đầu bằng <![CDATA và kết thúc ] ]>. 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 tuý (không được
trình phân tích đụng đến). Do vậy phân đoạn CDATA thường được sử dụng để
tránh sự xáo trộn các cặp thẻ khi chúng ta đặt nội dung của tài liệu XML ngoại
vào tài liệu XML đích (tài liệu hiện hành).
Không gian tên (namespace):
o Việc kết hợp các tài liệu XML lại với nhau là một vấn đề cần phải
xem xét vì khả năng cho phép tự do định nghĩa và đặt tên các thẻ trong XML. Do
vậy việc định ra phạm vi hay không gian tên cho các thẻ trong tài liệu XML là
cần thiết.
o Để định nghĩa một không gian tên cho các thẻ, ta đưa vào thuộc tính
xmlns:prefix vào phần tử gốc. 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 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ở và </prefix:TagName> đối với thẻ đóng.
o Ví dụ: cho một tài liệu XML chưa được định nghĩa không gian tên
như sau [2]:


10
<THUVIEN>

<SACH>
<TIEUDE>
Khoa hoc cong nghe
</ TIEUDE>
</SACH>
</THUVIEN>
Không gian tên trangtien được tạo cho thư viện như sau:
xmlns : trangtien = ”http:// www.trangtien.com.vn/spec”>
<SACH>
<TIEUDE>
Khoa hoc cong nghe
</ TIEUDE>
</SACH>
</THUVIEN>
Sau đó áp dụng không gian tên trangtien cho các thẻ trong tài liệu XML:
xmlns : trangtien = ”http:// www.trangtien.com.vn/spec”>
<trangtien :SACH>
<trangtien :TIEUDE>
Khoa hoc cong nghe
</trangtien :TIEUDE>
</trangtien :SACH>
</trangtien :THUVIEN>
1.1.4. Cấu trúc tài liệu 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 :


11

 Các khai báo XML cần được đặt ở dòng đầu tiên của tài liệu : như
khai báo version hay các chỉ thị xử 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à phần tử con của phần tử gốc.
 Mọi phần tử khác rỗng phải bao gồm đầy đủ thẻ đóng và thẻ mở.
 Phần tử rỗng bắt buộc phải đóng bằng chuỗi />.
 Các phần tử lồng nhau phải có thẻ đóng và thẻ mở hợp vị trí (thẻ mở
theo thứ tự từ ngoài vào trong còn thẻ đóng theo thứ tự từ trong ra ngoài).


Trong tài liệu XML, tên thuộc tính là duy nhất và giá trị của thuộc

tính phải được đặt trong cặp nháy kép ( “ ”) hoặc nháy đơn („ „).
 Chỉ sử dụng 5 tham chiếu thực thể được định nghĩa trước trong XML
là :
Tham chiếu thực thể

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

& ;

&

< ;

<

> ;

>


&apos ;



" ;



1.1.5. Định nghĩa kiểu tư liệu DTD (Document Type Definition)
Khi xây dựng các phần tử trong XML, chúng ta có thể tuỳ ý quyết định
cách sử dụng chúng (có thể trong các thẻ chỉ chứa nội dung là dữ liệu text thuần
tuý hoặc cũng có thể chứa các phần tử con khác). Tuy nhiên để tài liệu được rõ
ràng chúng ta nên định nghĩa kiểu tư liệu mà mỗi phần tử sẽ biểu diễn.
Một tài liệu XML không chỉ đòi hỏi phải hợp khuôn dạng (well-formed) mà
còn đòi hỏi phải hợp lệ. Một tài liệu XML được xem là hợp lệ và có giá trị khi


12
mà tất cả các phần tử trong tài liệu được định nghĩa kiểu mà nó sẽ chứa. Việc
định nghĩa kiểu dữ liệu cho các phần tử gọi là định nghĩa kiểu tư liệu DTD [1].
Định nghĩa kiểu tư liệu DTD tuân theo cú pháp tổng quát được quy định bởi
tổ chức XML W3C như sau :
< !DOCTYPE root-name [DTD]>
Trong đó DTD là các định nghĩa cho phần tử trong tài liệu (có thể là các
định nghĩa nội- internal hoặc ngoại- external). Mỗi phần tử được định nghĩa theo
cú pháp : < !ELEMENT name content_model>
Trong đó name là tên 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 (gồm dữ liệu có thể sử
dụng để phân tích hoặc các phần tử con khác).

Khai báo và định nghĩa kiểu tư liệu được đặt ở phần khởi đầu (PROLOG)
của tài liệu (đặt sau phần khai báo và chỉ thị xử lý).
Ví dụ về khai báo và định nghĩa DTD trong tài liệu XML:
<?xml version =”1.0” standalone=”yes”?>
<!ELEMENT DANHSACH (SINHVEN)*>
<!ELEMENT SINHVIEN (HOTEN, NGAYSINH, TRUONG)>
<!ELEMENT HOTEN (HODEM, TEN)>
<!ELEMENT HODEM (#PCDATA)>
<!ELEMENT TEN (#PCDATA)>
<!ELEMENT NGAYSINH (#PCDATA)>
<!ELEMENT TRUONG (#PCDATA)>
]>
<DANHSACH>
<SINHVIEN>
<HOTEN>
<HODEM> Nguyen Mai </HODEM>
<TEN> Thanh</TEN>


13
</HOTEN>
<NGAYSINH> 20/12/1977 </NGAYSINH>
<TRUONG> Dai hoc Cong nghe </TRUONG>
</SINHVIEN>
<SINHVIEN>
………………………..
</SINHVIEN>
……………………….
</DANHSACH>


1.1.6. Lược đồ XML (XML schema)
Một tài liệu XML có thể trở nên rõ ràng nhờ khai báo kiểu tư liệu DTD.
Song những khai báo DTD thì có vẻ như là khá phức tạp đối với độc giả. Do vậy
tổi chức W3C đã đưa ra một giải pháp tổng quát hoá hơn DTD đó là khai báo và
định nghĩa các phần tử trong tài liệu XML theo lược đồ. Cũng tương tự như
DTD, lược đồ XML quy định cấu trúc của một tài liệu XML (gồm những phần
tử gì, thứ tự ra sao, chứa thuộc tính gì và nội dung thế nào) nhưng nó tỏ ra mạnh
mẽ và chính xác hơn, với ưu điểm nổi bật là cho phép định nghĩa và khai báo
kiểu dữ liệu thực sự mà chúng ta muốn sử dụng.
Lược đồ là tài liệu XML có thể được cài đặt theo định nghĩa của Microsoft
hoặc theo định nghĩa của tổ chức quốc tế W3C. Về cơ bản thì cả hai cách cài đặt
này đều phải sử dụng không gian tên cho tài liệu, song trong mỗi cách lại sử
dụng không gian tên theo một phương cách khác nhau.
Để kết hợp lược đồ XML vào trong tài liệu, Microsoft sử dụng không gian
tên mặc định cho tài liệu bằng khai báo thuộc tính xmlsn tại phần tử gốc cùng
với thông tin về file chứa lược đồ x-schema như sau:
<? xml version=”1.0” ?>
<rootElement xmlns=”x-schema: fileNameSchema”>
…………………………………………..
</rootElement>


14
Trong đó, rootElement là tên phần tử gốc, fileNameSchema là tên file chứa
lược đồ đã được định nghĩa, fileNameSchema được đặt với tên và phần mở rộng
tuỳ ý. Ví dụ như schema1.xml
Trong fileNameSchema, nội dung lược đồ được định nghĩa như sau:
- Lược đồ là một tài liệu XML bắt đầu bằng phần tử schema, được khai
báo theo dạng thức:

<?xml version=”1.0” ?>
<schema>
……………….
</schema>
- Tiếp theo lược đồ được đặt tên dựa vào thuộc tính name theo cấu
trúc:
<?xml version=”1.0” ?>
<schema name=name_fileNameSchema>
……………….
</schema>
Trong đó, name_fileNameSchema là phần tên (không chứa phần mở rộng)
của fileNameSchema.
- Để tạo lược đồ cho Internet Explorer, ta phải thiết lập không gian tên
mặc định cho tài liệu chứa lược đồ là urn:schema-microsoft-com:xml-data,
cùng với không gian tên mang định danh urn: schema-microsoftcom:datatypes với tiếp đầu ngữ dt cho phần khai báo kiểu dữ liệu (datatype).
<?xml version=”1.0” ?>
xmlns = ”urn:schema-microsoft-com:xml-data”
xmlns:dt = ”urn:schema-microsoft-com:datatypes”>
……………….
</schema>


15
Các kiểu dữ liệu cùng với không gian tên dt được định nghĩa sẵn như
bảng sau [1]:
Kiểu dữ liệu

Ý nghĩa


bin.base64

Kiểu đối tượng nhị phân mã hoá theo chuẩn base64

bin.hex

Kiểu hex

boolean

Nhận giá trị 0 hoặc 1

char

Kiểu ký tự

date

Kiểu ngày tháng

dateTime

Kiểu ngày giờ

float

Kiểu số thực với dấu chấm động

int


Kiểu số nguyên

number

Kiểu số tổng quát (có thẻ là số âm, dương, số mũ,..)

I1

Số nguyên 1 byte

I2

Số nguyên 2 byte

I4

Số nguyên 4 byte

R4

Số thực với độ chính xác 7 ký số

R8

Số thực với độ chính xác 15 ký số

ui1

Số nguyên không dấu 1 byte


ui2

Số nguyên không dấu 2 byte

ui4

Số nguyên không dấu 4 byte

- Phần tử của tài liệu XML được định nghĩa trong lược đồ theo cấu trúc
sau :
<?xml version=”1.0” ?>
xmlns = ”urn:schema-microsoft-com:xml-data”
xmlns:dt = ”urn:schema-microsoft-com:datatypes”>


16
<ElementType attributes>
……………….
</schema>
Trong đó attributes là khai báo danh sách các thuộc tính tương ứng của
kiểu phần tử định nghĩa, các thuộc tính có thể là : name (tên kiểu phần tử),
content (nội dung kiểu phần tử), model (mô hình nội dung của thẻ - nhận giá trị
là closed hoặc open), dt :type (kiểu dữ liệu của phần tử). Ví dụ có định nghĩa các
phần tử như sau :
<ElementType name= ”HOTEN” content=”textOnly” model=”closed”>
<ElementType name = ”NGAYSINH” dt:type=”date”>
Các phần tử trong một lược đồ XML được nhìn nhận theo hai góc độ: phần
tử có kiểu phức hợp (là phần tử có chứa các phần tử con và thuộc tính) và phần
tử có kiểu đơn giản (là phần tử chỉ chứa dữ liệu đơn giản như: chuỗi, ngày tháng,

số nhưng không chứa các phần tử con và thuộc tính). Việc xác định kiểu các
phần tử trong tài liệu XML có ảnh hưởng trực tiếp tới việc định nghĩa lược đồ
XML theo chuẩn W3C.
Để sử dụng một lược đồ đã định nghĩa, chuẩn W3C mở ra hướng rộng hơn
so với việc sử dụng theo Microsoft. Thay vì phải sử dụng thuộc tính xmlns để
tham chiếu đến file chứa lược đồ, W3C cho phép khai báo không gian tên cho tài
liệu tham chiếu đến file lược đồ theo địa chỉ URL theo cách thức:
<?xml version =”1.0” ?>
<rootElement xmlns=”URL” >
....................................
</rootElement>
Nội dung của lược đồ XML theo dạng thức thuần văn bản. Nó mở đầu bằng
khai báo chuẩn XML, tiếp theo W3C sử dụng tiếp đầu ngữ xsd: để tham chiếu
đến không gian tên của lược đồ, theo cú pháp sau:


17
<?xml version =”1.0” ?>
<xsd:schema xmlns:xsd = “http:// www. w3.org./1999/XMLSchema" >
....................................
</xsd:schema>
Tiếp theo là khai báo các phần tử và kiểu dữ liệu: Đối với kiểu phần tử phức
hợp  sử dụng phần tử khai báo <xsd:complextType>, một phần tử phức hợp
thường chứa các khai báo phần tử con, tham chiếu đến các phần tử khác và khai
báo các thuộc tính. Phần tử được khai báo bằng chỉ thị <xsd:element>, khai báo
thuộc tính bằng chỉ thị <xsd:attribute>. Đối với kiểu phần tử đơn giản được
khai báo bằng chỉ thị <xsd:simpleType>. Sau khi định nghĩa kiểu phần tử, ta
hoàn toàn có thể khai báo các phần tử sử dụng kiểu vừa tạo.
Ví dụ: Ta có khai báo kiểu phức hợp cho phần tử address
<xsd:complexType name = ”address”>

<xsd:element name = ”name” type = “xsd:string” />
<xsd:element name = ”street” type = “xsd:string” />
<xsd:element name = ”city” type = “xsd:string” />
<xsd:element name = ”state” type = “xsd:string” />
<xsd:attribute name = ”phone” type = “xsd:string” use =”option”/>
</xsd:complexType>
Sau đó có thể sử dụng định nghĩa phần tử address cho phần tử <Lender> và
<Borrower> để lưu thông tin cá nhân trong tài liệu như sau:
<xsd:complexType name =”transactionType”>
<xsd:element name=”Lender” type =”address”/>
<xsd:element name=”Borrower” type =”address”/>
<xsd:element ref=”note” minOccurs =”0”/>
<xsd: attribute name =”borrowDate” type=”xsd:date”/>
<xsd:complexType>


18
Để khai báo kiểu dữ liệu cho các phần tử trong lược đồ ta sử dụng chỉ thị:
<xsd:dataType>, trong đó dataType là một trong các kiểu dữ liệu được cho
trong bảng sau [1]:
Kiểu dữ liệu

Ý nghĩa

Binary

Kiểu dữ liệu nhị phân

boolean


Kiểu logic

byte

Kiểu byte

century

Kiểu thế kỷ (ví dụ 20)

date

Kiểu ngày

decimal

Kiểu thập phân

double

Kiểu số thực 64 – bit

ENTITY

Kiểu thực thể

ENTITIES

Kiểu đa thực thể


ID

Kiểu định danh

int, integer

Kiểu số nguyên

IDREF

Kiểu tham chiếu định danh

NOTATION

Kiểu ghi chú

NMTOKEN

Kiểu token đơn

NMTOKENS

Kiểu đa token

month

Kiểu tháng (ví dụ 4, 6)

string


Kiểu chuỗi

1.1.7. Bảng định kiểu CSS (Cascading Stype Sheet)
Bảng định kiểu CSS (Cascading Style Sheet) giống 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ư các định
dạng về font chữ, màu sắc, mầu nền,..


19
Bảng định kiểu CSS cũng đã đượ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 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ẻ trong 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 chỉ thị
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 bắt buộc là .css và có 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; attName1: attValue1;…;attNamen:attValuen}
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à thành phần theo sau nó sẽ
bắt đầu ở dòng tiếp theo), hoặc display:line hiển thị thành phần theo nội dung.
attName là tên thuộc tính, attValue là giá trị của thuộc tính. Nếu muốn gom 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



pháp


CLASS=”className”>
Ví dụ: có tệp tin định dạng format.css sau:
TAILIEU{display:block; font-size:24pt; font-weight:bold;color:red}
TIEUDE {display: block; font-style:bold; color:blue}
.F1{font:12pt/20pt "Arial Black"; color:black; font- style:italic}
Và một tài liệu XML có nội dung sau:
<?xml version="1.0" standalone="yes"?>



20
<?xml-stylesheet type="text/css" href="format.css"?>
<TAILIEU>
<TIEUDE>
Chao mung cac ban den voi XML
</TIEUDE>
<NOIDUNG class="F1">
Cac ban den voi XML la mot lua chon hoan toan dung dan
</NOIDUNG>
</TAILIEU>
1.1.8. Mô hình DOM (Document Object Model)
Để xử lý một tài liệu XML, W3C định nghĩa tài liệu theo mô hình đối tượng
tài liệu DOM (Document Object Model). Theo mô hình này thì một 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 (note) 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 DOM có các loại
nút sau đây [1]:
Ý nghĩa

Nút
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ư liệu


Document fragment

Đoạn tài liệu

Notation

Ghi chú


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 độ [10]:
 Level 0: Là đặc tả DOM không chính thức và được áp dụng cho các trình
duyệt trước đây như Netscape navigator 3.0 và IE 3.0.
 Level 1: Tập trung vào sự 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 nội dung tài liệu.
Ví dụ: Cho một tài liệu XML
<?xml version="1.0" standalone="yes"?>
<TAILIEU>
<SACHKHTN>
<TIEUDE1>
Sach khoa hoc tu nhien
</TIEUDE1>
<NOIDUNG1>
Chuc cac ban nghien cuu thanh cong linh vuc khoa hoc tu nhien
</NOIDUNG1>
</SACHKHTN>

<SACHKHXH >
<TIEUDE2>

Sach khoa hoc xa hoi
</TIEUDE2>
<NOIDUNG2>

Chuc cac ban nghien cuu thanh cong linh vuc khoa hoc xa hoi
</NOIDUNG2>
</SACHKHXH>
</TAILIEU>


22
Theo mô hình DOM, tài liêu XML trên được tổ chức theo cấu trúc hình cây
như sau:
TAILIEU

SACHKHX
H

SACHKHT
N

TIEUDE1

NOIDUNG1

Sach khoa
hoc tu nhien


Chuc cac ban
nghien cuu thanh
cong linh vuc
khoa hoc tu nhien

TIEUDE2

Sach khoa
hoc xa hoi

NOIDUNG2

Chuc cac ban
nghien cuu thanh
cong linh vuc khoa
hoc xa hoi

Hình 1.2: Cấu trúc cây tài liệu XML
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 XML theo mô hình DOM (Document Object
Model). Về cơ bản DOM là một giao diện trình ứng dụng API (Application
Program Interface) không phụ thuộc 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 độ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++,.. Song 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 [11]:



×