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

Bài giảng Chuyên đề công nghệ XML và ứng dụng: Phần 1 - Trường ĐH Công nghiệp Quảng Ninh

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.08 MB, 54 trang )

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP QUẢNG NINH
KHOA CÔNG NGHỆ THÔNG TIN

BÀI GIẢNG

CHUYÊN ĐỀ CÔNG NGHỆ XML VÀ ỨNG DỤNG
(Dành cho sinh viên bậc Đại học)
(LƯU HÀNH NỘI BỘ)

Quảng Ninh, 2020


MỤC LỤC
Chương 1: TỔNG QUAN VỀ XML ......................................................................... 5
1.1 Giới thiệu tổng quan về ngôn ngữ định dạng XML ............................................... 5
1.2 Ngôn ngữ định dạng .............................................................................................. 6
1.3 Tài liệu XML hợp khuôn dạng .............................................................................. 9
1.4 Tài liệu XML hợp lệ ............................................................................................ 9
1.5 Bộ phân tích XML .............................................................................................. 10
1.6 Bộ kiểm tra XML ................................................................................................ 11
1.7 Trình soạn thảo XML .......................................................................................... 12
1.8 Một số ứng dụng của XML ................................................................................. 12
Chương 2: TẠO TÀI LIỆU XML HỢP KHUÔN DẠNG ...................................... 14
2.1 Xây dựng tài liệu hợp khuôn dạng ...................................................................... 14
2.2 Định dạng và dữ liệu kiểu ký tự .......................................................................... 16
2.3 Phần khởi đầu của tài liệu XML .......................................................................... 16
2.4 Các khai báo và câu chú thích trong tài liệu XML ............................................... 17
2.5 Khơng gian tên ................................................................................................... 17
2.6 Thẻ và các phần tử .............................................................................................. 18
2.6.1 Thẻ và phần tử ................................................................................................. 18


2.6.2 Tên thẻ ............................................................................................................. 18
2.6.3 Phần tử rỗng ..................................................................................................... 18
2.7 Phần tử gốc ......................................................................................................... 19
2.8 Thuộc tính ........................................................................................................... 19
2.8.1 Tên thuộc tính .................................................................................................. 19
2.8.2 Trị gán cho thuộc tính ...................................................................................... 19
2.8.3 Thuộc tính xml:lang ......................................................................................... 20
2.9 Một số quy tắc xây dựng cấu trúc tài liệu hợp khuôn dạng .................................. 20
2.10 Phân đoạn CDATA ........................................................................................... 20
2.11 Không gian tên của XML .................................................................................. 21
2.11.1 Tạo không gian tên ......................................................................................... 21
2.11.2 Không gian tên cục bộ .................................................................................... 21

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

1


Chương 3: ĐỊNH NGHĨA KIỂU TÀI LIỆU – DTD .............................................. 23
3.1 Định nghĩa kiểu tài liệu ....................................................................................... 23
3.2. Định nghĩa một tài liệu DTD .............................................................................. 24
3.2.1 Phần tử <!DOCTYPE> .................................................................................... 24
3.2.1.1 Định nghĩa DTD tham chiếu nội .................................................................... 24
3.2.1.2 Định nghĩa DTD tham chiếu ngoại ................................................................ 25
3.2.2 Phần tử <!ELEMENT> .................................................................................... 27
3.2.3 Phần tử <!ATTLIST> ...................................................................................... 28
3.4 Thực thể .............................................................................................................. 33
3.4.1 Thực thể là gì? .................................................................................................. 33
3.4.1.1 Thực thể tổng quát ........................................................................................ 33
3.4.1.2 Thực thể tham số ........................................................................................... 35

Chương 4: ĐỊNH DẠNG TÀI LIỆU XML VỚI CSS VÀ XSL ............................. 38
4.1 Định dạng tài liệu bằng CSS ............................................................................... 38
4.1.1 Tạo và chèn các định nghĩa kiểu CSS ............................................................... 38
4.1.1.1 Định nghĩa và khai báo CSS ngoại ................................................................ 39
4.1.1.2 Định nghĩa và sử dụng CSS nội ..................................................................... 39
4.1.1.3 Khai báo kiểu CSS trực tiếp .......................................................................... 39
4.1.1.4 Nhóm các định nghĩa kiểu vào một lớp ......................................................... 40
4.1.2 CSS và XML .................................................................................................... 40
4.2 XSL là gì? ........................................................................................................... 41
4.2.1 Quy tắc chung .................................................................................................. 42
4.2.2 Một số phần tử thường dùng của XSL ............................................................... 42
4.2.2.1 Phần tử value-of ........................................................................................... 42
4.2.2.2 Phần tử attribute ............................................................................................ 44
4.2.2.3 Phần tử attribute-set ...................................................................................... 44
4.2.2.4 Phần tử element ............................................................................................. 44
4.2.2.5 Phần tử apply-templates ................................................................................ 46
4.2.2.6 Phần tử call-template .................................................................................... 47
4.2.2.7 Phần tử for-each ............................................................................................ 47
4.2.2.8 Phần tử if ...................................................................................................... 48
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

2


4.2.2.9 Phần tử điều khiển choose ............................................................................. 49
4.2.2.10 Phần tử variable .......................................................................................... 50
4.2.2.11 Phần tử param ............................................................................................. 50
4.2.2.12 Phần tử include ............................................................................................ 52
4.2.2.13 Phần tử import ............................................................................................. 52
Chương 5: LƯỢC ĐỒ XML ................................................................................... 54

