Mục Lục
Mục Lục ..................................................................................................................................... 1
Chương 1 TỔNG QUAN CÔNG NGHỆ XML ...................................................................... 4
I.
Khái niệm về tài liệu XML ............................................................................................ 4
I.1.
Khái niệm về XML ................................................................................................. 4
I.2.
Phân biệt XML & HTML ....................................................................................... 4
I.3.
Điều XML không làm ............................................................................................. 4
I.4.
Mở rộng các thẻ XML của chính người dùng ........................................................ 5
I.5.
XML không phải là chuẩn thay thế HTML ............................................................ 5
Quy định về chuẩn XML ............................................................................................... 5
II.
II.1. Quy định 1 : Hệ thống các thẻ đánh dấu ................................................................. 5
II.2. Quy định 2 : Quan hệ lồng nhau (chứa trong) giữa các thẻ nội dung ..................... 6
II.3. Quy định 3 : Thẻ đánh dấu gốc ............................................................................... 6
III.
Tổng quan công nghệ XML ....................................................................................... 7
III.1. Khái niệm công nghệ XML................................................................................... 7
III.2. Một số ứng dụng của công nghệ XML ................................................................. 9
Chương 2 CẤU TRÚC TÀI LIỆU XML............................................................................... 12
I.
Cấu trúc cây XML (XML Tree Syntax)....................................................................... 12
I.1.
Cây XML (XML Tree) ......................................................................................... 12
I.2.
Các quy định về cấu trúc cây XML ...................................................................... 14
II.
Các thành phần XML (XML Elements) ...................................................................... 15
II.1. Khái niệm.............................................................................................................. 16
II.2. Quy định đặt tên.................................................................................................... 16
II.3. Mở rộng các thành phần XML ............................................................................. 17
III.
Thuộc tính của thành phần XML (Attribute) ........................................................... 17
III.1. Giá trị của thuộc tính phải được đặt trong dấu nháy ........................................... 17
III.2. Thành phần XML và Thuộc Tính ....................................................................... 18
III.3. Thuộc tính được dùng cho metadata (siêu dữ liệu) ............................................. 18
IV.
XML Namespace ...................................................................................................... 19
IV.1. Vấn đề xung đột tên thành phần XML ................................................................ 19
IV.2. Giải quyết xung đột ............................................................................................. 20
IV.3. XML Namespace ................................................................................................. 20
IV.4. Namespace mặc định ........................................................................................... 21
IV.5. Ứng dụng ............................................................................................................. 22
Chương 3 ĐẶC TẢ NỘI DUNG & CẤU TRÚC TÀI LIỆU XML ...................................... 23
I.
Nội dung và cấu trúc tài liệu XML .............................................................................. 23
I.1.
Nội dung tài liệu XML ......................................................................................... 23
I.2.
Cấu trúc tài liệu XML ........................................................................................... 24
Đặc tả nội dung tài liệu XML ...................................................................................... 27
II.
II.1. Sử dụng thẻ thực thể ............................................................................................. 27
II.2. Sử dụng tên ........................................................................................................... 29
Đặc tả cấu trúc tài liệu XML .................................................................................... 31
III.
III.1. Ngôn ngữ đặc tả DTD ......................................................................................... 31
III.2. Ngôn ngữ đặc tả XML Schemas ......................................................................... 39
Chương 4 TRUY XUẤT TÀI LIỆU VỚI DOM (DOCUMENT OBJECT MODEL) .......... 51
Mô hình đối tượng DOM ............................................................................................. 51
I.
I.1.
Mô hình đối tượng DOM ...................................................................................... 51
I.2.
Khái niệm về DOM .............................................................................................. 53
I.3.
Hệ thống các đối tượng của DOM ........................................................................ 53
II.
Các kỹ thuật lập trình với DOM .................................................................................. 56
II.1. Đọc tài liệu XML .................................................................................................. 56
II.2. Ghi tài liệu XML .................................................................................................. 57
II.3. Đọc đối tượng từ tập tin XML .............................................................................. 58
II.4. Ghi đối tượng vào tập tin XML ............................................................................ 60
II.5. Thể hiện cây đối tượng ......................................................................................... 62
III.
Ngôn ngữ XPath ....................................................................................................... 62
Chương 5 BIẾN ĐỔI TÀI LIỆU XML VỚI XSLT .............................................................. 69
I.
Giới thiệu về XSLT ...................................................................................................... 69
I.1.
Cấu trúc chương trình XSLT ................................................................................ 69
I.2.
Thực thi chương trình XSLT ................................................................................ 69
I.3.
Các ví dụ minh hoạ ............................................................................................... 69
Các thao tác xử lý cơ bản ............................................................................................. 69
II.
II.1. Rút trích và kết xuất thông tin .............................................................................. 69
II.2. Rẽ nhánh ............................................................................................................... 69
II.3. Vòng lặp................................................................................................................ 69
II.4. Hàm....................................................................................................................... 69
III.
Các kỹ thuật xử lý .................................................................................................... 69
III.1. XML HTML................................................................................................... 69
III.2. XML XML ..................................................................................................... 69
Giáo trình ngôn ngữ XML
Chương 1
TỔNG QUAN CÔNG NGHỆ XML
I. Khái niệm về tài liệu XML
I.1.
Khái niệm về XML
XML là viết tắt của eXtensible Markup Language, là một ngôn ngữ đánh dấu mở rộng
(giống HTML).
XML được thiết kế để mang và lưu trữ dữ liệu, không trình bày dữ liệu.
Các thẻ của XML không được định nghĩa trước. Người sử dụng tự định nghĩa các thẻ
của chính mình.
XML được thiết kế để tự miêu tả chính nó.
Văn bản có cấu trúc theo định dạng chuẩn XML cho phép biểu diễn thông tin về các đối
tượng trong thực tế.
o Đối tượng x thuộc loại X trong thực tế => thẻ X trong tài liệu XML
o Thuộc tính của đỗi tượng x thuộc loại X trong thực tế => thuộc tính a của thẻ X trong
tài liệu XML.
o Ví dụ 1: phân số 4/5 trong thực tế
thẻ
o Ví dụ 2: dãy số nguyên bao gồm các số 1, 4, 5, -3
thẻ
I.2.
Phân biệt XML & HTML
XML không phải là một sự thay thế cho HTML.
XML và HTML được thiết kế với 2 mục đích khác nhau :
XML được thiết kế để vận chuyển và lưu trữ dữ liệu, tập trung vào việc xác định dữ
liệu là cái gì. XML có thể được ứng dụng trong mọi loại ứng dụng như : Winform,
webform, mobile, service...
HTML được thiết kế để trình bày dữ liệu, tập trung việc dữ liệu được trình bày, trông
như thế nào. HTML chỉ được dùng trong các ứng dụng web và để trình bày, định
dạng dữ liệu, thông tin trong các ứng dụng web.
HTML là về thể hiện thông tin, XML là về mang và chứa thông tin.
I.3.
Điều XML không làm
Có một chút khó khăn để hiểu XML không làm điều điều gì. XML được tạo để xây dựng
cấu trúc, lưu trữ và vận chuyển dữ liệu.
Biên soạn Nguyễn Minh Thành
4
Giáo trình ngôn ngữ XML
Xét ví dụ về một ghi chú gửi cho Tove từ Jani được lưu trữ bằng XML như sau:
Tove
Jani
Reminder
Don't forget me this weekend!
Ghi chú trên đã tự miêu tả khá rõ về về nó. Ghi chú có thông tin người gửi (from), người
nhận (to) và cũng có cả tiêu đề (heading) và nội dung (body). Tuy nhiên, văn vản XML không làm
bất cứ điều gì khác ngoài việc chỉ bao phủ dữ liệu bởi các thẻ (tags). Người sử dụng phải viết các
ứng dụng để gửi, nhận hoặc trình bày nó.
I.4.
Mở rộng các thẻ XML của chính người dùng
Các thẻ trong ví dụ note ở trên như
, không được định nghĩa trong chuẩn của
XML. Những thẻ này được tạo bởi chính tác giả của văn XML đó. Chính vì ngôn ngữ XML không
định nghĩa các thẻ trước, do đó người sử dụng có thể tự định nghĩa các thẻ riêng của minh.
Trong khi đó, các thẻ của ngôn ngữ HTML được định nghĩa trước. Trong các văn bản
HTML chỉ được sử dụng các thẻ được định nghĩa trong chuẩn của HTML.
Vd : thẻ ,
...
I.5.
XML không phải là chuẩn thay thế HTML
XML là một sử bổ sung cho HTML. Điều quan trọng phải hiểu là XML không phải là một
sự thay thế HTML. Trong hầu hết các ứng dụng (đặc biệt là ứng dụng web), XML được sử dụng để
mang chuyển và lưu trữ dữ liệu, trong khi đó HTML được sử dụng trong các ứng dụng web để định
dạng và trình bày, thể hiện dữ liệu.
Một phát biểu miêu tả tốt nhất cho XML là : “XML là một công cụ độc lập với phần cứng
và phần mềm để mang dữ liệu.”
Ngày nay, ngôn ngữ XML được sử dụng ở đầu hết các ứng dụng đặc biệt là các ứng dụng
website.
II. Quy định về chuẩn XML
II.1.
Quy định 1 : Hệ thống các thẻ đánh dấu
Các thẻ đánh dấu trong ngôn ngữ theo định dạng chuẩn XML chỉ bao gồm 2 loại thẻ: thẻ
có nội dung và thẻ rỗng.
Thẻ có nội dung có dạng :
nội dung
Các thẻ rỗng có dạng :
Các thẻ có thể có (hoặc không) các thuộc tính với tên khác nhau trong cùng thẻ.
Thuộc tính của một thẻ có dạng :
Tên_thuộc_tính="giá trị"
Biên soạn Nguyễn Minh Thành
5
Giáo trình ngôn ngữ XML
Hay
Tên_thuộc_tính=ˈgiá trịˈ
Ví dụ : với tài liệu XML thể hiện đối tượng đường tròn bán kính R=5, tâm O(4,2)
Trong ví dụ trên :
II.2.
-
Thẻ có nội dung là thẻ DUONG_TRON
-
Thẻ rỗng là thẻ DIEM
-
Thẻ DUONG_TRON có 1 thuộc tính là Ban_kinh
-
Thẻ DIEM có 2 thuộc tính x, y.
Quy định 2 : Quan hệ lồng nhau (chứa trong) giữa các thẻ nội dung
Nội dung bên trong thẻ có nội dung có thể là các thẻ khác (có nội dung hay rỗng). Khi thẻ
A có nội dung là thẻ B ta gọi :
Thẻ A là cha của thẻ B, thẻ A chứa thẻ B
Thẻ B là con của thẻ A, thẻ B được chứa trong thẻ A
Quy định 2 yêu cầu các thẻ với quan hệ lồng nhau hoàn toàn. Khi thẻ A là thẻ cha của thẻ
B, A phải chứa phần bắt đầu và phần kết thúc của thẻ B.
Ví dụ :
Thẻ A là cha của thẻ B với dạng lồng nhau hoàn toàn (hợp lệ)
.....
Thẻ A là cha của thẻ B với dạng lồng nhau không hoàn toàn (không hợp lệ)
.....
II.3.
Quy định 3 : Thẻ đánh dấu gốc
Quy định 3 yêu cầu tài liêu XML phải có duy nhất (một và chỉ một) thẻ chứa (trực tiếp hay
gián tiếp) tất cả các thẻ còn lại (nếu có).
Ví dụ : tài liệu XML biểu diễn thông tin 2 đường tròn là không hợp lệ vì không có thẻ gốc.
Biên soạn Nguyễn Minh Thành
6
Giáo trình ngôn ngữ XML
III. Tổng quan công nghệ XML
III.1. Khái niệm công nghệ XML
Công nghệ thông tin
III.1.1.
Ngành khoa học nghiên cứu về việc xây dựng các hệ thống tin học tương ứng với hệ
thống thực tế.
Ngành khoa học nghiên cứu về việc biểu diễn và xử lý thông tin của hệ thống tin học
tương ứng với các thông tin và nghiệp vụ của hệ thống thực tế.
Hai hướng nghiên cứu chính trong Công Nghệ Thông Tin
o
Công nghệ phần cứng
o
Công nghệ phần mềm
Công nghệ xử lý thông tin
Một trong các hướng nghiên cứu chính của công nghệ phần mềm.
Ngành khoa học nghiên cứu về các mô hình, phương pháp, kỹ thuật
thông tin.
Các mô hình xử lý chính trong công nghệ thông tin :
xử
lý
o Thủ tục / Hàm
o Đơn thể
o Đối tượng
o Thành phần
o Dịch vụ
o ...
Công nghệ biểu diễn thông tin
Một trong các hướng nghiên cứu chính của công nghệ phần mềm.
Ngành khoa học nghiên cứu về các mô hình, phương pháp, kỹ thuật biểu diễn
thông tin.
Các mô hình biểu diễn chính trong công nghệ thông tin :
Tập tin (file) : thông tin lưu giữ trên bộ nhớ phụ.
Cơ sở dữ liệu (Database) : Thông tin lưu giữ trên bộ nhớ phụ.
Cấu trúc dữ liệu (Data structure) : thông tin xử lý trong bộ nhớ chính.
Trang web (web page) : thông tin thể hiện.
Luồng dữ liệu (Data stream) : thông tin trao đổi nội bộ bên trong một hệ thống
tin học hay giữa các hệ thống tin học.
Công nghệ XML
III.1.2.
Thuộc loại công nghệ biểu diễn thông tin.
Hình thành từ nhu cầu và vấn đề cần giải quyết của việc trao đổi thông tin.
Có phạm vi nghiên cứu và ứng dụng trên tất cả các mô hình biểu diễn của công nghệ
biểu diễn thông tin.
Biên soạn Nguyễn Minh Thành
7
Giáo trình ngôn ngữ XML
Có hướng nghiên cứu cho phép ứng dụng một mô hình xử lý thông tin mới thuộc về
công nghệ xử lý thông tin.
Nhu cầu trao đổi thông tin
a. Trao đổi thông tin nội bộ bên trong hệ thống tin học
Sự phát triển về quy mô, độ phức tạp, phạm vi sử dụng của các hệ thống tin học dẫn
đến sự phân rã hệ thống chính thành các hệ thống con (kiến trúc đa tầng là một ví dụ
điển hình về sự phân rã)
nhu cầu trao đổi thông tin bên trong các hệ thống con.
b. Trao đổi thông tin giữa các hệ thống tin học
Sự ra đời và phát triển của Internet và các ứng dụng web, đặc biệt là các ứng dụng
trong thương mại điện tử.
nhu cầu trao đổi thông tin giữa các ứng dụng này.
Các yêu cầu cao về chất lượng phần mềm (tiện dụng, tương thích, bảo mật...) khả
năng đáp ứng cao, chuyên biệt của một số hệ thống có sẵn
(web browser, excel,
word, fax...)
nhu cầu trao đổi thông tin giữa các hệ thống đang xây dựng và các hệ thống có
sẵn.
Mô hình trao đổi thông tin
Mô hình trao đổi thông tin trước khi XML ra đời chủ yếu là dựa trên công nghệ về
luồng dữ liệu (Data Stream) với 2 dạng chính :
Dạng nhị phân : dữ liệu trao đổi là các chuỗi byte theo cấu trúc và ngữ nghĩa
riêng biệt của từng ứng dụng.
Dạng văn bản : dữ liệu trao đổi là chuỗi các ký tự theo cách mã hoá chung
nhưng cấu trúc và ngữ nghĩa vãn là riêng biệt cho từng ứng dụng.
Cả 2 dạng trao đổi trên đều không thích hợp với các nhu cầu phía trên với cùng
khuyết điểm “Thông tin trao đổi có cấu trúc và ngữ nghĩa riêng biệt cho từng ứng
dụng”.
Nhu cầu về một định dạng chuẩn chung khi trao đổi thông tin.
Sự ra đời của công nghệ XML
Công nghệ XML ra đời là kết quả của các nghiên cứu về dạng biểu diễn thông tin
khi cần trao đổi giữa các hệ thống tin học. Dạng biểu diễn cần thoả mãn các yêu cầu
sau:
Cho phép trao đổi trên phạm vi rộng (internet).
Dễ dàng trong việc kết xuất và tiếp nhận khi trao đổi.
Tuân theo một định dạng chuẩn chung được chấp nhận và hỗ trợ của nhiều môi
trường phát triển phần mềm.
Công nghệ XML đã ra đời và đề xuất một dạng biểu diễn thích hợp cho các hợp các
yêu cầu trên (tài liệu XML). Tuy nhiên, với bản chất hình thành của mình, phạm vi
ứng dụng của XML không chỉ dừng ở việc trao đổi thông tin mà bao hàm cả các vấn
Biên soạn Nguyễn Minh Thành
8
Giáo trình ngôn ngữ XML
đề biểu diễn thông tin khác như : lưu trữ thông tin, cấu trúc dữ liệu, thể hiện thông tin,
v.v.. (chi tiết trong phần ứng dụng XML).
III.2. Một số ứng dụng của công nghệ XML
III.2.1.
Trao đổi thông tin
Trao đổi thông tin là xuất phát điểm cho sự hình thành của công nghệ XML.
Trao đổi thông tin là ứng dụng chủ yếu nhất của XML.
Có 2 dạng trao đổi thông tin chính :
Dạng 1 : trao đổi thông tin nội bộ giữa các thành phần của hệ thống tin học
Dạng 2 : trao đổi thông tin giữa các hệ thống tin học khác nhau
XML có thể ứng dụng tốt cho cả 2 dạng trao đổi thông tin trên.
Khi A có nhu cầu trao đổi thông tin với B
Dạng 1 :
A, B là 2 thành phần bên trong của một hệ thống tin học (thành phần giao diện,
xử lý hay lưu trữ).
Tài liệu XML được thiết kế cho việc sử dụng nội bộ.
Dạng 2 :
A là hệ thống tin học đang xem xét.
B là hệ thống đã có trước với khả năng chuyên biệt nào đó.
A phải xử dụng tài liệu XML có cấu trúc do B đề xuất.
Ví dụ : XML có thể được xử dụng để
Trao đổi thông tin giữa các tầng của một ứng dụng (được thiết kế theo kiến trúc đa
tầng).
Trao đổi thông tin giữa một tầng với hệ thống khác bên ngoài.
Cụ thể là
Sử dụng XML trao đổi thông tin giữa hệ thống lưu trữ (thông thường là hệ quản trị
cơ sở dữ liệu, hay tập tin) và tầng xử lý dữ liệu.
Sử dụng XML trao đổi thông tin giữ tầng dữ liệu và tầng xử lý nghiệp vụ.
Sử dụng XML trao đổi thông tin giữa tầng xử lý nghiệp vụ và tầng thể hiện.
Sử dụng XML trao đổi thông tin giữa các tầng xử lý nghiệp vụ (khi hệ thống có
nhiều tầng xử lý nghiệp vụ)
III.2.2.
Lưu trữ thông tin
Có 3 cách ứng dụng chính của XML để lưu trữ dữ liệu bên trong hệ thống tin học
Cách 1 : chỉ sử dụng một tập tin XML để lưu trữ dữ liệu.
Cách 2 : một số dữ liệu lưu trữ dưới dạng tập tin XML, một số khách lưu trữ bên
trong cơ sở dữ liệu.
Cách 3 : Lưu toàn bộ bên trong cơ sở dữ liệu, tài liệu XML được nhúng vào trong các
bảng dữ liệu.
Biên soạn Nguyễn Minh Thành
9
Giáo trình ngôn ngữ XML
Ưu khuyết điểm của các cách ứng dụng XML.
Cách 1 :
Ưu điểm chính : không cần sự hỗ trợ của các hệ quả trị cơ sở dữ liệu.
dễ cài đặt, triển khai.
Khuyết điểm chính : tính hiệu quả không cao khi khối lượng dữ liệu lớn.
Nhận xét : các phần mềm trò chơi là ứng viên tốt nhất cho ứng dụng XML theo
cách này. Các phần mềm quản lý không thích hợp cho cách ứng dụng này. Rất
thích hợp cho các ứng dụng trên môi trường không có (hoặc chưa có) hệ quản trị
CSDL như : điện thoại di động, máy công cụ...
Cách 2, 3 :
Ưu điểm chính : có thể kết hợp tốt ưu điểm của cả 2 mô hình lưu trữ thông tin :
XML và cơ sở dữ liệu.
Khuyết điểm chính : cần có sự cân nhắc và quyết định đúng đắn loại thông tin
nào sẽ dùng hình thức nào.
Nhận xét : cách 2 là cách xử dụng phổ biến nhất hiện nay. Cấu hình của hệ thống
tin học (phân hệ ứng dụng) là loại thông tin thường được chọn để lưu trữ theo
dạng tài liệu XML. Đặc biệt trong các ứng dụng web, XML và cơ sở dữ liệu
được dùng để phân chia dữ liệu với các trang HTML. Và các thông tin cấu hình
website, các dữ liệu nhỏ thường được lưu trữ trong các file XML.
III.2.3.
Cấu trúc dữ liệu
Với mô hình DOM (sẽ được giới thiệu trong phần sau), ta có thể sử dụng ngôn ngữ XML
như một cấu trúc dữ liệu động lưu trữ trong bộ nhớ chính với nhiều ưu điểm :
Đọc / ghi dễ dàng
Các cấu trúc dữ liệu như mảng động (array), danh sách (list), ngăn xếp (stack), hàng đợi
(queue), cây (tree)... có nhiều tính năng tốt trong việc biểu diễn và xử lý thông tin trong bộ nhớ
chính. Trong việc đọc/ghi thông tin của các cấu trúc dữ liệu này từ/vào bộ nhớ phụ (thông thường
thông qua tập tin) là không đơn giản và thường phải thực hiện gián tiếp với một bộ đọc ghi. Tài liệu
XML có thể sử dụng để cài đặt hầu hết các cấu trúc dữ liệu động trên (với một số chức năng bổ
sung vào DOM qua cơ chế kế thừa hay bao bọc của hướng đối tượng) và đặc biệt là đọc ghi dễ
dàng.
Vd : với ngôn ngữ C#
Đọc tài liệu XML : tai_lieu.Load(Ten_tap_tin_XML);
Ghi tài liệu XML : tai_lieu.Save(Ten_tap_tin_XML);
Khả năng truy vấn cao
Việc truy vấn các thành phần hay tập hợp thành phần của các cấu trúc dữ liệu động phía
trên thông thường phải thông qua các vòng lặp duyệt đến từng phần tử. Với tài liệu XML, có thể sử
dụng ngôn ngữ truy vấn XPath để truy vấn đến thành phần hay tập hợp thành phần một cách dễ
dàng (và thông thường cũng chỉ thông qua một lệnh đơn giản).
Vd : với ngôn ngữ C#, giả sử có Tai_lieu tương ứng về cây các số nguyên. Để lập danh
sách các nút (thành phần của cây) có giá trị dương.