Tải bản đầy đủ
1 Tổng Quan Về XML

1 Tổng Quan Về XML

Tải bản đầy đủ

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

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

1.1.2 Giới thiệu về XML.
XML (viết tắt từ tiếng Anh eXtensible Markup Language:Ngôn ngữ đánh dấu
mở rộng) .Là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị,để tạo ra
các ngôn ngữ đánh dấu khác. Đây là một tập con đơn giản của SGML, có khả
năng mô tả nhiều loại dữ liệu khác nhau. Mục đích chính của XML là đơn giản
11

hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các hệ thống
được kết nối với Internet. Các ngôn ngữ dựa trên XML(thí dụ RDF, RSS,
MathML, XHTML, SVG, GML và Cxml) được định nghĩa theo cách thông
thường, cho phép các chương trình sửa đổi và kiểm tra hợp lệ bằng các ngôn ngữ
này mà không cần có hiểu biết trước về hình thức của chúng.

1.1.3 Cấu trúc tài liệu XML
Tài liệu XML:
Một tài liệu HTML có thể tồn tại một số thẻ không đúng quy định (trình biên
dịch sẽ bỏ qua những thẻ này). Tuy nhiên với một tài liệu XML thì điều này
không thể xảy ra. Khi xây dựng một tài liệu XML, nó phải tuân thủ theo một số
quy luật nào đó. Những tài liệu XML tuân thủ đúng những quy luật này được gọi
là well-formed (tạm dịch là định dạng đúng). Với một tài liệu không phải là
well–formed, Internet Explorer sẽ thông báo lỗi khi nạp tài liệu này. Một tài liệu
XML well–formed chưa chắc là một tài liệu hợp lệ. Một tài liệu XML được xem
là hợp lệ nếu nó đảm bảo những quy tắc đặc tả trong tài liệu Document Type
Definition (DTD) hay giản đồ (schema). Một DTD hay schema sẽ định nghĩa mọi
thứ từ cấu trúc dữ liệu tới kiểu dữ liệu, những thuộc tính được yêu cầu, và những
ràng buộc về thành phần và thuộc tính được kết hợp trong tài liệu. Phương thức
kiểm tra tài liệu này thường được sử dụng trong giao tiếp giữa ứng dụng – ứng
dụng, đảm bảo dữ liệu trao đổi hợp lệ tránh dẫn tới những ảnh hưởng của dữ liệu
không hợp lệ trên toàn hệ thống .
Tài liệu XML có thể viết bằng trình soạn thảo thông thường (Notepad), hay
các trình soạn thảo chuyên dụng của XML: XML Notepad, XMLWriter, XML
Spy, ....

Cấu trúc của tài liệu XML:
Tài liệu XML chỉ chứa đựng dữ liệu và cách lưu trữ dữ liệu mà không hề đề
cập tới cách thức trình bày dữ liệu. Một tài liệu XML sẽ chứa những đặc tả về
cấu trúc dữ liệu. Mỗi cấu trúc gồm nhiều phần tử (element), mỗi phần tử được
bắt đầu với một thẻ bắt đầu (Start–tag) và kết thúc với một thẻ kết thúc (End–

12

tag). Giữa Start–tag và End–tag là nội dung của phần tử này. Nội dung có thể bao
gồm dữ liệu văn bản hay có thể là một phần tử khác.
Phần mở đầu
Phần nội dung
Khai Báo
Mổ tả cấu trúc tài liệu

Hình 1.c: Cấu trúc tài liệu XML
Một tài liệu XML có thể được chia thành 2 thành phần chính, mỗi thành phần
có thể có các thành phần theo quy định khác nhau.
Phần mở đầu (PROLOG) chứa các khai báo trong tài liệu XML như: khai báo
phiên bản sử dụng của XML, cách thức mã hóa dữ liệu, chỉ thị xử lý, định nghĩa
kiểu tài liệu cho tài liệu DTD, các chú thích, các khoảng trắng.
Chuẩn XML không bắt buộc phải khai báo phần mở đầu của XML. Tuy nhiên
W3C khuyến khích chúng ta nên sử dụng phần khai báo này, ít nhất cũng là phần
khai báo phiên bản sử dụng của XML.
Phần thân (BODY) của tài liệu chứa nội dung của dữ liệu bao gồm một hay
nhiều thành phần (bắt buộc phải có ít nhất một thành phần), những thành phần
này bao gồm các phần tử (element). Mỗi phần tử bao gồm một cặp thẻ (thẻ bắt
đầu và thẻ kết thúc). Phần tử đầu tiên của tài liệu được coi là phần tử gốc (root
element). Tất cả các tài liệu XML được gọi là hợp khuôn dạng nếu chứa đựng
duy nhất một phần tử gốc. Phần tử gốc chứa đựng tất cả các thành phần và các
cặp thẻ khác trong tài liệu.
13