5.1 Tại sao chúng ta nên dùng XML Schema? ........................................................... 54
5.2 Các thành phần trong một XML Schema ............................................................ 54
5.2.1 Thành phần schema .......................................................................................... 55
5.2.2 Tham chiếu đến schema từ trang XML ............................................................ 56
5.3 Quá trình kiểm tra tính hợp lệ của một trang XML ............................................. 56
5.4 Lược đồ và không gian tên .................................................................................. 57
5.5 Xây dựng lược đồ từ nhiều thành phần ................................................................ 57
5.6 Khai báo phần tử trong XML Schema ................................................................. 58
5.7 Các kiểu phần tử .................................................................................................. 58
5.7.1 Định nghĩa một phần tử giản đơn ..................................................................... 58
5.7.2 Các kiểu dữ liệu thông dụng .............................................................................. 59
5.7.3 Ví dụ ................................................................................................................. 59
5.8 Giá trị mặc định và cố định ................................................................................. 59
5.9 Khai báo thuộc tính và các ràng buộc .................................................................. 60
5.9.1 Định nghĩa thuộc tính trong XSD ...................................................................... 60
5.9.2 Khai báo loại thuộc tính ................................................................................... 60
5.9.3 Ràng buộc nội dung ......................................................................................... 60
5.9.4 Ràng buộc giá trị .............................................................................................. 60
5.9.5 Ràng buộc về ký tự dấu cách ............................................................................ 62
5.9.6 Ràng buộc về độ dài ......................................................................................... 63
5.9.7 Định nghĩa phần tử phức hợp ........................................................................... 63
5.9.7.1 Định nghĩa một phần tử phức hợp trong XSD ............................................... 64
5.9.7.2 Định nghĩa phần tử rỗng ................................................................................ 64
5.9.7.3 Định nghĩa phần tử chỉ chứa phần tử con ...................................................... 65
5.10 Ví dụ về XML, XSD VÀ XSL ........................................................................... 65

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

3



Chương 6: DOM VÀ XỬ LÝ XML VỚI JAVASCRIPT ....................................... 69
6.1 Mơ hình DOM .................................................................................................... 69
6.2 Nạp tài liệu XML cần xử lý bằng JavaScript ....................................................... 70
6.3 Phần tử nạp dữ liệu ............................................................................................. 77
6.4 Truy xuất các nút dữ liệu dựa vào tên .................................................................. 80
6.5 Truy xuất giá trị của thuộc tính .......................................................................... 82
6.6 Phân tích trực tiếp tồn bộ dữ liệu XML ............................................................. 84
6.7 Phân tích nội dung và kiểu dữ liệu của nút ........................................................... 87
BÀI TẬP THỰC HÀNH.......................................................................................... 91
TÀI LIỆU THAM KHẢO ..................................................................................... 104

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

4


Chương 1

TỔNG QUAN VỀ XML
 Mục tiêu học tập: Sau khi học xong chương này người học sẽ:
- Có cái nhìn tổng quan về ngơn ngữ XML.
- Hiểu được thế nào là tài liệu XML hợp lệ hay hợp khuôn dạng.
- Biết cách kiểm tra tính hợp lệ của XML.
Tóm tắt chương
Để tìm hiểu chi tiết về XML như thế nào, trước tiên, chúng ta nên có cái nhìn
tổng qt về XML. Chương này giới thiệu một cách tổng quát nhất về XML cũng như
những ứng dụng cơ bản của nó.
1.1 Giới thiệu tổng quan về ngơn ngữ định dạng XML
Hiện nay XML (eXtensible Markup Language) chiếm vị trí rất quan trọng trong

việc chuyển tải, trao đổi dữ liệu và liên lạc giữa các ứng dụng. Điều này càng được
khẳng định khi các hệ điều hành từ WindowsXP trở đi và các hệ điều hành khác bên
trong nó chứa rất nhiều tập tin XML. Hơn nữa khi bộ .Net ra đời càng làm cho XML
trở nên thịnh hành và ngày càng được ứng dụng rộng rãi.
Sử dụng kỹ thuật XML khơng chỉ có tập đồn Microsoft mà ngay cả Sun, IBM,
Oracles điều hỗ trợ XML sử dụng nó trong các hệ điều hành và các ứng dụng.
XML là ngôn ngữ xây dựng cấu trúc tài liệu văn bản, dựa theo chuẩn SGML
(Standard Generalized Markup Language: siêu ngơn ngữ có khả năng sinh ngôn ngữ
khác). SGML được phát triển cho việc định cấu trúc và nội dung tài liệu điện tử, do tổ
chức ISO (International Organization for Standards) chuẩn hóa năm 1986.
SGML do IBM đưa ra, song không thể không kể đến những đóng góp của các
cơng ty khác. XML được W3C (World Wide Web Consortium - tổ chức độc lập định
ra tiêu chuẩn cho trình duyệt Web, máy chủ và ngôn ngữ) phát triển, nhưng đặc tả
XML lại do Netscape, Microsoft và các thành viên của dự án Text Encoding Initiative
(TEI) xây dựng. Tổ chức W3C XML Special Interest Group có đại diện từ hơn 100
cơng ty cùng nhiều chun gia được mời khác.
Lý do ra đời của XML vì SGML rất rắc rối khó sử dụng và HTML có nhiều
giới hạn nên năm 1996 tổ chức W3C thiết kế XML. XML version 1.0 được định nghĩa
trong hồ sơ February 1998 W3C Recommendation.
Điểm quan trọng của kỹ thuật XML là nó khơng thuộc riêng về một cơng ty
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

5


nào, nó là một sản phẩm mà trí tuệ của nó thuộc về cả thế giới, là một tiêu chuẩn được
mọi người cơng nhận vì được soạn ra bởi W3C (World Wide Web Consortium).
Bản thân của XML rất đơn giản, nhưng các công cụ chuẩn được định ra để làm
việc với XML như Document Object Model - DOM, XPath, XSL,... thì lại rất hữu
hiệu, và chính các chuẩn này được phát triển không ngừng.

