1. XML Home 1 2. Giới thiệu về XML 1 a. XML là gì? 1 b. Sự khác nhau giữa XML và HTML? 1 3. Sử dụng XML như thế nào? 2 a. XML được sử dụng như thế nào? 2 b. XML tách dữ liệu từ HTML: 2 4. XML Tree 2 5. XML Syntax Rules 3 a. Tất cả các element đều phải có tag đóng. 3 b. Các tag có phân biệt chữ hoa chữ thường 4 c. Các tag lồng nhau thì phải đúng thứ tự 4 d. Phải có 1 element gốc 4 e. Các giá trị của thuộc tính phải nằm trong dấu nháy kép. 4 f. Các tham chiếu thực thể 5 6. XML Elements 6 a. XML Element là gì? 6 b. Empty Element 7 1. XML Home 1 2. Giới thiệu về XML 1 a. XML là gì? 1 b. Sự khác nhau giữa XML và HTML? 1 3. Sử dụng XML như thế nào? 2 a. XML được sử dụng như thế nào? 2 b. XML tách dữ liệu từ HTML: 2 4. XML Tree 2 5. XML Syntax Rules 3 a. Tất cả các element đều phải có tag đóng. 3 b. Các tag có phân biệt chữ hoa chữ thường 4 c. Các tag lồng nhau thì phải đúng thứ tự 4 d. Phải có 1 element gốc 4 e. Các giá trị của thuộc tính phải nằm trong dấu nháy kép. 4 f. Các tham chiếu thực thể 5 6. XML Elements 6 a. XML Element là gì? 6 b. Empty Element 7
Trang 1ĐẠI HỌC QUỐC GIA TP.HCM ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
GVHD: Trần Hồng Nghi Thực hiện:
Nguyễn Thành Đăng Khoa 13520403
z
Trang 2Mục Lục
1 XML Home 1
2 Giới thiệu về XML 1
a XML là gì? 1
b Sự khác nhau giữa XML và HTML? 1
3 Sử dụng XML như thế nào? 2
a XML được sử dụng như thế nào? 2
b XML tách dữ liệu từ HTML: 2
4 XML Tree 2
5 XML Syntax Rules 3
a Tất cả các element đều phải có tag đóng 3
b Các tag có phân biệt chữ hoa chữ thường 4
c Các tag lồng nhau thì phải đúng thứ tự 4
d Phải có 1 element gốc 4
e Các giá trị của thuộc tính phải nằm trong dấu nháy kép 4
f Các tham chiếu thực thể 5
6 XML Elements 6
a XML Element là gì? 6
b Empty Element 7
c Cách đặt tên Element 7
d Cách đặt tên tốt nhất 7
e Naming style 8
f XML Element có thể mở rộng 8
7 XML – Thuộc tính 9
a Cú pháp 9
b Các giá trị thuộc tính XML phải được trích dẫn 9
c Các phần tử XML so với thuộc tính 10
8 XML Namespaces 11
a Xung đột tên 11
b Giải quyết các xung đột Tên sử dụng Prefix (tiền tố) 12
c XML Namespaces – Các thuộc tính xmlns 13
d Uniform Resource Identifier (URI) 14
e Những Namespace mặc định 14
f Namespaces trong sử dụng thực 15
Trang 39 Hiển thị XML 16
a Xem tập tin XML 16
b Xem một tập tin XML không hợp lệ 17
c Tại sao hiển thị XML lại giống như vậy? 17
d Hiển thị tập tin XML với CSS? 17
10 XML và XSLT 19
a Hiển thị XML với XSLT 19
b XSLT sử dụng XPath để tìm thông tin trong một tài liệu XML 19
11 XML và XPath 22
a Thế nào là XPath? 22
b Biểu thức đường dẫn XPath 22
c XPath được sử dụng trong XSLT 23
d Ví dụ về XPath 23
12 XML - XLink và XPointer 25
a Xlink 25
b XPointer 28
13 XML Validator 30
a Tài liệu XML được gọi là well-formed nếu nó tuân theo quy tắc sau 30
b Tài liệu XML hợp lệ 31
14 XML-DTD 32
15 XML Schema 33
a XML Schema thì mạnh mẽ hơn DTD: 34
b Tại sao sử dụng XML Schema? 34
c XML Schema hỗ trợ kiểu dữ liệu 35
d XML Schemas dùng XML Syntax 35
16 XML Server 35
a Lưu trữ tài liệu XML trên Server 35
b Tạo XML bằng PHP 36
c Tạo XML bằng ASP 36
d Tạo XML từ CSDL 36
e Chuyển đổi XML bằng XSLT trên Server 37
17 XML Applications 38
a Thể hiện dữ liệu XML trong bảng HTML 38
b Hiển thị CD đầu tiên trong thẻ div HTML: 40
Trang 4c Navigate Between the CDs 41
18 XML Examples 42
19 Tham khảo 43
Trang 51 XML Home
Ví dụ về đoạn mã xml đơn giản:
< ?xml version ="1.0" encoding ="UTF-8" ? >
< note >
< to > Tove < /to >
< from > Jani < /from >
< heading > Reminder < /heading >
< body > Don't forget me this weekend! < /body >
biệt là các hệ thống được kết nối với Internet
Ví dụ khi ta xây dựng một ứng dụng bằng C# và một ứng dụng bằng PHP thì hai ngôn ngữ nàykhông thể hiểu nhau, vì vậy ta sẽ sử dụng XML để trao đổi dữ liệu
b Sự khác nhau giữa XML và HTML?
Ví dụ:
- HTML làm việc với các tag được xác định trước như <p>, <h1>, <table> v.v Còn các tagtrong XML là do người lập trình định nghĩa và mỗi tag là một mô tả dữ liệu mà người lập trình muốntruyền đạt
Trang 6<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
3 Sử dụng XML như thế nào?
a XML được sử dụng như thế nào?
- XML được sử dụng trong nhiều khía cạnh của phát triển web.
- XML thường được sử dụng để tách biệt dữ liệu và việc trình bày dữ liệu:
thể được trình bày theo nhiều cách khác nhau Do đó XML có sự tách biệt hoàn toàn giữa dữ liệu và sựtrình bày dữ liệu đó
b XML tách dữ liệu từ HTML:
Khi hiển thị dữ liệu dưới dạng HTML, chúng ta không cần phải chỉnh sửa các tập tinHTML khi dữ liệu thay đổi Với XML, dữ liệu có thể được lưu trữ trong các tập tin XML riêngbiệt
Với một vài dòng mã JavaScript, chúng ta có thể đọc một tập tin XML và cập nhật nộidung dữ liệu của bất kỳ trang HTML nào
XML được tạo bởi các tag (XML element) có thể lồng lên nhau, tag ngoài ta gọi là tagcha và các tag bên trong gọi là tag con và chúng có thể được tổ chức theo một cấu trúc cây thưmục
Ví dụ: Ta có sơ đồ cây lưu trữ thông tin về sách trong cửa hàng
Trang 7Với sơ đồ trên ta có XML như sau:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
Các luật cú pháp của XML thì rất đơn giản và logic, các luật cũng dễ học và dễ sử dụng
a Tất cả các element đều phải có tag đóng.
Trong HTML, một vài element không cần phải có tag đóng
<p>Văn bản
<br>
Tuy nhiên, trong XML thì lại không được như vậy, tất cả element đều phải có tag đóng
Trang 8<p>Văn bản.</p>
<br />
b Các tag có phân biệt chữ hoa chữ thường
Trong XML thì các tag có phân biệt giữa chữ hoa và chữ thường, tag đóng và tag mở phải giống nhau yhệt
<Message>Đây là sai</message>
<message>Đây là đúng</message>
c Các tag lồng nhau thì phải đúng thứ tự
Trong HTML, các tag có thể lồng nhau không theo thứ tự
<b><i> Đoạn văn được in đậm và in nghiêng</b></i>
Nhưng trong XML thì tuyệt đối phải đúng thứ tự
<b><i> Đoạn văn được in đậm và in nghiêng </i></b>
e Các giá trị của thuộc tính phải nằm trong dấu nháy kép.
Element XML có thể có các thuộc tính theo cặp như name/value như HTML
Trong XML thì các giá trị phải được nằm trong nháy kép
Trang 9<message>Dòng này sẽ bị lỗi < 1000</message>
Để tránh bị lỗi ta thay thế “<” bằng 1 thực thể tham chiếu
<message>Dòng này không bị lỗi < 1000</message>
Dưới đây là bảng thực thể tham chiếu trong XML:
g Ghi chú trong XML
Cũng giống HTML đó là:
<! Viết ghi chú ở đây >
Tuy nhiên ở phần ghi chú không cho phép có 2 dấu gạch giữa liên tiếp
<! Không cho phép 2 dấu liên tiếp trong ghi chú >
h Khoảng trắng được giữ nguyên trong XML
Trang 10Trong HTML thì các khoảng trắng dư thừa sẽ bị cắt đi hết chỉ giữ lại 1 cái khoảng trắng.
Còn trong XML thì nó không bị cắt
i. XML lưu trữ dòng mới như là LF (Line Feed)
Các ứng dụng windows lưu trữ 1 dòng mới: ký tự bắt đầu dòng và ký tự xuống dòng (CR + LF)
Hệ điều hành Unix và Mac OSX sử dụng LF
< book category ="children">
< title > Harry Potter < /title >
< author > J K Rowling < /author >
< year > 2005 < /year >
< price > 29.99 < /price >
< /book >
< book category ="web">
< title > Learning XML < /title >
< author > Erik T Ray < /author >
< year > 2003 < /year >
< price > 39.95 < /price >
< /book >
< /bookstore >
Trang 11Trong ví dụ trên:
<title>, <author>, <year> và <price> là dạng element chứa text vì có chứa nội dung văn bản
<bookstore> và <book> là dạng element chứa element khác
<book> là dạng element chứa thuộc tính (category="children")
b Empty Element
<element></element>
<element />
c Cách đặt tên Element
Đặt tên Element XML phải theo các luật sau:
d Cách đặt tên tốt nhất
Tên phải có tính mô tả : <first_name>, <last_name>
Tên phải ngắn và đơn giản: như <book_title> chứ không nên dùng tên <The_title_of_book>
e Naming style
Một số lời khuyên để cho 1 tài liệu XML trở nên chuyên nghiệp và dễ đọc:
Viết chữ thường hết:<firstname>
Trang 12 Gạch dưới phân cách cho từng từ:<first_name>
Viết hoa ký tự đầu từ:<FirstName>
Viết hoa ký tự đầu của từ thứ hai:<firstName>
Một tài liệu XML thường đại diện cho 1 CSDL tương ứng, thế nên tốt nhất là lấy tên của các cột đặt tên cho element
f XML Element có thể mở rộng
Các element có thể mở rộng để mang nhiều thông tin hơn
Ví dụ mở rộng thêm cho đoạn sau:
<note>
<to>Tove</to>
<from>Jani</from>
<body>Don't forget me this weekend!</body>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
7 XML – Thuộc tính
Trang 13Các phần tử XML có thể có các thuộc tính, giống như HTML.
Các thuộc tính được thiết kế để chứa các dữ liệu liên quan đến một phần tử cụ thể
a Cú pháp
< tên_phần_tử thuộc_tính_1 thuộc_tính_2 >
Đối với giới tính của một người, các phần tử <person> có thể được viết thế này:
<person gender="female">
Hoặc
<person gender='female'>
- Nếu các giá trị của chính thuộc tính có chứa dấu ngoặc kép, ta có thể dùng dấu nháy đơn để trích
dẫn Giá trị của thuộc tính:
<gangster name='George "Shotgun" Ziegler'>
Hoặc có thể dùng dấu nháy kép và dấu chấm phẩy:
<gangster name="George "Shotgun" Ziegler">
c Các phần tử XML so với thuộc tính
Hãy xem ví dụ sau:
<person gender="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
Trang 14<person>
<gender>female</gender>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
- Trong ví dụ đầu tiên giới tính (gender) là một thuộc tính Cuối cùng, giới tính là một phần
tử Cả hai ví dụ cung cấp các thông tin tương tự
d Tránh những thuộc tính XML?
Một số điều cần xem xét khi sử dụng những thuộc tính này là:
• Các thuộc tính không thể chứa nhiều giá trị (các phần tử thì có thể)
• Các thuộc tính có thể không chứa các cấu trúc cây (các phần tử thì có thể)
• Các thuộc tính không dễ dàng mở rộng (đối với những thay đổi sau này)
Đừng kết thúc như thế này:
<note day="10" month="01" year="2008"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
e Những thuộc tính XML cho Siêu dữ liệu
- Đôi khi ID tham chiếu được gán cho các phần tử
- Những ID tham chiếu này có thể dùng để định danh cho các phần tử XML theo cách giống với
ID thuộc tính trong HTML
Ví dụ:
<messages>
<note id="501">
Trang 15<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
- Các id thuộc tính trên để định danh cho các note khác nhau
- Siêu dữ liệu phải được lưu trữ như là các thuộc tính, và các dữ liệu của chính nó nên được lưu
- Trong XML, tên phần tử được định danh bởi các nhà phát triển
- Điều này thường dẫn đến xung đột khi cố gắng kết hợp các tài liệu XML từ các ứng dụng XML
Trang 16XML này mang thông tin về một bàn, 1 phần của nội thất:
- Nếu những mảnh XML được thêm vào với nhau, sẽ có cuộc xung đột tên.
- Cả hai đều chứa một phần tử <table> , nhưng những phần tử này có nội dung và ý nghĩa khác
nhau
- Người dùng hoặc một ứng dụng XML sẽ không biết để xử lí những khác biệt này.
b Giải quyết các xung đột Tên sử dụng Prefix (tiền tố)
- Xung đột tên trong XML có thể dễ dàng tránh được bằng cách sử dụng một tên tiền tố
Trang 17- Các namespace có thể được định danh bằng các Thuộc tính xmlns trong thẻ bắt đầu của một
Phần tử
Cú pháp Khai báo Namespace trong XML
<element xmlns:name="URL">
Với:
URL là định danh của Namespace.
- Namespace chỉ có tác động tại một phạm vi giới hạn trong tài liệu Một phần tử chứa khai báo
này và tất cả các phần tử con của nó là trong phạm vi của Namespace đó Sau đây là một ví dụ đơngiản của Namespace trong XML:
<?xml version="1.0" encoding="UTF-8"?>
<cont:contact xmlns:cont="www.tutorialspoint.com/profile">
<cont:name>Tanmay Patil</cont:name>
<cont:company>TutorialsPoint</cont:company>
<cont:phone>(011) 123-4567</cont:phone>
</cont:contact>
- Ở đây, tiền tố của Namespace là cont, và định danh của Namespace (URI) là
www.tutorialspoint.com/profile Nghĩa là, các tên phần tử và tên thuộc tính với tiền tố cont(bao gồm
cả phần tử contact), là thuộc Namespace có tên là www.tutorialspoint.com/profile.
d Uniform Resource Identifier (URI)
- Một Uniform Resource Identifier (URI) là một chuỗi các ký tự trong đó xác định một tài
nguyên Internet
- URI phổ biến nhất là Uniform Resource Locator (URL) trong đó xác định một địa chỉ miền trên
Internet Loại không phổ biến của URI là Universal Resource Name (URN)
e Những Namespace mặc định
Trang 18- Định danh namespace mặc định để lưu phần tử của chúng ta bằng cách sử dụng các Prefix
trong tất các phần tử con Có cú pháp như sau:
- Các tài liệu XML dưới đây, là một tài liệu được sử dụng để chuyển đổi XML thành HTML.
tài liệu HTML
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
Trang 19<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
- File XML thô có thể được xem ở tất cả các trình duyệt chính.
- Đừng nghĩ rằng các tập tin XML được hiển thị như các trang HTML
a Xem tập tin XML
<?xml version="1.0" encoding="UTF-8"?>
- <note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
Trang 20</note>
- Xem tập tin XML trên trong trình duyệt của bạn: click 2 lần để mở file note.xml
- Hầu hết các trình duyệt sẽ hiển thị tài liệu XML với các phần tử màu sắc
- Sử dụng dấu cộng (+) hoặc dấu trừ (-) bên trái các phần tử để mở rộng hoặc thu gọn cấu trúcphần tử
- Để xem mã nguồn XML thô, chọn "View Page Source" hoặc "View Source" từ Menu của trìnhduyệt
b Xem một tập tin XML không hợp lệ
Nếu một tập tin XML bị lỗi được mở ra, một số trình duyệt sẽ báo cáo lỗi
<?xml version="1.0" encoding="UTF-8"?>
- <note>
<to>Tove</to>
<from>Jani</Ffrom>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
Trang 21</note>
- Xem tập tin XML trên trong trình duyệt của bạn: click 2 lần để mở file note_error.xml
- Báo lỗi trong trình duyệt web:
c Tại sao hiển thị XML lại giống như vậy?
- Tài liệu XML thì không mang thông tin về cách hiển thị dữ liệu
- Kể từ khi thẻ XML đuợc phát minh bởi các tác giả của các tài liệu XML, trình duyệt không biếtnếu một thẻ như <table> mô tả một bảng HTML hoặc bàn ăn tối
- Nếu không có bất kỳ thông tin về cách để hiển thị dữ liệu, các trình duyệt chỉ có thể hiển thị tàiliệu XML như nó được
d Hiển thị tập tin XML với CSS?
- Dưới đây là một ví dụ về cách sử dụng CSS để định dạng một tài liệu XML
một style sheet như cd_catalog.css (double click để mở file)
Dưới đây là một phần của tập tin XML Dòng thứ hai liên kết các tập tin XML vào file CSS:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="cd_catalog.css"?>
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
Trang 22<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
- Ngôn ngữ định kiểu mở rộng chuyển đổi (eXtensible Stylesheet Language Transformations) là
đề xuất ngôn ngữ style sheet cho XML Nhu cầu chuyển đổi XML là rất cần thiết đến mức XSLTđược coi là một trong những đặc tính cơ bản của XML