Giáo trình Công nghệ XML (Full) - Ngành Hệ thống thông tin - ThS. Huỳnh Khắc Duy

Tài liệu giảng dạy Công nghệ xml ngành hệ thống thông tin (full) hệ thống hóa kiến thức từ cơ bản đến nâng cao ngành tại Việt Nam

Chuyên ngành

Hệ thống Thông tin

Người đăng

Ẩn danh

Thể loại

Giáo trình

2020

197
2
0

Phí lưu trữ

45 Point

Tóm tắt

I. Giới Thiệu Về Công Nghệ XML

Công nghệ XML (eXtensible Markup Language) là một ngôn ngữ đánh dấu mở rộng được thiết kế để lưu trữ và truyền tải dữ liệu một cách hiệu quả. Trong lĩnh vực hệ thống thông tin, XML đóng vai trò quan trọng trong việc trao đổi dữ liệu giữa các ứng dụng khác nhau. Giáo trình Công nghệ XML ngành Hệ thống thông tin cung cấp kiến thức từ cơ bản đến chuyên sâu, giúp sinh viên cao đẳng nắm vững các kỹ năng cần thiết. Tài liệu XML có cấu trúc rõ ràng với các phần tử được định nghĩa rõ ràng, cho phép xử lý và kiểm tra dữ liệu một cách chính xác. Công nghệ này được ứng dụng rộng rãi trong các lĩnh vực như thương mại điện tử, dịch vụ web và quản lý dữ liệu.

1.1. Lịch Sử Hình Thành XML

XML được phát triển từ SGML (Standard Generalized Markup Language) vào cuối những năm 1990. Nó được tạo ra để khắc phục những hạn chế của HTML bằng cách cung cấp khả năng mô tả dữ liệu một cách linh hoạt hơn. W3C (World Wide Web Consortium) chính thức công bố phiên bản 1.0 năm 1998, đánh dấu bước ngoặt trong lịch sử công nghệ web và thông tin.

1.2. Ứng Dụng XML Trong Hệ Thống Thông Tin

XML được sử dụng rộng rãi trong hệ thống thông tin hiện đại để trao đổi dữ liệu giữa các máy chủ, ứng dụng web và cơ sở dữ liệu. Các doanh nghiệp sử dụng XML trong web service để tích hợp các hệ thống khác nhau. RSS, ATOMSOAP là những ứng dụng thực tế của XML trong việc cung cấp nội dung và giao tiếp giữa các ứng dụng.

II. Cấu Trúc Và Quy Tắc XML

Cấu trúc tài liệu XML bao gồm các phần tử (elements), thuộc tính (attributes) và nội dung (content) được sắp xếp theo hình cây. Mỗi tài liệu XML phải tuân theo các quy tắc bien định để đảm bảo tính hợp lệ. DTD (Document Type Definition) và XML Schemas là hai cơ chế chính để đặc tả và kiểm tra cấu trúc XML. Không gian tên XML (XML Namespaces) giúp tránh xung đột tên phần tử khi kết hợp nhiều tài liệu XML. Hiểu rõ những quy tắc này là cơ sở để phát triển các ứng dụng hệ thống thông tin chuyên nghiệp và đáng tin cậy.

2.1. DTD Document Type Definition

DTD cung cấp các quy tắc định nghĩa cho cấu trúc tài liệu XML. Nó xác định các phần tử có thể xuất hiện, thuộc tính của chúng và mối quan hệ giữa các phần tử. DTD có thể được khai báo bên trong tài liệu XML hoặc trong một tệp DTD riêng biệt. Mặc dù DTD có nhiều ưu điểm, nhưng nó có những hạn chế trong việc kiểm tra kiểu dữ liệu phức tạp.

2.2. XML Schemas Giải Pháp Hiện Đại

XML Schemas (hay XSD) là giải pháp thay thế DTD với nhiều tính năng mạnh mẽ hơn. Nó cho phép định nghĩa kiểu dữ liệu chi tiết, các ràng buộc phức tạp và cung cấp hỗ trợ tốt cho không gian tên XML. XML Schemas được viết bằng XML chính nó, giúp dễ dàng xử lý và tích hợp với các công cụ khác trong hệ thống thông tin.

III. Xử Lý Và Truy Xuất Dữ Liệu XML

Xử lý tài liệu XML là một trong những kỹ năng quan trọng nhất trong Công nghệ XML. Có nhiều cách để truy xuất dữ liệu XML như sử dụng mô hình DOM, XPath hay XSLT. Mô hình DOM (Document Object Model) cho phép truy cập từng phần tử trong tài liệu XML thông qua một cây đối tượng. Ngôn ngữ XPath cung cấp cú pháp mạnh mẽ để tìm kiếm phần tử trong XML. XSLT (XML Stylesheet Language Transformations) được sử dụng để định dạng và chuyển đổi XML thành các định dạng khác như HTML. Các công cụ này tạo nên nền tảng vững chắc cho xử lý dữ liệu XML trong ứng dụng thực tế.