XML cũng giống như HTML đều là ngơn ngữ đánh dấu, nhưng điều cần nói ở
đây là sự ra đời của XML nhằm để khắc phục một số mặt hạn chế của HTML.
HTML và XML đều sử dụng các thẻ nhưng các thẻ của HTML là một bộ dữ
liệu được xây dựng và định nghĩa trước, nghĩa là người lập trình phải tuân thủ theo các
thẻ đã định nghĩa của HTML, hiện HTML có khoản hơn 400 thẻ, để nhớ hết 400 thẻ
này cũng khơng có gì khó khăn đối với người lập trình web chun nghiệp nhưng thật
khó đối với những người khơng chun. Hơn nữa, các thẻ của HTML khơng nói lên
được mơ tả dữ liệu trong đó. Nhưng đối với XML thì hồn tồn khác bởi vì tag trong
XML là do người lập trình tự định nghĩa và mỗi thẻ là một mô tả dữ liệu mà người lập
trình muốn truyền đạt.
1.2 Ngơn ngữ định dạng
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 mà nội dung của tài liệu được diễn dịch. Tuy nhiên, ngôn
ngữ định dạng chúng ta thường sử dụng trước đây là HTML.
Ví dụ: Tạo tập tin document.html
<HTML>
<HEAD> <TITLE> Hello HTML</TITLE> <HEAD>
<BODY>
<CENTER>
<H1> Hello From HTML <H1>
</CENTER>
Well come to the wild and woolly word of HTML
</BODY>
</HTML>

Kết quả của tập tin document.html hiển thị trên trình duyệt:

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

6



HTML và XML có mối quan hệ rất gần với nhau. Cả hai đều dựa trên chuẩn
ngôn ngữ định dạng tổng quát SGML. Câu hỏi đặt ra là: XML sẽ được sử dụng và nó
hiển thị trên trình duyệt như thế nào?
Sau đây chúng ta sẽ chuyển nội dung tập tin document.html sang thành tập tin
document.xml như sau:
<?xml version ="1.0" encoding="UTF-8"?>
<DOCUMENT>
<GREETING>
Hello From XML
</GREETING>
<MESSAGE>
Well come to the wild and woolly word of HTML
</MESSAGE>
</DOCUMENT>

Kết quả hiển thị trên trình duyệt của tập tin document.xml

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

7


Hai kết quả hoàn toàn khác nhau. Đối với tập tin document.xml thì chúng sẽ
hiển thị đúng với tập tin gốc bởi vì trình duyệt khơng hiểu được các thẻ do ta tự định
nghĩa. Chính vì vậy, để trình duyệt có thể hiểu được các thẻ do ta định nghĩa và hiển
thị chúng, ta phải dùng bảng định kiểu (Style Sheet)
Có 2 cách chỉ ra bảng định kiểu khi định dạng:
- Dùng CSS (Cascade Style Sheet)

- Dùng XSL (Extensible Style Language)
Ví dụ: Ta dùng bảng định kiểu CSS để hiển thị nội dung tập tin document.xml trên
Bước 1:Ta thêm đoạn code (in đậm) vào tập tin document.xml trên như sau:
<?xml version ="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css"href="document.css"?>
<DOCUMENT>
<GREETING>
Hello From XML
</GREETING>
<MESSAGE>
Well come to the wild and woolly word of HTML
</MESSAGE>
</DOCUMENT>

