Nhưng trong HTML các thẻ được mô tả với mục đích chính là mô tả cách trình bày dữ liệu trong một trang Web, ngược lại trong XML thì các thẻ được sử dụng để mô tả chính các dữ liệu lưu tr
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGƯỜI HƯỚNG DẪN KHOA HỌC
Hà Nội, Năm 2006
Trang 3MỤC LỤC
MỘT SỐ TỪ VIẾT TẮT 4
MỘT SỐ THUẬT NGỮ 5
MỞ ĐẦU 7
CHƯƠNG I: CÁC KHÁI NIỆM CƠ BẢN CỦA XML 8
I.1 XML là gì: 8
I.2 Cấu trúc của tài liệu XML: 10
I.3 Cấu trúc các thành phần và thuộc tính: 11
I.4 Cú pháp tài liệu XML: 11
I.5 Không gian tên: 11
I.6 Tài liệu XML hợp lệ: 13
I.6.1 Định nghĩa kiểu tài liệu – DTD: 14
a Định nghĩa kiểu tư liệu DTD là gì? 14
b Tạo khai báo và định nghĩa kiểu dữ liệu DTD: 14
c Danh sách các phần tử con: 15
d Trình tự đặt phần tử DTD: 15
e Tạo lập phần tử con 15
f Định nghĩa DTD ngoại: 16
g Thực thể và thuộc tính DTD: 16
h Các hạn chế của DTD: 18
I.6.2 Sơ đồ - Schema: 19
I.6.3 Bảng định kiểu: 19
I.7 XML được sử dụng như thế nào? 20
I.8 Các ứng dụng của XML: 21
I.8.1 XML để biểu diễn: 21
Trang 42
I.8.2 XML để truyền thông: 21
I.8.3 XML-RPC: 22
I.8.4 B2B: 22
I.9 Kết luận: 23
CHƯƠNG II: PHÂN TÍCH XML 24
II.1 Phân tích XML bằng DOM: 25
II.1.1 DOM là gì? 25
II.1.2 DOM XML: 26
II.1.3 Các giao diện quan trọng trong DOM: 29
II.1.4 Khi nào sử dụng DOM 34
II.2 Phân tích XML bằng SAX: 35
II.2.1 SAX là gì? 35
II.2.2 Các bước sử dụng SAX: 35
II.2.3.Trường hợp lựa chọn bộ phân tích SAX: 35
II.2.4 Phân tích bằng SAX: 36
II.2.5 Các giao diện Callback: 37
II.2.6 Nhận tài liệu: 38
II.2.7 Nhận các thành phần tài liệu: 38
II.3 Kết luận: 38
CHƯƠNG III: CHUYỂN ĐỔI GIŨA XML VÀ MÔ HÌNH DỮ LIỆU 40 III.1 Chuyển đổi CSDL quan hệ sang tài liệu XML:[3] 40
III.1.1 Chuyển đổi phẳng – FLAT TRANSLATION 44
III.1.2 Thuật toán sự chuyển đổi lồng – Nesting based Translation 44
III.1.3 Chuyển đổi sử dụng các phụ thuộc bao hàm: thuật toán CoT 48
III.1.4 Chuyển đổi mô hình quan hệ sang DOM trong XML: 54
III.2 Chuyển đổi tài liệu XML sang cơ sở dữ liệu quan hệ[3] 67
Trang 5III.2.1 Thuật toán gộp cơ sở 67
III.2.2 Thuật toán gộp chia sẻ: 71
III.2.3 Thuật toán Inlining chuyển đổi DTD sang lược đồ quan hệ 71
III.3 Kết luận: 76
CHƯƠNG IV: XỬ LÝ TRUY VẤN 77
IV.1 Xử lý truy vấn XML theo hướng truyền thống: 79
IV.2 Xử lý truy vấn XML dựa theo phân lớp 83
IV.3 XQuery: An XML Query Language 83
1 Giới thiệu: 83
2 Ngôn ngữ XQuery:[8] 84
3 Sử dụng ngôn ngữ truy vấn XQuery: 88
IV.4 Kết luận 94
KẾT LUẬN 95
TÀI LIỆU THAM KHẢO 97
Trang 64
MỘT SỐ TỪ VIẾT TẮT
XML: eXtensible Markup Language
B2B: Business to Business
CoT: Contrains – based Languge
DOM: Document Object Model
DTD: Document Type Definition
FT: Flat Translation
FDI: Format Public Interface
HTML: Hyper Text Markup Language
NeT: Nesting based Translation
OQL: Object Query Language
PCDATA: Parser Character Data
RDB: Relation Database
RSBMS: Relation Database Management System
SAX: Simple API XML
SGML: Standard Generalized Markup Language
SQL: Structured Query Language
URI: Uniform Modeling Language
W3C: World Wide Web Consortium
XSLT: eExtensible Style Language Transformation
XSL: eXtensible Style Language
WML: Wireless Markup Language
UIML: User Interface Markup Language
CML: Chemical Markup Language
XUL: XML User Interface Language
PR1: Primary Relation Type 1
PR2: Primary Relation Type 2
SR1: Secondary Relation Type 1
SR2: Secondary Relation Type 2
KAP: Key Attribute Primary
KAG: Key Attribute General
FKA: Foreign Key Attribute
NKA: Non Key Attribute
IDN: Inclusion Dependency
Trang 7Where: Điều kiện
In: tham chiếu trong
Foreign key: Khóa ngoài
Intersect: Phép giao
Optional Operator: Toán tử tùy chọn
Or Operator: Toán tử hoặc
Plus Operator: Toán tử dấu cộng
Project: Phép chiếu
Trang 87
MỞ ĐẦU
Hiện nay, XML đã và đang nổi lên như là một nhân tố chuẩn cho định dạng dữ liệu trên Web Giống như HTML, XML là một tập con của SGML Nhưng trong HTML các thẻ được mô tả với mục đích chính là mô tả cách trình bày dữ liệu trong một trang Web, ngược lại trong XML thì các thẻ được
sử dụng để mô tả chính các dữ liệu lưu trữ trong tài liệu đó Chính vì vậy một chương trình nhận một tài liệu XML có thể được biểu diễn bằng nhiều cách khác nhau, có thể trích lọc trực tiếp trên nội dung của dữ liệu XML đó, hoặc cũng có thể xây dựng một cấu trúc XML mới để phù hợp với ứng dụng của chương trình
Ngày nay khi mà có nhiều các ứng dụng thương mại hoạt động trên Web
và nhu cầu trao đổi thông tin tự động giữa các doanh nghiệp (Business to Business – B2B) ngày càng được đặt ra thì một hệ thống xử lý truy vấn trên
cơ sở dữ liệu XML tích hợp sẽ giúp cho người sử dụng thông thường có thể khai thác và xử lý thông tin một cách hiệu quả nhất, bao gồm: biểu diễn, trao đổi, lưu trữ và truy cập dữ liệu Dữ liệu được trích rút từ hệ thống có cấu trúc
và ngữ nghĩa sao cho có thể được hiểu bởi cả người và máy tính vì vậy còn có thể được sử dụng lại cho nhiều mục đích khác nhau Luận văn này trình bày cách thức để thực hiện xử lý được các truy vấn trên cơ sở dữ liệu tích hợp XML
Luận văn được chia thành 4 chương:
Chương 1: Các khái niệm cơ bản của XML
Chương 2: Phân tích XML
Chương 3: Chuyển đổi giữa XML và các mô hình dữ liệu
Chương 4: Xử lý truy vấn
Trang 9CHƯƠNG I: CÁC KHÁI NIỆM CƠ BẢN CỦA XML
I.1 XML là gì:
XML là viết tắt của Extensible Markup Language, XML được sử dụng
để mô tả các tài liệu và dữ liệu dưới một dạng chuẩn tức là dựa trên một định dạng của văn bản để cho phép dễ dàng truyền tải dữ liệu thông qua các giao
thức chuẩn của mạng XML là ngôn ngữ định dạng mở rộng và ngôn ngữ tổng
quát dùng để định nghĩa dữ liệu thông qua các thẻ XML được đưa ra với mục tiêu là tăng cường các kiểu dữ liệu nhưng loại bỏ tối đa tính phức tạp XML không thực sự là một ngôn ngữ mà là một chuẩn để tạo ra các ngôn ngữ thỏa mãn các quy chuẩn XML.[1]
Hiện nay, để xử lý dữ liệu trên Web và phát triển ứng dụng mạng, số thẻ
sẽ làm việc tiếp tục tăng lên ngày càng nhiều hơn và XML thực sự là một giải pháp cho sự tăng lên thường xuyên của các thẻ Do:
- Thứ nhất, ngôn ngữ XML trong sáng, đơn giản, dễ đọc, bởi được biểu diễn ở dạng thuần văn bản
- Thứ hai, ngôn ngữ XML cho phép tự định nghĩa thẻ nên mỗi người có thể tự đưa ra một tập thẻ của mình Tuỳ vào mục đích sử dụng cụ thể mà các tập thẻ đó có thể là quy ước trao đổi dữ liệu trong một lĩnh vực nào đó như ngân hàng
Trang 109
Hinh 1 1 – XML là hoàn toàn độc lập cho các ứng dụng
XML là ngôn ngữ định dạng thiên về mô tả cấu trúc dữ liệu và định nghĩa ngôn ngữ Để thực hiện xử lý trích rút và hiển thị dữ liệu của tài liệu XML có thể thực hiện một trong các cách:
- Sử dụng các mô hình tài liệu như DOM, SAX, DSO để trích rút dữ liệu XML
- Sử dụng bảng định kiểu CSS (Cascading Style Sheet) để định kiểu hiển thị cho dữ liệu XML
- Sử dụng ngôn ngữ định kiểu mở rộng XSL(Extension Style Language)
Hiện nay, XML là một chuẩn ngày càng được dùng rộng rãi trong công nghiệp phát triển phần mềm Và thực tế hàng trăm ngôn ngữ định dạng
chuyên dụng được định nghĩa trên XML đã ra đời như XHTML, (Extension HTML), WML(Wireless Markup Language), VoiceXML, UIML(User
Interface Markup Language), CML(Chemical Markup Language), MathML, XUL(XML User Interface Language)…
XML tiến hành mô tả bất kỳ công việc nào dưới dạng văn bản và việc định dạng của dữ liệu đó là hoàn toàn mở Điều này có nghĩa rằng bất cứ dữ
Trang 11liệu nào được mô tả dưới dạng như văn bản và nội dung của văn bản có thể thu nhỏ lại thành các thẻ XML thì đều được coi như là tài liệu XML Sự mở rộng để trở thành ngôn ngữ không chỉ dựa vào cú pháp cơ bản của XML mà còn dựa vào xem người phát triển có thể làm được gì
I.2 Cấu trúc của tài liệu XML:
Mặc dù các thành phần, thuộc tính và văn bản là một phần rất quan trọng cho việc thiết kế tài liệu XML Tuy nhiên để cho làm việc có hiệu quả thì các tài liệu XML phải tuân thủ theo một cấu trúc nhất định
- Trong cặp thẻ <?xml ?> còn có các thuộc tính đi kèm để mô tả, như:
+ Thuộc tính version để xác định phiên bản của chuẩn W3C XML Bộ
phân tích XML sẽ sử dụng thuộc tính version để xác định được các quy luật cho phép trong việc thực hiện phân tích tài liệu XML
+ Thuộc tính encoding để xác định bộ mã hóa chuẩn được sử dụng trong
tài liệu XML
Trang 1211
+ Thuộc tính standalone nhận hai giá trị logic “True” và “False” để
xác định tài liệu XML đang định nghĩa có sử dụng thêm tài nguyên từ các tệp khác nữa không
I.3 Cấu trúc các thành phần và thuộc tính:
Theo như mô tả của XML thì mọi tài liệu XML đều có chứa duy nhất một thành phần gốc của tài liệu Sau khi đã có thành phần gốc thì bắt đầu đi
mô tả các thành phần con bên trong của tài liệu
I.4 Cú pháp tài liệu XML:
XML mô tả dữ liệu và nội dung nó chứa dưới dạng các thẻ, dữ liệu được
mô tả với cấu trúc chính xác và tuân theo những quy luật sẵn có để định dạng Đồng thời XML cũng có những quy tắc về mặt cú pháp khi tiến hành mô tả
dữ liệu Các quy tắc về mặt cú pháp khi xây dựng tài liệu XML gồm:
- Tên thành phần XML phải giống nhau trong thẻ bắt đầu và thẻ kết thúc
(có phân biệt chữ hoa chữ thường)
- Thẻ kết thúc phải thêm ký hiệu „/‟ so với thẻ kết thúc
- Giá trị của các thuộc tính phải được đặt giữa cặp dấu nháy kép “”
- Nội dung chú thích được đặt giữa cặp thẻ <!- - và - ->
- Mọi thẻ mô tả thành phần phải luôn luôn được đóng
I.5 Không gian tên:
Do bản chất XML rất rộng, cho phép mọi cá nhân hay công ty đều có thể
tự tạo ra các kiểu tư liệu XML mô tả cho đặc thù riêng Vì thế có những trường hợp khi định nghĩa các tài liệu XML có các thẻ cùng tên nhưng mang
ý nghĩa khác nhau và được sử dụng với các mục đích khác nhau tùy từng cá nhân hay công ty
Trang 13Cách tốt nhất để giải quyết vấn đề này là làm sao cho từng thành phần có tên hoàn toàn riêng biệt không bị trùng đối với bất kỳ cá nhân hay cơ quan nào Từ đó hình thành khái niệm “Không gian tên”
Không gian tên là phương thức cho phép phân biệt và xác định những tên thành phần trùng nhau trong cùng một tài liệu XML Không gian tên có thể được sử dụng để mô tả các kiểu dữ liệu hay thông tin khác hoặc được dùng để định nghĩa ra các tên viết tắt
Trong XML không gian tên được xây dựng bằng cách sử dụng tiền tố trước phần khai báo của từng thành phần Khi đó tất cả các thành phần có cùng tiền tố đều thuộc về cùng một “phạm vi” với nhau
Ví dụ 1 2:
<?xml version=”1.0” encoding=”UTF-8”?>
<person>
<name>
<title> Sir </title>
<ho> Pham </ho>
<ten> Khanh </ten>
Trang 14I.6 Tài liệu XML hợp lệ:
Khi xây dựng tài liệu XML có một số quy luật chặt chẽ cho việc xây dựng các cấu trúc cơ bản cũng như các quy tắc về mặt cú pháp để có được các tài liệu XML hợp khuôn dạng Đồng thời cũng có một số định dạng để xác định khung cho việc xây dựng tài liệu XML hợp lệ Tính hợp lệ hay đúng đắn của tài liệu XML được xác định thông qua định nghĩa kiểu tài liệu(DTD – Document Type Definition) và sơ đồ XML
Các tài liệu XML được so sánh với các quy luật đã xác định dựa vào DTD hoặc dựa vào sơ đồ Tài liệu XML hợp khuôn dạng được xây dựng dựa vào hầu hết các yêu cầu đặt ra của một hay nhiều đặc trưng xác định sẽ được coi là tài liệu XML đúng đắn
Trang 15Thông thường thì sẽ không cần có cả DTD và sơ đồ trong một tài liệu XML vì cả hai đều cho phép xác định cùng một cấu trúc của tài liệu Tuy nhiên, để có được kết quả tốt nhất thì nên kết hợp cả sơ đồ và DTD trong một tài liệu XML Và tài liệu XML được tạo ra từ nhiều nguồn tài liệu khác nhau thì hay kết hợp cả DTD và sơ đồ Cả DTD và sơ đồ cho phép tham chiếu trực tiếp đến các đặc trưng chính của cấu trúc tài kiệu từ đó cho phép hiển thị tài liệu một cách tổng quát
I.6.1 Định nghĩa kiểu tài liệu – DTD:
a Định nghĩa kiểu tư liệu DTD là gì?
Một tài liệu XML được xem là hợp lệ và có giá trị khi toàn bộ các phần
tử trong tài liệu đề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ử thẻ còn gọi là định nghĩa kiểu tư liệu
b Tạo khai báo và định nghĩa kiểu dữ liệu DTD:
Để cho phép định nghĩa kiểu tư liệu cho các phần tử XML dùng thẻ
<!DOCTYPE> ở ngay vị trí đầu của tệp XML Tiếp đến định nghĩa các kiểu
tư liệu các phần tử bên trong cặp dấu ngoặc vuông [] Sau đó mỗi phần tử được bắt đầu định nghĩa bằng thẻ khai báo <!ELEMENT>
Cú pháp: <!ELEMENT NAME CONTENT_MODE>
Trong đó:
* NAME là tên của phần tử muốn định nghĩa
Trang 1615
* CONTENT_MODE là xác định chế độ tạo ra phần tử Có thể nhận
giá trị EMPTY, 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)
* Chú thích cho phần tử DTD:
Trang 17Chú thích được dùng như chú thích của XML Chú thích được sử dụng với mục đích để giải thích và làm rõ hơn các thành phần được sử dụng trong DTD Nội dung của chú thích được đặt giữa cặp ký hiệu <! và >
f Định nghĩa DTD ngoại:
Định nghĩa DTD ngoại cho phép các phần tử thẻ dựa trên các tham chiếu
đã được định nghĩa sẵn từ các tài liệu XML trước đó Các DTD xây dựng sẵn thường được lưu trữ trong tệp “.dtd”
Sử dụng định nghĩa DTD tham chiếu ngoại khiến cho các ứng dụng của XML có thể dễ dàng chia sẻ và dùng chung với các ứng dụng khác hơn Đây
là cách mà hầu hết các ứng dụng DTD đều hỗ trợ Có hai cách chỉ định một phần tử DTD tham chiếu ngoại: tham chiếu ngoại riêng, tham chiếu ngoại chung
* Tham chiếu ngoại riêng:
Định nghĩa DTD tham chiếu ngoại riêng được sử dụng cho một nhóm người và mang tính cá nhân Để khai báo và định nghĩa phần tử DTD tham chiếu ngoại riêng sử dụng từ khóa SYSTEM trong chỉ thị khai báo
<!DOCTYPE> và kèm theo là đường dẫn tới tệp sử dụng chung đó
* Tham chiếu ngoại dùng chung:
Tham chiếu ngoại dùng chung cho phép các thẻ DTD có khả năng làm tham chiếu ngoại dùng chung và liên kết với nhiều tài liệu khác nhau, để tạo tham chiếu dùng chung thì thay từ khóa SYSTEM ở phần trên bằng từ khóa PUBLIC
g Thực thể và thuộc tính DTD:
* Thực thể:
Một thực thể là cách XML tham chiếu đến một mục dữ liệu; thực thể thường là văn bản(text), tuy nhiên cũng có thể là dữ liệu nhị phân
Trang 1817
Các thực thể được khai báo trong phần định nghĩa DTD, sau đó trong tài liệu XML sử dụng thực thể bằng cách tham chiếu đến nó trong tài liệu Nói cách khác, khai báo một thực thể trong DTD và tham chiếu đến chúng bằng tham chiếu thực thể, tham chiếu này có thể trong nội dung tài liệu đối với tham chiếu tổng quát hoặc trong DTD đối với thực thể tham số Có hai loại thực thể XML: thực thể tổng quát và thực thể tham số
Ngoài ra, có thể định nghĩa riêng các thực thể bằng cách khai báo trong DTD Để khai báo sử dụng phần tử chỉ thị <!ENTITY> khi dùng DTD Cú pháp khai báo như sau:
<!ENTITY NAME DEFINITION>
- NAME là tên của thực thể Tên của thực thể được dùng để tham chiếu
đến nội dung của nó
- DEFINITION là định nghĩa của thực thể Nội dung của định nghĩa
đơn giản nhất là các văn bản muốn thay thế khi thực hiện tham chiếu đến
*Thuộc tính:
Các kiểu thành phần là các danh từ của XML thì các thuộc tính thành phần có thể được xem như là các tính từ Dùng các thuộc tính để mô tả dữ liệu mêta hoặc các tính chất của thành phần kết hợp
Mỗi thuộc tính được xác định bởi các đặc tính sau:
- Tên thành phần chứa thuộc tính
- Tên thuộc tính cần mô tả
- Kiểu của thuộc tính
- Giá trị mặc định của thuộc tính (nếu có)
Thuộc tính được sử dụng trong thẻ mở và thẻ rỗng của thành phần Thuộc tính nhằm mục đích cung cấp thêm thông tin cho phần tử thẻ Để khai
Trang 19báo thuộc tính dùng chỉ thị khai báo <!ATTLIST>, khi đó danh sách các thuộc tính sẽ kết hợp với phần tử thẻ DTD nào đó
ELEMENT_NAME: là tên của phần tử mà thuộc tính sẽ kết hợp
ATTRIBUTE_NAME; là tên các thuộc tính cần định nghĩa
TYPE: là kiểu của thuộc tính tương ứng cần định nghĩa TYPE có thể
nhận các nhiều giá trị khác nhau
DEFAULT_VALUE: là giá trị mặc định của thuộc tính Có thể nhận
các giá trị sau:
h Các hạn chế của DTD:
- Các DTD không thể mở rộng
- Mỗi tư liệu chỉ kết hợp với một DTD
- Các DTD không làm việc với các không gian tên XML
- Định kiểu dữ liệu rất yếu
- Các phần mô tả mô hình nội dung hạn chế
- Không có sự kế thừa đối tượng kiểu OO
- Một tư liệu có thể chạy đè/bỏ qua một DTD bên ngoài dùng tập con nội
bộ
- Cú pháp phi XML
- Không hỗ trợ DOM
Trang 2019
I.6.2 Sơ đồ - Schema:
DTD là một trong các phương pháp định chuẩn các tư liệu được định nghĩa trong XML 1.0 Ngoài ra còn có một số phương pháp khác cũng được
đề xuất với mục đích để tạo ra các tư liệu XML hợp lệ Một trong các cách đó
b Cách xây dựng lược đồ:
- Lược đồ là một tài liệu XML bắt đầu bằng phần tử <schema> và trong
đó có thể đặt tên cho lược đồ dựa vào thuộc tính name
- Ưu điểm nổi bật của lược đồ là cho phép định nghĩa và khai báo kiểu
dữ liệu thực sự mà người dùng muốn sử dụng
- Để định nghĩa một phần tử của tài liệu XML, trong lược đồ sử dụng phần tử khai báo <ElementType>
I.6.3 Bảng định kiểu:
Bảng định kiểu được viết tắt là CSS, là một khái niệm đã quen thuộc với những người lập trình Web Đó là một cách thức để quản lý và thiết kế giao
Trang 21diện các Web Site một cách đồng nhất Trong trường hợp XML, trở về với câu hỏi làm thế nào để trình duyệt hiểu và hiển thị XML, câu trả lời là do CSS
Đề tài liệu XML tham chiếu đến file định kiểu CSS, sử dụng chỉ thị sau
đi kèm phần đầu khai báo tài liệu:
<?xml-stylesheet type=”text/css” href= “style.css”>
Trình duyệt sẽ hiển thị tài liệu XML theo định dạng trong file.css Khi
đó với CSS, các quy định về màu sắc, font chữ, màu nền sẽ làm cho tài liệu XML thực sự sống động Mặt khác CSS cũng là cách thức tách vấn đề trình bày giao diện ra ngoài nội dung
I.7 XML được sử dụng như thế nào?
Tất cả các ý tưởng chính của XML được đưa ra với mục đích làm sao có thể sử dụng được XML mà không cần các công cụ hỗ trợ thêm khi làm việc trong các môi trường lập trình đã có Ngay từ khi hình thành, Java đã hỗ trợ rất mạnh XML, Java cung cấp hầu hết các hàm API cho phép sử dụng trực tiếp bằng các đoạn mã Java Có hai thao tác cơ bản làm việc với XML trong khi viết ứng dụng: Phân tích tài liệu XML đã có và thực thi dữ liệu XML đã được phân tích đó
Hinh 1 2 – Mô hình sử dụng XML trong các ứng dụng
Trang 2221
I.8 Các ứng dụng của XML:
XML có thể tự tạo ra tập các ngôn ngữ khác Ứng dụng của XML mang
ý nghĩa cho biết một tập các thẻ hay tâp con XML hoạt động trong riêng một lĩnh vực nào đó
I.8.1 XML để biểu diễn:
Một ứng dụng cơ bản nhất của XML là cách mô tả và hiển thị nội dung Trong trường hợp này, tiến hành định nghĩa nội dung của ứng dụng như là dữ liệu để hiển thị cho phía client và sau đó ứng dụng thể hiện nó dưới dạng định dạng của dữ liệu
I.8.2 XML để truyền thông:
Các dữ liệu của XML được sử dụng để chuyển đổi thông tin giữa các ứng dụng khác nhau Khả năng chuyển đổi này là dễ dàng được thực hiện bởi
vì dữ liệu XML là không cố định cho bất kỳ một client nào, client có thể là làm việc trên máy tính, trên điện thoại di động, trên PDA,… Chính vì lý do này mà XML cung cấp khả năng đơn giản dữ liệu để truyền tải qua mạng
Để các ứng dụng khác nhau có thể sử dụng được dữ liệu XML thì phải được chuyển đổi thành dữ liệu tương ứng cho ứng dụng đó thông qua XSL stylesheet
Hinh 1 3 – Sơ đồ chuyển đổi dữ liệu XML giữa các ứng dụng
Trang 23I.8.3 XML-RPC:
Một trong ứng dụng đặc biệt của XML là XML-RPC XML-RPC là sự trao đổi giữa các thiết bị trong ứng dụng hay được dùng để chia sẻ một tập các chức năng thực hiện thông qua các ứng dụng RPC được sử dụng để tạo ra các lời gọi thông qua mạng và cũng nhận các trả lời tương ứng thông qua mạng
Hinh 1 4 – Cơ chế trao đổi và gửi thông điệp trong XML-RPC
I.8.4 B2B:
Business-to-business là sự trao đổi không phải giữa các ứng dụng khác nhau mà là sự trao đổi giữa các công ty và có thể giữa các khu công nghiệp Trong trường hợp này, XML thực sự hiệu quả bởi vì không chỉ cho phép làm việc với một phạm vi lớn các công ty mà còn cho phép trao đổi giữa các hệ thống đã đóng
Trang 24- Việc tìm kiếm dữ liệu thực hiện dễ dàng và hiệu quả Các công cụ tìm kiếm có thể dễ dàng phân tích các tài liệu XML Các thẻ cung cấp cho các động cơ tìm kiếm cơ chế thông minh
- XML cho phép định nghĩa kiểu thẻ với tất cả các kiểu quy tắc, như các thẻ thể hiện các quy tắc thương mại, các thẻ thể hiện mô tả dữ liệu hay các quan hệ dữ liệu
- Mã XML dễ đọc hơn, kể cả đối với người không có nhiều kinh nghiệm trong lĩnh vực
Trang 25CHƯƠNG II: PHÂN TÍCH XML
Khi đã có một tài liệu XML thì công việc khó khăn là tiến hành đọc để phân tích tài liệu XML đã có Khi đó phải sử dụng bộ phân tích XML để phân tích và đọc tài liệu XML Bộ phân tích XML tiến hành phân chia các
thành phần của tài liệu XML thành các API Các ứng dụng khách sau đó
tiến hành đọc để hiểu các tài liệu XML này thông qua các API đã có Để việc đọc có được kết quả chính xác thì bộ phân tích phải tiến hành kiểm tra các tài liệu xem đã được xây dựng hợp lệ hoặc đúng cú pháp chưa để xác định được các lỗi xử lý tương ứng
Cấu trúc và cú pháp của tài liệu XML được mã hóa thành các thẻ và các thuộc tính Và để xác định được cấu trúc này thì cần phải có bộ phân tích XML tương ứng
Bộ phân tích là thư viện phần mềm để đọc tài liệu XML và kiểm tra xem tài liệu đó đã hợp lệ hay chưa Các ứng dụng khách sử dụng các phương thức bằng cách thực hiện lời gọi tới các API để nhận các thông tin
từ bộ phân tích để có thể khôi phục lại được dữ liệu từ tài liệu XML Bộ phân tích cũng đồng thời thực hiện che giấu ứng dụng khách tất cả các phần phức tạp và các thông tin không cần thiết, như bao gồm:
- Chuyển đổi tài liệu thành dạng Unicode
- Tập hợp các thành phần phức tạp của tài liệu được phân chia thành các thực thể
- Giải quyết vấn đề tham chiếu đặc trưng
- Hiểu các vùng CDATA
- Kiểm tra hàng trăm các hằng hợp khuôn dạng đã có
- Duy trì danh sách các không gian tên trong phạm vi của từng thành phần
Trang 2625
- Chuyển đổi cho hợp lệ tài liệu thành các DTD hoặc sơ đồ
- Kết hợp các thực thể không phần tách với các địa chỉ URL và các ký hiệu
- Xác định kiểu cho các thuộc tính
Từ đó, một chương trình xử lý XML được chia thành hai công việc cơ bản:
- Bộ phân tích thực hiện phân tích và xử lý tài liệu XML đã có
- Sau đó các chương trình ứng dụng sử dụng tất cả nội dung đã được phân tích
Hinh 2 1 – Kiến trúc một chương trình XML cơ bản
II.1 Phân tích XML bằng DOM:
II.1.1 DOM là gì?
DOM là viết tắt của Document Object Model DOM cung cấp một biện
pháp để làm việc với các tài liệu XML thông qua việc dùng mã, và cung cấp một cách để giao tiếp với mã đó trong các chương trình
DOM là mô hình hiển thị dưới dạng cây của dữ liệu XML, với một thành phần gốc và các thành phần con cũng như thuộc tính mô tả tương ứng Trong đó mỗi thành phần tương ứng trong cây được coi là một nút của cây Mỗi nút trong cây XML dùng để mô tả một thành phần trong tài liệu XML tương ứng Các thành phần, thuộc tính và văn bản là các thành phần lồng
Trang 27nhau tại nhiều mức sao cho mô tả tương ứng với các thành phần trong tài liệu XML
DOM tạo ra bản mô tả của tài liệu HTML và tài liệu XML dưới dạng một cây kế thừa gồm các nút đối tượng Trong cây này có một thành phần gốc và các nút khác là con của nút gốc hay còn được gọi là nhánh của cây
II.1.2 DOM XML:
DOM được bổ sung dưới dạng một tầng giữa trình phân ngữ XML và ứng dụng cần thông tin trong tài liệu, nghĩa là trình phân ngữ đọc dữ liệu ứng dụng từ tài liệu XML rồi nạp dữ liệu đó vào một DOM, sau đó DOM được dùng bởi một ứng dụng cấp cao hơn Ứng dụng có thể thực hiện những thao tác mong muốn với thông tin này kể cả việc đặt nó vào một mô hình đối tượng khác
Hinh 2 2 – Sơ đồ xử lý tài liệu XML
Do đó, để viết một ứng dụng truy cập một tài liệu XML thông qua DOM, cần có một trình phân ngữ XML và một thực thi DOM cài đặt trên máy DOM là giao diện lập trình ứng dụng cho tài liệu XML và HTML DOM thực hiện định nghĩa một cấu trúc logic của các tài liệu và xác định cách thức mà tài liệu được truy cập và thực thi Trong mô tả của DOM thì thành phần “document” được sử dụng trong một phạm vi rộng, XML được
sử dụng như là cách để mô tả nhiều loại thông tin khác nhau mà có thể
Trang 28sử dụng DOM dưới dạng một biểu thức thực hiện Như vậy, các giao diện DOM sử dụng cho XML là không bị giới hạn DOM là hệ giao tiếp lập trình ứng dụng cho các tài liệu
Ví dụ: cho một tài liệu HTML
Trang 29Hinh 2 3 – Sơ đồ DOM của tài liệu HTML ví dụ
Trong DOM, các tài liệu có cấu trúc được mô tả dưới dạng cây Tuy nhiên không xác định cây đó được tạo ra như thế nào và giữa các thành phần có quan hệ bắt buộc ra sao DOM chỉ là mô hình logic để có thể được thực thi một cách thuận tiện Một đặc trưng quan trọng của DOM đó là mô
hình của DOM là mô hình “structural isomorphism’: thực hiện hai mô hình DOM để tạo ra mô tả cho cùng tài liệu thì khi đó sẽ tạo ra cùng một mô hình cấu trúc cùng thể hiện các đối tượng và các mối quan hệ giống nhau
DOM có nghĩa là tiến hành mô hình hóa các tài liệu dưới dạng các đối tượng, bao gồm mô tả vầ mặt cấu trúc của tài liệu và mô tả cả các đặc trưng của tài liệu tương ứng Hay nói cách khác, các nút trong sơ đồ mô tả tài liệu bằng DOM không chỉ hiện thị cấu trúc của dữ liệu mà còn mô tả cả các chức năng cũng như các đặc trưng của dữ liệu đó Khi mô tả dữ liệu dưới dạng đối tượng, DOM tiến hành mô tả các yếu tố sau:
- Các giao diện và các đối tượng được sử dụng để mô tả và thực thi của tài liệu
- Định nghĩa các giao diện và các đối tượng tương ứng: bao gồm cả các đặc trưng và các thuộc tính
- Các mối quan hệ và các ràng buộc giữa các giao diện và các đối tượng
Trang 3029
II.1.3 Các giao diện quan trọng trong DOM:
DOM không đơn thuần là một API để làm việc với các tài liệu XML; nó còn được dùng để làm việc với các tài liệu XML, các bản kiểu dáng CSS,
và nhiều tài liệu đa dạng khác
Do có các kiểu thực thi DOM khác nhau nên DOM cung cấp hai loại khác nhau: DOM cơ bản và DOM HTML DOM cơ bản là một tập hợp cốt lõi giao diện để làm việc với các tài liệu cơ bản DOM HTML là một số modun tùy chọn để làm việc với các loại tài liệu khác
DOM cung cấp các giao diện dưới dạng kế thừa của các nút đối tượng Các giao diện hoặc có các nút con hoặc chứa các nút khác hoặc là các nút
lá của cây Các kiểu của nút con hoặc của nút là bao gồm: Document, Node, Element, NodeList
Trang 31Hình 1: Cơ chế kế thừa các giao diện sử dụng trong DOM
*Document:
Giao diện Document trong DOM định nghĩa các phương thức để thực hiện xử lý trên đối tượng Document của tài liệu XML Giao diện có các phương thức cơ bản:
CreateAttribute(name) Tạo ra một đối tượng thuộc
tính mới với tên name đưa vào
CreateCDATASection(data) Tạo ra một đối tượng
CDATASection thông qua data
CreateComment(data) Tạo ra một đối tượng chú
thích
Trang 3231
CreateDocumentFragment() Tạo ra một đối tượng rỗng
Element mới
CreateEntityReference(name) Tạo ra một đối tượng
EntityReference thông qua name
CreateProcessinginstruction(target,da
ta)
Tạo ra một đối tượng câu lệnh
chỉ dẫn thông qua target
AppendChild(child) Thêm một đối tượng con mới child
vào cuối của danh sách hiện tại
CloneNode(deep) Tạo một đối tượng mới giống đối
tượng đã có hiện tại
HasAttributes() Trả lại giá trị True nếu nút có tồn tại
một thuộc tính nào đó
insertBefore(child,before) Chèn một Node đã tạo child vào
trước Node xác định before
HasChildNode() Trả lại giá trị True nếu Node có các
nút con và ngược lại trả giá trị False Normalize() Ghép tất cả các nút văn bản thành
một xâu đầy đủ và thành một thành phần con của Node
RemoveChild(child) Hủy bỏ một nút con child từ danh
sách đã có
ReplaceChild(child,toReplace) Thay thế một nút con xác định child
bằng một nút con khác toReplace
Bảng 2 2 – Phương thức của giao diện Node trong DOM
Ngoài ra, Node có các thuộc tính sau để cho phép xác định các đặc tính
Trang 332: Attribute 3: Text 4: CDATA Section 5: Entity Reference 6: Entity
7: Processing instruction 8: Comment
9: Document 10: Document Type 11: Document Fragment 12: Notation
ParentNode Chứa Node cha của Node hiện tại (nếu có)
ChildNode Chứa danh sách các Node con của Node hiện tại FirstChild Chứa Node đầu tiên trong danh sách
LastChild Chứa Node cuối cùng trong danh sách
PreviousSibling Node trước của Node hiện tại
NextSibling Node sau của Node hiện tại
Attributes Danh sách các thuộc tính của Node( nếu có)
Bảng 2 3 – Các thuộc tính cơ bản của giao diện Node trong DOM
Mỗi Node còn định nghĩa thêm hai thuộc tính để thực thi các thao tác trên đối tượng, gồm:
NodeName: xác định tên của Node, ví dụ: đối với thành phần thì chứa
tên của thẻ làm việc
NodeValue: chứa giá trị hiện có của một Node được xét
GetAttribute(name) Trả lại giá trị của thuộc tính thông qua đưa
tên gọi của thuộc tính
GetAttributrNS() Gọi ra các thuộc tính nhưng được xác định
thông qua tên và không gian tên GetAttributeNode() Gọi ra các thuộc tính của Node thông qua
tên
Trang 3433
GetAttributeNodeNS() Gọi ra các thuộc tính của Node thông qua
tên và không gian tên GetElementByTagName() Trả lại danh sách các Node con của một
thành phần được xác định bằng tên GetElementByTagNameNS()
Trả lại danh sách các Node con của một thành phần được xác định bằng tên và không gian tên
HasAttribute()
Trả lại giá trị True nếu như Element có các thuộc tính mô tả trong nó Element được xác định thông qua tên
HasAttributeNS()
Trả lại giá trị True nếu như Element có các thuộc tính mô tả trong nó Element được xác định thông qua tên và không gian tên RemoveAttribute(name) Hủy bỏ một thuộc tính đã xác định của
thành phần
RemoveAttributeNS() Hủy bỏ một thuộc tính xác định của
Element thông qua tên và không gian tên RemoveAttributeNode() Hủy bỏ thuộc tính của một nút xác định SetAttribute(name,value) Tạo ra một thuộc tính mới với tên và giá
trị đã được xác định SetAttribute(attr) Thêm thuộc tính attr cho thành phần
SetAttributeNode()
Thêm thuộc tính mới cho các nút Nếu thuộc tính đã có thì chỉ thay đổi giá trị của thuộc tính tương úng
SetAttributeNodeNS()
Thêm thuộc tính mới cho các nút Nếu thuộc tính đã có thì chỉ thay đổi giá trị của thuộc tính tương úng Thuộc tính được xác định bởi tên và không gian tên
Bảng 2 4 – Các phương thức của giao diện Element trong DOM
*NodeList
NodeList là giao diện được xây dựng để quản lý và làm việc với danh sách các nút NodeList kế thừa từ giao diện Node Vì vậy, ngoài các
Trang 35phương thức của Node được sử dụng trong NodeList thì NodeList còn có một số phương thức mới hỗ trợ làm việc với danh sách các nút
GetChildNodes() Trả lại danh sách các Node hiện có trong
NodeList item()
Trả lại vị trí xác định của một Node trong danh sách NodeList
Ví dụ: để lấy thành phần đầu tiên sử dụng
item(0) Bảng 2 5 – Các phương thức của Nodelist trong DOM
*Attr
Dùng để quản lý các thuộc tính của các Node Attr định nghĩa ba thuộc
tính cơ bản sau:
Name: để lưu giữ tên của thuộc tính
Value: để lưu giữ giá trị của thuộc tính
Specified: để mô tả thuộc tính đã được nhận giá trị hay chưa, Specified
có giá trị TRUE nếu như thuộc tính đã được nhận một giá trị trong tài liệu
và nhận giá trị FALSE nếu như thuộc tính chỉ có giá trị mặc định lấy từ DTD
Ngoài các giao diện Node, Element, NodeList thì DOM còn cung cấp một số giao diện khác để có thể mô tả một cách đầy đủ và chính xác tài liệu
II.1.4 Khi nào sử dụng DOM
Thực thi DOM được tiến hành trong bộ nhớ lưu trữ của tài liệu Các lợi ích thu được khi sử dụng DOM:
- Cho phép truy cập ngẫu nhiên đến các thành phần trong tài liệu
- Có thể thực hiện thao tác tìm kiếm phức tạp trong tài liệu một cách dễ dàng
Trang 3635
- Có thể đọc và viết trên tài liệu
II.2 Phân tích XML bằng SAX:
SAX được coi là một API đơn giản để cho XML, SAX thực hiện dựa trên hai giao diện chính:
- Giao diện XMLReader để thể hiện bộ phân tích
- Giao diện ContenHandler để nhận các dữ liệu từ bộ phân tích
II.2.1 SAX là gì?
SAX là một API đơn giản của XML và được đưa ra vào cuối năm
1997 và đầu năm 1998 bởi Peter Murray-Rust SAX được thiết kế dựa trên chiều hướng các giao diện trừu tượng hơn là các lớp hiện thực vì thế nó được thể hiện dưới dạng các tầng trên của các bộ phân tích đã có thông qua API
Khi sử dụng SAX có thể thực hiện trên nhiều phiên bản bộ phân tích với các kiến trúc khác nhau
II.2.2 Các bước sử dụng SAX:
Có ba bước sử dụng SAX trong ứng dụng:
1 Tạo mô hình đối tượng
2 Tạo ra bộ phân tích SAX tương ứng
3 Tạo ra tài liệu mô tả tương ứng
II.2.3.Trường hợp lựa chọn bộ phân tích SAX:
Khi tiến hành xử lý và phân tích trên tài liệu XML lớn thì việc sử dụng bộ phân tích SAX đạt hiệu quả cao hơn so với việc sử dụng DOM Khi sử dụng bộ phân tích SAX có một số lợi ích sau:
- Phân tích trên mọi tài liệu có kích cỡ khác nhau
- Tự xây dựng cấu trúc tài liệu theo mong muốn
Trang 37- Chỉ phải truy cập đến một tập nhỏ của thông tin khi cần thiết
- Thực hiện xử lý nhanh
So với giao diện dựa trên đối tượng (DOM), SAX có một số khác biệt sau:
- Xử lý ở mức thấp hơn so với các giao diện dựa trên đối tượng
- Cho phép thực hiện nhiều thao tác hơn
- Thực hiện hiệu quả hơn so với giao diện dựa trên đối tượng
- Yêu cầu thực hiện nhiều công việc hơn so với giao diện dựa trên đối tượng
II.2.4 Phân tích bằng SAX:
Phân tích là công việc tiến hành đọc tài liệu XML và báo cáo lại các nội dung chứa trong tài liệu đó cho các ứng dụng Client trong khi kiểm tra xem tài liệu có hợp khuôn dạng hay không
Khi thực hiện phân tích XML, các sự kiện không được liên kết đến các hành động mà các thành phần trong tài liệu XML sẽ được đọc Khi đó
có các sự kiện sau được thực hiện:
- Các thẻ mở của thành phần
- Các thẻ đóng của thành phần
- Nội dung chứa bên trong của thành phần
- Các thực thể
- Các lỗi xẩy ra khi thực hiện phân tích
Trong SAX các sự kiện được định nghĩa như là các phương thức để xác định các giao tiếp Java, SAX gồm có một số giao diện chính sau:
- DocumentHandler: định nghĩa các sự kiện liên quan đến tài liệu, ví
dụ như mở và đóng Hầu hết các ứng dụng để hỗ trợ các sự kiện cơ bản này
Trang 3837
- DTDHandler: định nghĩa các sự kiện liên quan đến DTD
- EntityResolver: định nghĩa các sự kiện làm việc với thực thể
- ErrorHandler: định nghĩa các sự kiện để kiểm soát lỗi có thể xảy
ra
SAX mô tả các bộ phân tích như là các trạng thái của giao diện XMLReader Khi đó có các lớp đặc biệt để thực thi các giao diện khác nhau này để thực hiện trên các bộ phân tích và mỗi khi bộ phân tích nhận dạng được một thành phần mới trong tài liệu thì ngay lập tức sinh ra sự kiện mới mô tả tương ứng
II.2.5 Các giao diện Callback:
SAX sử dụng các mẫu thiết kế Observer để nói với các ứng dụng
Client xem nội dung của tài liệu làm việc là cái gì Và các bộ phát triển Java có hầu hết các mẫu này từ các kiến trúc của AWT và Swing Khi đó,
các thành lập trình viên Client thực thi giao diện như là MouseListener để
nhận các sự kiện thông qua các phương thức đã có Sau đó các lập trình
tiến hành đăng ký đối tượng MouseListener với thành phần dưới dạng một Button bằng cách sử dụng phương thức SetMouseListener() Và sau đó
khi người sử dụng di chuyển hoặc kích chuột trong vùng của các nút để cho
phép đăng ký đối tượng MouseListener
Khi bộ phân tích đọc đến thành phần nào của tài liệu thì thực hiện gọi đến các phương thức tương ứng Ví dụ: Khi bộ phân tích đọc được thẻ bắt
đầu thì gọi điến phương thức startElement(), khi bộ phân tích tiến hành
đọc một số nội dung chứa trong đó thi gọi thông qua phương thức
Character(), cuối cùng khi bộ phân tích gặp phải thẻ kết thúc của tài liệu thì gọi đến phương thức endElement() Khi bộ phân tích đọc câu lệnh chỉ dẫn thì sẽ gọi đến phương thức processinginstruction(), còn sau đó nội
Trang 39dung của tài liệu bao gồm: tên thẻ, các thuộc tính của thể và các tham số sẽ được đưa vào tương ứng dưới dạng các tham số của phương thức
II.2.6 Nhận tài liệu:
Một cách tổng quát, một XMLReader có thể phân tích nhiều tài liệu
và thực hiện các thao tác đó trong cùng một contentHandler Tuy nhiên,
vấn đề quan trọng ở đây là phải xác định được tài liệu nào được xử lý cuối cùng và tài liệu nào được xử lý đầu tiên Để quản lý thông tin này, bộ phân
tích sẽ bao gồm phương thức startDocument() để thực hiện bắt đầu việc
phân tích một tài liệu mới trước khi thực hiện bất kỳ phương thức nào trong ContentHandler Cuối cùng tiến hành gọi đến phương thức
endDocument() sau khi kết thúc việc phân tích tài liệu
II.2.7 Nhận các thành phần tài liệu:
Trong khi tiến hành phân tích tài liệu XML, công việc chính của SAX
là báo các thẻ kết quả chứ không phải các thành phần Khi bộ phân tích
nhận được thẻ bắt đầu nó sẽ gọi đến phương thức startElement() và tương
tự khi nhận được thẻ kết thúc thì phương thức endElement() sẽ được gọi
đến, còn trong trường hợp khi gặp các thẻ rỗng thì cả hai phương thức
startElement() và endElement() đều đồng loạt được gọi đến Nếu thể kết
thúc không tương ứng phù hợp với thẻ bắt đầu thì bộ phân tích sẽ chuyển
đến dòng SAXParserException để kiếm soát lỗi xảy ra
II.3 Kết luận:
Phân tích XML là kỹ thuật để kiểm tra xem tài liệu XML được xây dựng đã hợp lệ và đúng chưa Để phân tích XML có thể sử dụng: DOM,SAX,…
Trong chương này trình bày các khái niệm và các giao diện cơ bản trong DOM và SAX để hỗ trợ cho việc thực hiện phân tích tài liệu XML đã
Trang 4039
có Sự khác nhau cơ bản giữa hai mô hình phân tích này là: Mô hình DOM thực hiện phân tích tài liệu dưới dạng sơ đồ cây và ngược lại mô hình SAX thực hiện phân tích tài liệu thành các giao diện đối tượng cơ bản