3.1. Mô Hình DOM Và SAX

Mô hình DOM tải toàn bộ tài liệu XML vào bộ nhớ, tạo ra một cây đối tượng. Phương pháp này thuận lợi cho việc chỉnh sửa tài liệu nhưng tiêu tốn bộ nhớ. SAX (Simple API for XML) là phương pháp xử lý theo sự kiện, phù hợp cho các tài liệu XML lớn. Lựa chọn giữa DOMSAX phụ thuộc vào yêu cầu ứng dụng.

3.2. XPath Và XSLT Công Cụ Truy Vấn

XPath là ngôn ngữ truy vấn cho phép định vị phần tử XML thông qua các biểu thức đường dẫn. XSLT sử dụng XPath để chọn phần tử cần xử lý. Cùng nhau, XPathXSLT tạo nên một cơ chế mạnh mẽ để biến đổi dữ liệu XML thành các định dạng khác nhau, là công cụ không thể thiếu trong phát triển ứng dụng XML.

IV. Ứng Dụng XML Trong Hệ Thống Hiện Đại

Công nghệ XML không chỉ dừng lại ở việc lưu trữ và xử lý dữ liệu mà còn đóng vai trò quan trọng trong các ứng dụng web hiện đại. Web Service sử dụng SOAPWSDL để giao tiếp giữa các ứng dụng khác nhau qua mạng. RSSATOM cung cấp cơ chế phân phối nội dung hiệu quả. AJAX kết hợp XML với JavaScript để tạo ra trải nghiệm người dùng tương tác. XHTML mở rộng HTML bằng các quy tắc XML strict. SVG (Scalable Vector Graphics) sử dụng XML để định nghĩa các đồ họa vector. Cơ sở dữ liệu hiện đại như MySQL, SQL Server, và eXist đều hỗ trợ XML, cho phép các hệ thống thông tin tích hợp dữ liệu một cách liền mạch.

4.1. Web Service Và SOAP

Web Service là các dịch vụ được cung cấp qua mạng Internet, cho phép các ứng dụng khác nhau giao tiếp với nhau. SOAP (Simple Object Access Protocol) sử dụng XML để định nghĩa yêu cầu và phản hồi. WSDL (Web Services Description Language) mô tả giao diện của web service bằng XML, giúp khách hàng hiểu được cách sử dụng dịch vụ.

4.2. Cơ Sở Dữ Liệu Và XML

Cơ sở dữ liệu hiện đại cung cấp các tính năng để lưu trữ, truy vấn và xuất XML. XQuery là ngôn ngữ truy vấn cho cơ sở dữ liệu XML như eXist. Các cơ sở dữ liệu quan hệ như MySQLSQL Server cũng hỗ trợ chuyển đổi dữ liệu thành XML, cho phép tích hợp dữ liệu trong hệ thống thông tin phức tạp.

21/12/2025

Trích đoạn nội dung tài liệu

Chương 1. Giới thiệu xml <Author>Robert Louis Stevenson</Author> </Book> </BookOrder> 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 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 rẻ 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 khác thì tài liệu kết hợp này sẽ có vấn đề vì chúng ta đâu 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ụ như 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 của tài liệu của bạn 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. Khai báo không gian tên (namespace) Để khai báo một không gian tên ta chỉ cần đưa thêm thuộc tính xmlns:prefix vào bên trong phần tử gốc, prefix là tên của không gian tên, mỗi không gian tên cần mang một định danh duy nhất. Một không gian tên có thể là một địa chỉ internet hoặc một địa chỉ nào đó miễn là địa chỉ này phải duy nhất.