Bước 2:Tạo tiếp tập tin document.css:
GREETING
{
display:block; font-size:18pt;
color:#FF0000; text-align:center;
}
MASSAGE {display:block; font-size:18pt; color:#000000;}

Bây giờ, kết quả khi chạy tập tin document.xml trên trình duyệt sẽ có hình dạng
sau và khơng cịn hiển thị nội dung tập tin gốc nữa.

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

8



1.3 Tài liệu XML hợp khuôn dạng
Tài liệu XML được gọi là hợp khn dạng (Well-formed) thì cần phải tn theo
cú pháp thiết lập cho XML bởi tổ chức W3C. Các quy tắc này được nêu trong đặc tả
XML 1.0 (những quy định các luật về thẻ, phần tử, thuộc tính, giá trị,…). Nói cách
khác, tài liệu XML hợp khn dạng phải là tài liệu XML có cấu trúc đúng.
Để hợp khuôn dạng, tài liệu XML phải tuân theo các luật sau:
- Có một phần tử gốc duy nhất, chứa tất cả phần tử khác.
- Mỗi thẻ mở phải có một thẻ đóng giống như nó.
Ví dụ:

Thẻ sai

<SINHVIEN> ; </sinhvien>

Hay

<SINHVIEN> ; </Sinhvien>

- Mỗi phần tử con nằm trọn trong phần tử cha của nó.
- Giá trị thuộc tính trong XML phải được đặt giữa một cặp ngoặc kép hay một
cặp ngoặc đơn.
- Các khai báo phải được đặt tại dòng đầu tiên của tài liệu.
- Chỉ có một thành phần gốc (root).
Ví dụ: Tài liệu hợp khn dạng
<?xml version ="1.0" encoding="UTF-8"?>
<DOCUMENT>
<GREETING>
Hello From XML
</GREETING>
<MESSAGE>

Well come to the wild and woolly word of HTML
</MESSAGE>
</DOCUMENT>

1.4 Tài liệu XML hợp lệ
Tài liệu XML được gọi là hợp lệ (Valid) khi nó là tài liệu được kết hợp với định
nghĩa kiểu dữ liệu (DTD – Document Type Definition) và tuân theo các chuẩn của
DTD.
Hầu hết các trình duyệt kiểm tra tính hợp khn dạng trước. Tiếp theo một vài
trình duyệt có thể kiểm tra thêm tính hợp lệ của tài liệu XML.
Các định nghĩa DTD nhằm xác định cú pháp đúng đắn cho tài liệu. DTD có thể
được chứa trong một tập tin riêng biệt hoặc chứa ngay trong chính tài liệu, DTD sử
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

9


dụng phần tử hay thẻ < !DOCTYPE>.
Ví dụ:
<?xml version ="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css"href="document.css"?>
<!ELEMENT DOCUMENT (GREETING, MESSAGE)>
<!ELEMENT GREETING (#PCDATA)>
<!ELEMENT MESSAGE (#PCDATA)>
]>
<DOCUMENT>
<GREETING>
Hello From XML
</GREETING>

<MESSAGE>
Well come to the wild and woolly word of HTML
</MESSAGE>
</DOCUMENT>

Như vậy, DTD chỉ định rằng chúng ta có hai thẻ <GREETING> và
<MESSAGE> được đặt nằm trong thẻ <DOCUMENT>. Định nghĩa DTD cũng cho
thấy <DOCUMENT> là phần tử gốc, phần tử <GREETING> và <MESSAGE> được
định nghĩa là các thẻ có thể mang theo dữ liệu văn bản.
1.5 Bộ phân tích XML
Là các gói phần mềm được sử dụng chung như một phần kèm theo của ứng
dụng. XML for Java (XML4J) – phân tích tài liệu XML được phát triển bởi IBM
AlphaWorks - Đây là thư viện nổi tiếng và được dùng rộng rãi trong hầu hết các ví dụ
của W3C.
Microsoft XML Parser – trình phân tích sử dụng trình duyệt Internet Explorer
cài đặt thông qua kiến trúc COM của hệ điều hành Windows. Nếu chúng ta sử dụng IE
từ version 5.0 trở lên ta đã có sẵn trình phân tích này hoặc dùng Java Standard
Extenstion for XML – Đây là gói thư viện dành cho Java được xây dựng bởi SUN. Gói
này dùng chung với các ứng dụng của Java.
Python XML Parser – Trình phân tích tài liệu XML dựa vào ngôn ngữ Python
cho hệ điều hành Linux và Unix. Gói này được dùng chung với các ứng dụng của Java.
Các trình phân tích thường tách dữ liệu XML ra thành từng mẫu nhỏ khiến
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

10


chúng có thể truy xuất được bởi mã lệnh chương trình. Một vài trình phân tích kiêm
ln cả chức năng kiểm tra khn dạng hoặc tính hợp lệ của tài liệu XML.
1.6 Bộ kiểm tra XML

Làm thế nào biết được tài liệu XML của chúng ta đúng khuôn dạng và hợp lệ?
Một trong các cách để biết là dùng bộ kiểm tra XML (XML Validator). Các bộ kiểm
tra tính hợp lệ của XML là những gói phần mềm cho phép kiểm tra một số chuẩn trên
XML đồng thời đưa ra lời nhận xét.
Ví dụ:
Kiểm tra nội dung tập tin greeting.xml bằng DOMWriter
<?xml version ="1.0" encoding="UTF-8"?>
<DOCUMENT>
<GREETING>
Hello From XML
</GREETING>
<MESSAGE>
Well come to the wild and woolly word of HTML
</MESSAGE>
</DOCUMENT>

Kiểm tra bằng Java với DOMWriter, nếu tài liệu XML hợp lệ thì DOMWriter
chỉ hiển thị nội dung của tập tin XML. Nếu phát hiện lỗi, DOMWriter sẽ chỉ rõ vị trí
của thẻ gây lỗi.
Vì vậy, tập tin greeting.xml của chúng ta sẽ gặp lỗi không hợp lệ do các thẻ
DTD chưa được định nghĩa và nhận các dịng thơng báo sau:
>java dom.DOMWriter greeting.xml
greeting.xml
[Error] greeting.xml : 2:11:
Element type “DOCUMENT” must be declared
[Error] greeting.xml : 3:35:
Element type “GREETING” must be declared
Error] greeting.xml : 6:14:
Element type “MESSAGE” must be declared
<?xml version ="1.0" encoding="UTF-8"?>

<DOCUMENT>
<GREETING>

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

11


Hello From XML
</GREETING>
<MESSAGE>
Well come to the wild and woolly word of HTML
</MESSAGE>
</DOCUMENT>

Tuy nhiên, các bộ kiểm tra Validator thường phân làm hai loại. Loại ứng dụng
cài đặt như một chương trình thơng thường và một loại kiểm tra trực tiếp trên Web.
XML Writer: Đây là chương trình soạn thảo và kiểm tra tính hợp lệ của tài liệu XML.
1.7 Trình soạn thảo XML
Chúng ta có thể dùng các trình soạn thảo đơn giản để tạo tập tin XML như:
- Notepad hay Wordpad của Windows
- Vi hay Emacs của Linux hay Unix
- Mặc định của XML là dùng Unicode
Ngoài ra chúng ta có thể dùng trình soạn thảo chun nghiệp hơn để tạo tập tin
XML như:
- XML Notepad của Microsoft
- XML Writer, có thể kiểm tra tính hợp khn dạng, tính hợp lệ
- XML Spy hay eNotepad, tương tự như XML Writer
1.8 Một số ứng dụng của XML
XML có thể tạo ra các tập ngôn ngữ con khác (ngôn ngữ định dạng dựa trên

XML hay XML-base Language). Ứ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 riêng trong một lĩnh vực nào đó.
- MathML (Math Markup Language) - là ứng dụng của XML trong lĩnh vực
toán học; MathML sử dụng XML để định dạng các biểu thức và các ký hiệu toán học.
- CML (Chemical Markup Language)– ngơn ngữ định dạng hóa học; CML có
thể mơ tả và hiển thị nội dung của cấu trúc một phân tử hóa học.
- CDF (Channel Definition Format) – khuôn dạng định nghĩa kênh; kênh phân phối
nội dung Web; Các kênh phân phối sẽ chủ động gửi nội dung thông tin đến người dùng.
- SMIL (Synchronized Multimedia Intergration Language) – ngơn ngữ tích hợp
multimedia đồng bộ; là giải pháp khắc phục vấn đề xử lý các tập tin multimedia trong
trình duyệt.
- XHTML (Extension Hyper Text Markup Language) – mở rộng và định nghĩa
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

12


lại ngơn ngữ HTML một cách có trật tự và cấu trúc hơn.
- VML (Vector Markup Language) – ngôn ngữ định dạng vector.
- WML (Wireless Markup Language) – ngôn ngữ định dạng mạng không dây…
Kết chương
Chương này, chúng ta nghiên cứu qua cú pháp cơ bản và cách định nghĩa các
thành phần XML. Chúng ta, cần nắm vững các khái niệm đã đề cập, nó là nền tảng để
chúng ta tìm hiểu các nội dung khác. Hợp khn dạng là yêu cầu tối thiểu đầu tiên mà
tài liệu XML của chúng ta phải tuân thủ. Ngoài ra tài liệu XML cịn u cầu một điều
kiện nữa đó là tính hợp lệ khi định nghĩa kiểu tư liệu DTD cho các phần tử trong tài
liệu. Đây là nội dung chúng ta sẽ được nghiên cứu ở các chương tiếp theo.
 Câu hỏi củng cố:
1. Ngơn ngữ định dạng là gì ?
2. Hãy cho biết thế nào là tài liệu XML hợp lệ hay hợp khuôn dạng?

3. Làm thế nào để kiểm tra tính hợp lệ của XML?
4. Hãy cho biết những ứng dụng cơ bản của XML?

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

13


Chương 2

TẠO TÀI LIỆU XML HỢP KHUÔN DẠNG
 Mục tiêu học tập: Sau khi học xong chương này người học sẽ:
- Hiểu được cú pháp của XML; Các phần tử XML; Các thuộc tính của XML.
- Biết được thế nào là tài liệu XML hợp lệ, tài liệu XML hợp khuôn dạng.
- Vận dụng các kiến thức trên để tạo tài liệu XML hợp khn dạng.
Tóm tắt chương
Khi xây dựng tài liệu XML chúng ta cần phải biết được các quy tắc cũng như cú
pháp để định nghĩa các thành phần của tài liệu XML. Các tài liệu XML chỉ được xem là
đúng đắn khi nó hợp khn dạng (well – form) – Các trình diễn dịch XML thường yêu
cầu rất nghiêm ngặt về kiểm tra lỗi cú pháp. Trong chương này, chúng ta sẽ nghiên cứu về
tính chất hợp khn dạng của tài liệu đồng thời tìm hiểu tồn bộ cú pháp XML, đây là
bước nền tảng khởi đầu quan trọng nhất khi tìm hiểu về ngơn ngữ XML.
2.1 Xây dựng tài liệu hợp khuôn dạng
Ở chương trước, chúng ta đã biết được thế nào là tài liệu hợp khn dạng, hợp
lệ. Vì vậy, khi tạo tài liệu XML chúng ta cần tuân theo cách đặt thẻ theo một trật tự để
trình duyệt có thể phân tích được bởi các bộ phận phân tích (parser).
Các phần tử của tài liệu XML được gọi là thực thể (enties). Thực thể có thể là văn
bản (text) hoặc dữ liệu nhị phân (binary) nhưng không được cả hai. Thực thể chỉ là cách nói
chung để diễn đạt đơn vị lưu trữ dữ liệu trong XML. Nó sẽ khơng được gọi là tài liệu XML
nếu các thẻ trong thực thể không được sắp đặt theo một trật tự và hợp khn dạng.

Ví dụ tạo một tài liệu order.xml hợp khuôn dạng:
- Đầu tiên ta cần chỉ định dấu hiệu nhận dạng thông tin về nội dung tài liệu
<?xml version = “1.0”?>

- Nếu đây là tài liệu chứa toàn bộ thực thể duy nhất khơng tham chiếu đến các
thực thể khác ta có thể chỉ cho bộ phân tích biết dữ liệu XML thể hiện là không phụ
thuộc bằng chỉ thị bổ sung sau:
<?xml version = “1.0” standalone = “yes”?>

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

14


Kế tiếp chúng ta cần phải có một phần tử hay thẻ gốc (root) cho tài liệu. Ở đây
chúng ta gọi thẻ này là <DOCUMENT>
<?xml version = “1.0” standalone = “yes”?>
<DOCUMENT>
.
.
.
</DOCUMENT>

Phần tử gốc trong tài liệu XML có thể chứa các thẻ hay các phần tử khác.
<?xml version = “1.0” standalone = “yes”?>
<DOCUMENT>
<CUSTOMER>
.
.
.

</CUSTOMER>
<CUSTOMER>
.
.
.
</CUSTOMER>
</DOCUMENT>

Đối với mỗi <CUSTOMER> chúng ta có thể thêm các thông tin như <NAME>
và <FIRST_NAME>
<?xml version = “1.0” standalone = “yes”?>
<DOCUMENT>
<CUSTOMER>
<NAME> …</NAME>
<FIRST_NAME> … </FIRST_NAME>
</CUSTOMER>
<CUSTOMER>
<NAME> …</NAME>
<FIRST_NAME> … </FIRST_NAME>
</CUSTOMER>
</DOCUMENT>

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

15


Tóm lại, để hình thành nên một tài liệu XML thường chúng ta phải tuân theo cú
pháp là: tạo chỉ thị xử lý XML, xây dựng phần tử hoặc thẻ gốc, tạo các phần tử con
lồng trong phần tử gốc. Các phần tử thẻ bên trong thẻ gốc có thể chứa các thẻ con khác

lồng sâu vào nhau nhiều cấp.
2.2 Định dạng và dữ liệu kiểu ký tự
Định dạng tài liệu giúp chúng ta tạo nên một cấu trúc. Đị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. Tất cả các dữ liệu cịn lại trong tài liệu XML khơng
phải là định dạng đều được xem là dữ liệu ký tự (text).
2.3 Phần khởi đầu của tài liệu XML
Phần này được viết từ những dòng đầu tiên của tài liệu XML. Phần mở đầu
chứa các khai báo phiên bản sử dụng của XML, lời chú thích, chỉ thị xử lý, khoảng
trắng và khai báo kiểu tư liệu DTD.
Ví dụ:
<?xml version = “1.0” standalone = “yes”?>
<!ELEMENT DOCUMENT (CUSTOMER)*>
<!ELEMENT CUSTOMER (NAME, DATE, ORDERS)>
<!ELEMENT NAME (LAST_NAME, FIRST_NAME)>
<!ELEMENT LAST_NAME (#PCDATA)>
<!ELEMENT FIRST_NAME (#PCDATA)>
<!ELEMENT DATA (#PCDATA)>
<!ELEMENT ORDERS (ITEM)*>
<!ELEMENT ITEM (PRODUCT, NUMBER, PRICE)>
<!ELEMENT PRODUCT (#PCDATA)>
<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
]>
<DOCUMENT>
<CUSTOMER>
<NAME>
<LAST_NAME>… </LAST_NAME>
<FIRST_NAME>…</FIRST_NAME>

</NAME>

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

16


2.4 Các khai báo và câu chú thích trong tài liệu XML
Một tài liệu XML nên bắt đầu bằng một khai báo, cho biết tài liệu được viết
theo định dạng và đặc tả XML. Khai báo XML phải được đặt ở dịng đầu tiên của tài
liệu. Đây chính là chỉ thị xử lý, chỉ thị xử lý được đặt trong cặp thẻ <? và ?>. Trong
phần tử khai báo chúng ta có thể sử dụng 3 kiểu khai báo thuộc tính:
- Khai báo phiên bản (version): Khai báo này cho biết phiên bản đặc tả XML
mà tài liệu đang sử dụng.
- Khai báo mã hóa (encoding): Bộ mã mà chúng ta sử dụng trong tài liệu XML. Mặc
định là UTF-8 hoặc có thể Unicode, UCS-2 hoặc UCS-4… thuộc tính này là tùy chọn.
- Khai báo thực thể độc lập (standalone): Đặt thuộc tính này 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 (external entity); nếu khơng đặt
thuộc tính này mặc định là “no”. Thuộc tính này cũng là tùy chọn.
Để tập tin XML trở nên dễ hiểu và dễ chỉnh sửa sau này thì các dịng chú thích
là khơng thể thiếu, các dịng chú thích đuợc đặt trong cặp thẻ <!-- và -->. Chú thích
khơng được đặt trước các khai báo.
2.5 Khơng gian tên (NameSpace)
Không gian tên XML (NameSpace) cho phép chúng ta tự do định nghĩa các thẻ,
nó cho chúng ta dùng cùng một tên nhưng lại nói đến nhiều loại dữ liệu khác nhau
trong cùng một tài liệu XML.
Ví dụ:
<?xml version= “1.0” encoding = “UTF-8”?>
<BookOrder OrderNo="1234">
<OrderDate>2001-01-01</OrderDate>

<Customer>
<Title>Mr.</Title>
<FirstName>Graeme</FirstName>
<LastName>Malcolm</LastName>
</Customer>
<Book>
<Title>Treasure Island</Title>
<Author>Robert Louis Stevenson</Author>
</Book>
</BookOrder>

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

17


Ta thấy trong ví dụ trên có phần tử <Title> nói đến hai loại dữ liệu khác nhau,
một nói về tên tác giả, một nói về tiêu đề sách, điều này làm cho ta dễ nhầm lẫn giữa
hai loại dữ liệu. Hơn thế nữa nếu tài liệu của chúng ta được sử dụng chỉ cho một mục
đích riêng thì khơng có vấn đề gì. Nhưng khi tài liệu của chúng ta kết hợp với một tài
liệu khác thì tài liệu kết hợp này sẽ có vấn đề vì chúng ta không chắc chắn rằng tài liệu
khác mà chúng ta muốn kết hợp khơng có sử dụng thẻ trùng với thẻ của chúng ta định
nghĩa hay khơng.
Ví dụ khi chúng ta tích hợp tài liệu XML của chúng ta với ứng dụng khác như
VML hay MathML mà chẳng may giữa các tài liệu này có cùng định nghĩa thẻ NAME
chẳng hạn. Lúc này trình phân tích sẽ khơng biết nên hiểu thẻ NAME trong tài liệu của
chúng ta hay của VML hay của MathML.
Vì vậy, chúng ta cần phải khai báo không gian tên để khắc phục điều này.
2.6 Thẻ và các phần tử
2.6.1 Thẻ và phần tử

Cấu trúc tài liệu XML dựa trên các thành phần định dạng. 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 (hay còn gọi là thẻ mở và thẻ đóng), ngoại trừ phần tử rỗng được
định nghĩa bằng một thẻ.
- Thẻ mở: bắt đầu bằng ký tự “<” kết thúc bằng ký tự “>”. Ví dụ: <Document>
- Thẻ đóng: bắt đầu bằng ký tự “</” kết thúc bằng ký tự “>”. Ví dụ: </Document>
2.6.2 Tên thẻ (Tag Name)
Tên thẻ có thể bắt đầu bằng ký tự, dấu gạch (_), dấu hai chấm (:), các ký tự kế
tiếp có thể là ký tự, ký số, dấu gạch, gạch nối, dấu chấm, dấu hai chấm nhưng không
được sử dụng khoảng trắng.
Lưu ý:
- Bộ phân tích và diễn dịch XML phân biệt chữ hoa chữ thường.
- Mặc dù XML cho phép dùng dấu hai chấm trong tên thẻ nhưng nên tránh dùng.
2.6.3 Phần tử rỗng
Thông thường một phần tử bao gồm một thẻ mở và một thẻ đóng. Giữa thẻ mở
và thẻ đóng có thể chứa dữ liệu ký tự hoặc các cặp thẻ khác. Tuy nhiên, phần tử cũng
có thể chỉ chứa duy nhất một thẻ - thẻ rỗng. Các thẻ chỉ đứng một mình tượng trưng
cho phần tử rỗng và có dấu đóng thẻ là “/>” thay cho “>”.

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

18


Ví dụ:
<?xml version= “1.0” encoding = “UTF-8”?>
<DOCUMENT>
<GREATING TEXT = “Hello XML”/>
</DOCUMENT>


2.7 Phần tử gốc
Tất cả các tài liệu XML được gọi là hợp khuôn dạng nếu chứa duy nhất một
phần tử gốc (Root Element). Phần tử gốc được xem là phần tử quan trọng trong cấu
trúc XML. Khi phân tích nội dung tài liệu XML ta phải bắt đầu từ phần tử gốc, sau đó
tiếp tục lần ra các phần tử khác. Chúng ta có thể đặt tên bất kỳ cho phần tử gốc.
Ví dụ:
<?xml version= “1.0” encoding = “UTF-8”?>
<DOCUMENT>
<GREATING TEXT = “Hello XML”/>
</DOCUMENT>

Phần tử <DOCUMENT> ở trên là phần tử gốc.
2.8 Thuộc tính
Thuộc tính (Attribute) được kết hợp theo cặp name=value. Thuộc tính cho phép
chúng ta xác định thêm thơng tin và ý nghĩa của thẻ. Thuộc tính được đặt bên trong thẻ
mở và thẻ rỗng. Để gán giá trị cho thuộc tính, thường dùng dấu (=) .
Ví dụ:
<CUSTOMER STAUS = “Good credit”>

Khi đó bộ xử lý và phân tích XML sẽ đọc và lấy giá trị của thuộc tính. Chúng ta
có thể sử dụng giá trị trả về của thuộc tính thẻ để phục vụ cho chương trình ứng dụng.
2.8.1 Tên thuộc tính
Tên của thuộc tính cần tuân thủ theo quy tắc đặt tên thẻ.
Ví dụ:
<image src = “image.gif”>
<book page = “100”>

2.8.2 Trị gán cho thuộc tính
Bởi vì phần định dạng luôn là văn bản (text) nên thuộc tính cũng mang giá trị
text ngay cả khi gán một trị số cho thuộc tính nó cũng được biểu diễn ở dạng text. Như

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

19


vậy, khi chúng ta muốn dùng chuỗi số để tính tốn ta cần sử dụng các hàm chun
dụng của ngơn ngữ lập trình để chuyển đổi chuỗi thành số.
Giá trị của thuộc tính trong cặp dấu nháy kép (“”), trường hợp chuỗi cần truyền
bao gồm cả dấu nháy kép thì ta có thể dùng dấu nháy đơn („ ‟) thay thế. Tuy nhiên, nếu
chuỗi cần truyền cần luôn cả dấu nháy kép và dấu nháy đơn thì ta có thể dùng thực thể
định nghĩa của XML là &apos thay cho dấu nháy đơn và " thay cho dấu nháy kép.
2.8.3 Thuộc tính xml:lang
Thuộc tính này thường được các bộ máy tìm kiếm thơng tin (search engine) sử
dụng như là dấu hiệu nhận dạng về ngôn ngữ của dữ liệu. Giá trị gán cho thuộc tính
này thường là mã quốc gia theo chuẩn ISO 639 gồm hai ký tự viết tắt.
Ví dụ:

Hello



2.9 Một số quy tắc xây dựng cấu trúc tài liệu hợp khuôn dạng
- Các khai báo XML cần được đặt ở dòng đầu tiên của tài liệu.
- 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ẻ mở và thẻ đóng.
- Đóng phần tử rỗng với chuỗi đóng là “/>”.
- Mọi phần tử khác phần tử gốc đều phải nằm giữa cặp thẻ gốc.
- Các phần tử lồng nhau phải có thẻ đóng và thẻ mở hợp vị trí.
- Tên thuộc tính phải là duy nhất.
- Chỉ sử dụng 5 tham chiếu thực thể được định nghĩa trước trong XML như:
&


ký tự &

<

ký tự <

>

ký tự >

&apos

ký tự „

"

ký tự “

- Bọc giá trị thuộc tính bằng cặp dấu nháy (“ ”).
- Chỉ nên sử dụng ký tự “<” và “&” đối với thẻ mở và các thực thể.
2.10 Phân đoạn CDATA
Đoạn dữ liệu của CDATA là đoạn dữ liệu nằm giữa <![CDATA [ và ]]>.
Những đoạn dữ liệu nằm trong CDATA khi đi qua trình phân tích sẽ được giữ nguyên
Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

20


như ban đầu, nghĩa là khi gặp CDATA thì trình phân tích sẽ bỏ qua. Điều này rất cần
thiết khi chúng ta viết những đoạn mã script trong tài liệu.

Ví dụ:
<script language=”javascript”>
function mag()
{
alert(“This is CDATA! ”);
}
]]
</script>

2.11 Không gian tên của XML
Nếu tài liệu XML chỉ sử dụng riêng cho một mục đích nào đó và khơng cần 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 đề. Tuy nhiên, khi ứng
dụng phát triển, tài liệu XML của chúng ta có thể kết hợp với một số tài liệu khác thì
cần phải có sự phân biệt về phạm vi hay khơng gian tên mà thẻ có ý nghĩa. Điều này
tránh hiểu nhầm cho trình phân tích.
2.11.1 Tạo không gian tên
Để định nghĩa một không gian tên cho các thẻ, chúng ta đưa thuộc tính
xmlns:prefix vào phần tử gốc – 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ần mang một định danh URIs duy nhất.
Ví dụ:
xmlns:minhkhai= “ />
2.11.2 Khơng gian tên cục bộ
Chúng ta khơng chỉ có thể đặt thuộc tính xmlns ở phần tử gốc, thuộc tính này
cịn có thể đặt ở bất kỳ thẻ nào.
xmlns:minhkhai= “ /><minhkhai:book>
<minhkhai:title>
Eerthquakes for much
</minhkhai:title>

</minhkhai:book>

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

21


xmlns:amazon= “ /><amazon:title>
Internaltion Books
</amazon:title>
</amazon:book>
</minhkhai:library>

Kết chương
Trong chương này, chúng ta đã nghiên cứu qua cú pháp cơ bản và cách định
nghĩa các thành phần XML. Kiến thức trong chương này là nền tảng để chúng ta tiếp
tục tìm hiểu và nghiên cứu ở các chương tiếp theo.
Hợp khuôn dạng là yêu cầu tối thiểu đầu tiên của tài liệu XML mà ta cần phải
tuân thủ. Tuy nhiên, tài liệu XML cần phải thêm một điều kiện nữa là tính hợp lệ khi
ta định nghĩa tư liệu DTD cho các phần trong tài liệu. Đây là chủ đề chúng ta sẽ
nghiên cứu ở chương sau.
 Câu hỏi củng cố:
1. Hãy nêu một số quy tắc xây dựng cấu trúc tài liệu hợp khuôn dạng?
2. Phân đoạn CDATA là gì?
3. Hãy áp dụng các quy tắc trên để tạo một tài liệu hợp khuôn dạng.

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

22



Chương 3

ĐỊNH NGHĨA KIỂU TÀI LIỆU – DTD
VÀ KIỂM TRA TÍNH HỢP LỆ CỦA XML
 Mục tiêu học tập: Sau khi học xong chương này người học sẽ:
- Định nghĩa được kiểu tài liệu DTD.
- Hiểu được cú pháp phần tử trong DTD và cách sử dụng DTD.
- Sử dụng được cú pháp DTD trong tài liệu XML.
Tóm tắt chương
Khi xây dựng một tài liệu XML, định nghĩa kiểu tài liệu DTD là một cơng việc
khó khăn và địi hỏi sự chính xác cao. Ngồi việc kiểm tra tài liệu hợp khn dạng,
chúng ta cịn phải biết cách kiểm tra tính hợp lệ của các định nghĩa DTD. Trong
chương này, chúng ta sẽ tìm hiểu cách xây dựng định nghĩa kiểu tài liệu DTD cùng với
quy tắc kiểm tra tính hợp lệ của chúng. Tìm hiểu về khơng gian tên – một thành phần
không thể thiếu trong XML.
3.1 Định nghĩa kiểu tài liệu
DTD (Defining a Document DTD) là kiểu tài liệu dùng để định nghĩa kiểu dữ
liệu cho các phần tử trong tài liệu XML. Khi chúng ta định nghĩa các phần tử trong
XML là tùy thích, miễn sao cho nó hợp quy tắc của tài liệu XML. Tuy nhiên để tường
minh hơn thì ta nên định nghĩa kiểu dữ liệu cho từng phần tử trong tài liệu XML.
Trong chương trước chúng ta đã học cách viết một tài liệu hợp khuôn dạng. Tuy
nhiên một tài liệu XML được xem là hợp khn dạng và có giá trị khi tồn bộ các
phần tử trong tài liệu được định nghĩa kiểu dữ liệu mà nó chứa.
Với cách định nghĩa kiểu tài liệu (DTD) khi chúng ta đọc một tài liệu XML nào
thì chỉ cần đọc phần DTD thì chúng ta sẽ biết được cấu trúc của tài liệu XML.
Trước khi đi vào phần chi tiết về cách tạo một tài liệu DTD, chúng ta hãy xem
ví dụ sau:
Ví dụ:

<?xml version="1.0"?>
<!ELEMENT note (to,from,heading,body)>

(#PCDATA)>


(#PCDATA)>

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng

23



(#PCDATA)>


(#PCDATA)>

]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>

</note>

Xem ví dụ trên chúng ta thấy phần in nhạt là phần DTD dùng để mô tả kiểu dữ
liệu của tài liệu XML, phần có in đậm là các phần tử của tài liệu XML.
Phần DTD trong ví dụ này được hiểu như sau: Tài liệu XML có một phần tử
gốc tên là note, phần tử gốc này có 4 phần tử con là: to, from, heading, body và 4 phần
tử con này có kiểu dữ liệu text.
3.2. Định nghĩa một tài liệu DTD
Để viết một tài liệu DTD chúng ta chỉ cần tuân thủ đúng một số quy tắc của
W3C là được. Đầu tiên chúng ta hãy tìm hiểu về các phần tử (element), thuộc tính và
thực thể của DTD.
3.2.1 Phần tử <!DOCTYPE>
Phần tử này có chức năng dùng để khai báo bắt đầu định nghĩa kiểu tài liệu DTD.
Định nghĩa kiểu tài liệu có 2 dạng, đó là DTD tham chiếu nội và DTD tham
chiếu ngoại. DTD tham chiếu nội là DTD được định nghĩa ngay trong tài liệu XML
còn DTD tham chiếu ngoại là DTD được định nghĩa bên ngoài tài liệu XML. Bây giờ
chúng ta sẽ tìm hiểu từng cú pháp một.
3.2.1.1 Định nghĩa DTD tham chiếu nội
Để bắt đầu định nghĩa kiểu tài liệu DTD tham chiếu nội (Internal Reference)chúng
ta dùng cú pháp sau:
>

Trong đó root-element là phần tử gốc của tài liệu XML, DTD là các định nghĩa
cho các phần tử trong tài liệu XML.
Ví dụ:
<?xml version="1.0"?>

Tài liệu giảng dạy môn: Chuyên đề Công nghệ XML và Ứng dụng


24


×