1.1.4 Các thành phần cơ bản của tài liệu XML
Định dạng và dữ liệu kí tự:
Tài liệu XML được tạo thành từ thành phần định dạng và thành phần dữ liệu
kí tự. Trong tài liệu XML, định dạng giúp phân biệt các thành phần khác nhau
trong tài liệu XML hay các nút khác nhau trong cây XML. Định dạng bao gồm
thẻ bắt đầu, thẻ kết thúc, các phần tử thẻ rỗng, các tham chiếu thực thể, tham
chiếu kí tự,lời chú thích, phân đoạn CDATA, khai báo kiểu tài liệu và chỉ thị xử
lý. Tất cả các tài liệu còn lại trong tài liệu XML không phải định dạng đều được
xem là dữ liệu kí tự.
- Các khai báo XML:
Một tài liệu XML có thể bắt đầu khai báo cho biết tài liệu được viết theo định
dạng và đặc tả XML. Nếu sử dụng khai báo XML, khai báo này phải được đặt ở
dòng đầu tiên của tài liệu. Không được khai báo XMl sau bất kỳ dòng nào khác.
Khai báo XML trong tài liệu được viết theo cấu trúc:

- Các khai báo trong XML gồm
Khai báo phiên bản (verion): Khai báo này cho biết phiên bản đặc tả XML
mà tài liệu sử dụng (khai báo này là tùy chọn nhưng W3C khuyến cáo nên sử
dụng khai báo này).
Khai báo mã hóa (encoding): Bộ mã được sử dụng trong tài liệu trong tài
liệu XML mặc định là UTF-8. Ngoài ra có thể sử dụng các bộ mã khác như
Unicode, UCS-2, USC-4,.... (khai báo này là tùy chọn).
Khai báo thực thể độc lập (standalone): Được đặt thuộc tính là “yes” nếu tài
liệu không tham chiếu đến các thực thể khác bên ngoài, ngược lại được đặt là
“no” (khai báo này là tùy chọn).
- Phần chú thích:
Chú thích trong XML tương tự với chú thích trong HTML. Khi diễn dịch nội
dung tài liệu, các bộ phân tích thường bỏ qua những dòng chú thích.
Chú thích trong XML được đặt trong cặp kí tự >.
14

Cần tuân theo một số quy tắc khi thêm dòng chú thích vào tài liệu XML :
+ chú thích không được đặt trước các khai báo.
+ Không được đặt trước chú thích vào bên trong phần định dạng
+ Không dùng chuỗi -- bên trong chú thích
- Chỉ thị xử lý
Các chỉ thị xử lý được dùng để chỉ dẫn cho bộ phân tích cách xử lý tài liệu
XML trong quá trình phân tích. Những chỉ thị này thường bắt đầu bằng dâu Kết thúc cũng bằng dấu ?> tương tự như phần khai báo.
Ví dụ: Chỉ thị yêu cầu bộ phân tích kết hợp dữ liệu của XML với bảng định
kiểu CSS:

- Thẻ và các phần tử (element)
Cấu trúc tài liệu XML dựa trên các thành phần định dạng (markup). Những
thành phần này bao gồm các phần tử (element). Ngoại trừ các phần tử rỗng sẽ
được định nghĩa bằng một thẻ. Thẻ bắt đầu (còn gọi là thẻ mở) và bắt đầu bằng kí
tự < và kết thúc bằng kí tự >. Thẻ kết thúc (còn gọi là thẻ đóng) bắt đầu bằng kí
tự .
Tên thẻ có thể bắt đầu bằng kí tự, gạch chân “_” hoặc dấu hai chấm “:”. Các
kí tự kế tiếp có thể là kí tự, kí số, gạch chân, gạch nối, dấu chấm,dấu hai chấm
nhưng không được là khoẳng trắng.
Mỗi phần tử trong cùng một tài liệu XML là duy nhất. Bộ phân tích tài liệu
XML phân biệt chữ hoa và chữ thường nên khi đặt tên cho các thẻ và thuộc tính
cần phân biệt chữ hoa và chữ thường.
Phần tử rỗng: Là phần tử chỉ có một thẻ duy nhất được đặt trong cặp dấu <
/>.