Ví dụ sau đây sẽ tạo ra một không gian tên hs và áp dụng cho tất cả các phần tử con: <?xml version="1.0"?> <BookOrder xmlns:hs="http://www.com/customer"> <hs:Customer > <hs:Title>Mr.</Title> <hs:FirstName>Graeme</FirstName> <hs:LastName>Malcolm</LastName> </hs:Customer> </BookOrder> Không gian tên mặc định (namespace default) KHOA CÔNG NGHỆ THÔNG TIN 22 Chương 1. Giới thiệu xml Nếu tài liệu của chúng ta các phần tử chỉ sử dụng duy nhất một không gian tên thì chúng ta có thể khai báo không gian tên mặc định cho các phần tử con của một phần tử cha bằng cách chỉ ghi thuộc tính xmlns và bỏ đi prefix.0"?> <BookOrder xmlns ="http://www.com/customer"> <Customer > <Title>Mr.</Title> <FirstName>Graeme</FirstName> <LastName>Malcolm</LastName> </ Customer> </BookOrder> Chúng ta xem tiếp ví dụ sau: <?xml version="1.0"?> <BookOrder > <OrderDate>2001-01-01</OrderDate> <Customer xmlns="http://www.com/customer"> <Title>Mr.</Title> <FirstName>Graeme</FirstName> <LastName>Malcolm</LastName> </Customer> <Book xmlns="http://www.com/book"> <Title>Treasure Island</Title> <Author>Robert Louis Stevenson</Author> </Book> </BookOrder> Ví dụ trên chúng ta thấy có hai không gian tên mặc định, một cho phần tử Customer và một cho phần tử Book. Nhưng điều đáng nói ở đây là nếu như trong tài liệu có nhiều Customer và nhiều Book thì chúng ta không thể viết đi viết lại không gian tên mãi được, rất mất thời gian. Cách giải quyết tốt nhất là ta khai báo các không gian tên này ngay ở đầu tài liệu và mỗi không gian tên được phân biệt bởi các định danh.0"?> KHOA CÔNG NGHỆ THÔNG TIN 23 Chương 1.

Giới thiệu xml <BookOrder xmlns="http://www.com/order" xmlns:cus="http://www.com/customer" xmlns:bok ="http://www.com/book” > <OrderDate>2001-01-01</OrderDate> <cus:Customer > <cus:Title>Mr.</cus:Title> <cus:FirstName>Graeme</cus:FirstName> <cus:LastName>Malcolm</cus:LastName> </cus:Customer> <bok:Book > <bok:Title>Treasure Island</bok:Title> <bok:Author>Robert Louis Stevenson</bok:Author> </bok:Book> </BookOrder> Ví dụ trên dùng 3 không gian tên, mộ t không gian tên mặc đị nh và hai không gian tên có định danh là cus và bok. Trong ví dụ trên nh ững phần tử không có định danh của không gian tên đi trước thì được hiểu là sử dụng không gian tên mặc định http://www.com/order, như phần tử <OrderDate>2001-01-01</OrderDate> KHOA CÔNG NGHỆ THÔNG TIN 24 Chương 2. Sự hợp lệ CHƯƠNG 2. SỰ HỢP LỆ 2.