Phần tử gốc (root element): Là phần tử chứa đựng tất cả các phần tử và

các cặp thẻ khác trong tài liệu. Phần tử gốc được xem là phần rất quan trọng
trong cấu trúc XML.
- Thuộc tính (attribute)
Thuộc tính của các thẻ trong tài liệu XML tương tự thuộc tính của các thẻ
HTML. Thuộc tính được kết hợp theo cặp name – value. Thuộc tính cho phép
15

xác định thêm thông tin và thuộc tính của thẻ. Thuộc tính được đặt trong thẻ mở
và thẻ rỗng. Để gán giá trị cho thuộc tính thường dùng dấu “ =”.
Thuộc tính luôn được gán giá trị kiểu text (do phần định dạng luôn là văn
bản text). Trong XML, giá trị của thuộc tính phải đặt trong cặp dấu nháy kép “”.
Tuy nhiên, nếu giá trị chuỗi truyền cho thuộc tính bao gồm luôn cả dấu nháy kép
ta có thể sử dụng dấu nháy đơn thay thế.
- Phân đoạn CDATA
Phân đoạn CDATA cũng là một phần tử trong tài liệu XML nhưng chỉ gồm
một thẻ. Thẻ này bắt đầu bằng . Toàn bộ nội dung
được đặt trong phân đoạn CDATA sẽ không được trình phân tích coi như cấu trúc
XML mà chúng chỉ được xem như là dữ liệu thuần túy.
- Không gian tên (namespace)
XML cho phép tự định nghĩa và đặt tên cho các thẻ. Nếu tài liệu XML chỉ
sử dụng cho mục đích nào đó và không cần phải kết hợp với các tài liệu XML
khác thì điều này không thành vấn đề. Nhưng một khi các ứng dụng phát triển,
tập định nghĩa các thẻ XML cần sống chung và kết hợp với nhau thì đó là vấn đề.
Để định nghĩa không gian tên cho các thẻ , ta đưa vào thuộc tính xmls:prefix
vào gốc phần tử. Trong đó prefix là tên miền hay không gian tên mà ta muốn chỉ
định, mỗi không gian tên có một định danh duy nhất (có thể là định danh URL
hoặc URI). Sau đó áp dụng không gian tên này cho tất cả các thẻ trong tài liệu
XML mà ta muốn chúng thuộc không gian tên đã định nghĩa theo cú pháp:
đối với thẻ mở,
đối với thẻ đóng.
Ví dụ 1.1: Cho một tài liệu XML chưa định nghĩa không gian tên như sau:




Hoang Van Thanh

16


120


Thai Nguyen


0989582491



Không gian tên danhsachsv được tạo cho thư viện như sau:
Xmlns:danhsachsv=http://www.danhsachsv.com.vn/ds>


Hoang Van Thanh


120


Thai Nguyen


0989582491



Sau đó áp dụng không gian tên cho các thẻ trong tài liệu XML như sau:

17

Xmlns:danhsachsv=http://www.danhsachsv.com.vn/ds>


Hoang Van Thanh

< danhsachsv:NganhHocID>
120

< danhsachsv:DiaChi>
Thai Nguyen

< danhsachsv:DienThoai>
0989582491




1.1.5 Cấu trúc XML hợp khuôn dạng
Một tài liệu XML được coi là một tài liệu hợp khuôn dạng nếu tuân theo các
quy tắc sau:
- Các khai báo XML cần được đặt ở dòng đầu tiên của tài liệu. Khai báo chỉ
thị xử lý XML đầu tiên không bắt buộc, tuy nhiên nếu sử dụng thì phải đặt chúng
ở ngay dòng đầu tiên của tài liệu. Nếu không thực hiện được yêu cầu này, tài liệu
XML được xem là không hợp lệ.
- Tài liệu XML chỉ có một phần tử gốc, các phần tử khác nếu có phải là con
của phần tử gốc.
- Mọi phần tử XML khác rỗng phải bao gồm đầy đủ thẻ đóng và thẻ mở.
Trong tài liệu XML hợp khuôn dạng, mọi thẻ mở (trừ thẻ rỗng) phải có thẻ đóng
tương ứng. Nếu bộ phân tích XML phát hiện một phần tử bị thiếu thẻ đóng hay
thẻ mở thì quá trình phân tích tài liệu sẽ kết thúc.
18

- Đóng phần tử rỗng với chuỗi đóng />. Phần tử rỗng là phần tử chỉ có một
thẻ. Dấu kết của phần tử rỗng phải là /> nếu không tài liệu sẽ được coi là không
hợp khuôn dạng.
- Mọi phần tử trong tài liệu XML khác phần tử gốc (root) đều nằm giữa cặp
thẻ gốc.
- Các phần tử lồng nhau phải có thể đóng, mở hợp vị trí.
- Sử dụng tên thuộc tính là duy nhất. Các thuộc tính trong thẻ không được đặt
cùng tên.
Tham chiếu thực thể

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

&

&

<

<

>

>

'



"


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

- Chỉ nên sử dụng 5 tham chiếu thực thể được định nghĩa trước trong XML.
Trong ngôn ngữ định dạng XML, một số kí tự nhận dạng đặc biệt như <,>, ’ , ” ,
và & không thể sử dụng trong tài liệu theo cách thể hiện dữ liệu thông thường.
Muốn sử dụng những kí hiệu này phải dùng tham chiếu thực thể được định nghĩa
trước như bảng trên.
- Bao giá trị thuộc tính bằng cặp dấu nháy. Tất cả các thuộc tính được thể hiện
ở dạng chuỗi và phải bao giá trị gán cho thuộc tính bằng cặp nháy kép (“”) hoặc
nháy đơn (‘’).
- Chỉ nên sử dụng kí tự < và & đối với thẻ mở và các thẻ thực thể.

1.1.6 Định nghĩa kiểu tài liệu DTD (Document Type Definition)
Khi định nghĩa thẻ XML, ta tùy ý quyết định cách sử dụng chúng. Ta có thể
quyết định thẻ chỉ chứa nội dung là dữ liệu text thuần túy hoặc có thể chứa các
phần tử con khác. Tuy nhiên, để tài liệu rõ ràng chúng ta nên định nghĩa kiểu tài
liệu mà mỗi phần tử sẽ biểu diễn.
19

Một tài liệu XML được coi là hợp lệ và có giá trị khi toàn bộ các phần tử tring
tài liệu được định nghĩa kiểu (type definition) mà nó sẽ chứa. Việc định nghĩa
kiểu tài liệu (DTD – Document Type Definition) cần theo cú pháp quy định của
tổ chức XML W3C.
Định nghĩa kiểu tài liệu DTD:
Sử dụng thẻ khai báo để bắt đầu định nghĩa cho các phần tử
XML. Mẫu khai báo như sau:
Trong đó : DTD là định nghĩa cho các phần tử trong tài liệu.
Mỗi phần tử được định nghĩa theo cú pháp:

NAME là tên của phần tử muốn định nghĩa;
CONTEN_MODEL có thể được đặt là EMTY hay ANY hoặc trộn lẫn cả hai
nội dung (bao gồm dữ liệu có thể dùng phân tích hoặc các phần tử con khác).
Ví dụ 1.2: Khai báo và định nghĩa DTD trong tài liệu XML:

[

SinhVien(SinhVienID,TenSV,NganhHocID,DiaChi,DienThoai)>




]>



Hoang Van Thanh



20

120


Thai Nguyen


0989582491




1.1.7 Mô hình DOM (Document Object Model)
Để xử lý tài liệu XML, W3C định nghĩa tài liệu theo mô hình hướng đối
tượng DOM (Document Object Model. Theo mô hình này tài liệu XML được tổ
chức theo cấu trúc hình cây bao gồm các nút đối tượng, nội dung của mỗi nút
(node), trên cây có thể chứa phần tử (element), dữ liệu (text), thuộc tính
(attribute),… và các nút con khác. Cụ thể, trong mô hình XML có các loại nút
sau đây:
Nút
Ý nghĩa
Element
Phần tử XML
Attribute
Thuộc tính XML
Text
Dữ liệu text
CDATA section
Phân đoạn CDATA
Entity reference
Tham chiếu thực thể
Entity
Thực thể
Processing Instruction
Chỉ thị xử lý
Comment
Chú thích
Document
Tài liệu
Document Type
Kiểu tài liệu
Document fragment
Đoạn tài liệu
Notation
Ghi chú
Bảng 2. Các nút trong mô hình DOM.

21