Document Type Definition (DTD) DTD (Document Type Definition) 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 khuôn dạng và có giá trị khi toàn bộ các phần tử trong tài liệu được được định nghĩa kiểu dữ liệu mà nó chứa. Với cách định nghĩa kiểu tư 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: <?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend</body> </note> 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ó 3 phần tử con là from, heading, body và 3 phần tử con này có kiểu dữ liệu text. Định nghĩa một tài liệu DTD Để viết một tài liệu DTD cũng rất dễ, chỉ cần chúng ta 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ử (emlement), thuộc tính, thực thể của DTD. 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ư liệu DTD. Định nghĩa kiểu tư 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. Định nghĩa DTD tham chiếu nội Để bắt đầu định nghĩa kiểu tư liệu DTD tham chiếu nội chúng ta dùng cú pháp sau: KHOA CÔNG NGHỆ THÔNG TIN 25 Chương 2. Sự hợp lệ <?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note body> <!ELEMENT body (#PCDATA)> ]> <note> <body>Don't forget me this weekend</body> </note> Định nghĩa DTD tham chiếu ngoại Sử dụng định nghĩa DTD tham chiếu ngoại sẽ làm cho các ứng dụng XML của chúng ta trở nên dẽ dàng chia sẽ và dùng chung với các ứng dụng khác. Có hai cách để chỉ định một DTD tham chiếu ngoại: Tham chiếu ngoại riêng và tham chiếu ngoại chung.

Những định nghĩa DTD tham chiếu ngoại riêng được sử dụng cho một nhóm người mang tính cá nhân, chúng không được dùng cho mục đích chung rộng lớn, mục đích phân phối. Còn những định nghĩa DTD tham chiếu ngoại chung sẽ mang tính cộng đồng hơn. Để định nghĩa một DTD tham chiếu ngoại riêng chúng ta dùng cú pháp sau: <!DOCTYPE root-element SYSTEM “filename”> Trong đó root-element là tên của phần tử gốc trong tài liệu XML, filename là tên file định nghĩa kiểu tư liệu DTD Ví dụ: <?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> File note.dtd với nội dung như sau: <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> Địa chỉ chứa file DTD có thể một URL/URI.0"?> <!DOCTYPE note SYSTEM "http://www.com/dtd/note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> KHOA CÔNG NGHỆ THÔNG TIN 26 Chương 2. Sự hợp lệ </note> Để định nghĩa một DTD tham chiếu ngoại chung chúng ta dùng cú pháp sau: <!DOCTYPE root-element PUBLIC “FPI” “URL”> Trong đó FPI (Formal Public Identifier) là mộ t định danh chung hình thức, chúng ta cần tuân theo một số quy tắc áp dụng cho FPI sau: Trường đầu tiên của một FPI là xác định kết nối của DTD đến chuẩn hình thức.

Đối với các DTD chúng ta tự định nghĩa thì trường này là một dấu chấm. Đối với các chuẩn hình thức trường này sẽ tự tham chiếu đến chuẩn của nó. Trường thứ hai là tên nhóm hay tên người chịu trách nhiệm bảo trì và nâng cấp các định nghĩa DTD và tên này phải mang tính duy nhất. Trường thứ ba chỉ định kiểu của tài liệu được mô tả, thường thì trường này kèm theo một số định danh duy nhất nào đó (chẳn hạn như version 1.

Trương thứ ba chỉ định ngôn ngữ mà bạn định nghĩa DTD (ví dụ như ngôn ngữ Tiếng Anh - EN) Mỗi trường của FPI cách nhau bởi dấu // Ví dụ <?xml version="1.0"?> <!DOCTYPE note PUBLIC “.//w3schools//note XML version 1.0//EN” "http://www.com/dtd/note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> Còn URL là địa chỉ của file DTD. Phần tử <!ELEMENT> Phần tử <!ELEMENT> dùng để định nghĩa kiểu dữ liệu cho một phần tử của một tài liệu XML. Chúng ta sử dụng theo cú pháp sau: <!ELEMENT element-name content_model> Trong đó: element_name là tên của phần tử mà ta muốn định nghĩa content_model là kiểu của phần tử này, có thể là EMPTY, ANY, #PCDATA, các phần tử con hay trộn lẫn nhiều thành phần Bây giờ chúng ta tìm hiểu chi tiết hơn. Định nghĩa một phần tử rỗng <!ELEMENT element_name EMPTY> Ví dụ: <!EMLEMENT note EMPTY> Định nghĩa một phần tử có chứa nhiều kiểu dữ liệu <!ELEMENT element_name ANY> Ví dụ: <!ELEMENT note ANY> Định nghĩa một phần tử có kiểu văn bản <!ELEMENT element_name (#PCDATA)> Ví dụ: <!ELEMENT note (#PCDATA)> Định nghĩa một phần tử có chứa một phần tử con <!ELEMENT element_name (child_element)> Ví dụ: <!ELEMENT note (to)> KHOA CÔNG NGHỆ THÔNG TIN 27 Chương 2.

Sự hợp lệ Định nghĩa một phần tử có chứa nhiều hơn một phần tử con, cách thứ nhất là chúng ta có thể liệt kê tất cả các phần tử con đó và mỗi phần tử con cách nhau bởi dấu phẩy. Ví dụ để khai báo phần tử note có 4 phần tử con là to, from, heading, body chúng ta viết như sau: <!ELEMENT note (to, from, heading, body)> Tất nhiên với cách viết như thế này thì không tối ưu, chúng ta có thể dùng cách viết thứ hai cho những phần tử có nhiều phần tử con bằng cách dùng ký tự đại diện. Dưới đây là một số nguyên tắc sử dụng ký tự đại diện: Giả sử chúng ta có phần tử ROOT, phần tử này có hai phần tử con là LIMB_A và LIMB_B, chúng ta có một số định nghĩa sau: <!ELEMENT ROOT (LIMB_A*)> Phần tử ROOT không có hoặc có nhiều phần tử LIMB_A <!ELEMENT ROOT (LIMB_A+)> Phần tử ROOT có một hoặc nhiều phần tử con LIMB_A <!ELEMENT ROOT (LIMB_A?)> Phần tử ROOT không có hoặc có một phần tử con LIMB_A <!ELEMENT ROOT (LIMB_A, LIMB_B)> Phần tử ROOT có 2 phần tử con, đầu tiên là phần tử LIMB_A tiếp đến là LIMB_B <!ELEMENT ROOT (LIMB_A | LIMB_B)> Phần tử ROOT có một phần tử con hoặc là LIMB_A hoặc là LIMB_B Định nghĩa một phần tử có chứa phần tử con hoặc chứa dữ liệu văn bản <!ELEMENT LIMB_A (LIMB_A1| #PCDATA)> Phần tử <!ATTLIST> Phần tử <!ATTLIST> dùng để định nghĩa kiểu tư liệu của các thuộc tính cho một phần tử trong tài liệu XML. Chúng ta dùng cú pháp sau: <!ATTLIST element-name attribute-name attribute-type default-value> Trong đó: element-name là tên của một phần tử cần định nghĩa thuộc tính o attribute-name là tên thuộc tính cần định nghĩa attribute-type kiểu của thuộc tính.

Có thể nhận một tong các giá trị sau: KHOA CÔNG NGHỆ THÔNG TIN 28 Chương 2.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