Chương 1: TỔNG QUAN XML Chương này giới thiệu về XML, so sánh XML với HTML, cấu trúc và cú pháp khai báo một tài liệu XML. Chương này cũng trình bày khái quát các khái niệm định nghĩa kiểu tài liệu, ngôn ngữ định nghĩa lược đồ và ngôn ngữ định dạng chuyển đổi mở rộng XSLT. Tổng quan XML XML Extensible Markup Language là một ngôn ngữ đánh dấu được dùng để lưu trữ và định nghĩa cấu trúc của dữ liệu thông qua các thẻ có nghĩa. XML được chuẩn hoá bởi liên minh mạng toàn cầu World Wide Web Consortium với mục đích đơn giản hoá quá trình trao đổi dữ liệu giữa các hệ thống khác nhau khác nhau, đặc biệt là các hệ thống được kết nối qua Internet.
Giống như HTML, XML cũng là một tập con của SGML Standard Generalized Markup Language) - ngôn ngữ đánh dấu tổng quát hóa tiêu chuẩn. Ưu điểm của XML Dữ liệu độc lập được mô tả dưới dạng text thông qua các thẻ với cấu trúc và sự phân cấp rõ ràng rõ ràng giúp XML dễ dàng đọc và phân tích bởi con người hay chương trình máy tính. XML cho phép dễ dàng xử lý, chuyển tải, trao đổi dữ liệu giữa nhiều ứng dụng và tài liệu với các định dạng khác nhau. XML c n cung cấp nhiều cách để kiểm tra chất lượng của một tài liệu với các quy tắc cú pháp, kiểm tra liên kết bên trong, so sánh các mô hình tài liệu và các kiểu dữ liệu với nhau.
Với Unicode là bộ ký tự chuẩn, XML hỗ trợ hầu hết các hệ thống văn bản, biểu tượng, ký tự của hầu hết quốc gia trên thế giới. Ngoài ra, XML c n được lưu trữ làm cấu hình cho website hay sử dụng cho phương thức Remote Procedure Calls RPC phục vụ web service. Vì là một chuẩn mở nên XML không gắn liền với bất kỳ công ty hay phần mềm cụ thể nào. So sánh XML và HTML 1.
Sự giống nhau giữa XML và HTML XML và HTML đều dựa trên SGML Standard Generalized Markup Language. Sự khác nhau giữa XML và HTML ảng 1.1: So sánh XML và HTML XML HTML XML được thiết kế cho mục đích lưu trữ HTML được thiết kế cho mục đích trình và chuyển đổi dữ liệu giữa các hệ thống bày dữ liệu. XML dùng để mô tả dữ liệu và chú trọng HTML được dùng để hiển thị dữ liệu và vào nội dung dữ liệu. chú trọng vào việc dữ liệu được hiển thị z 3 như thế nào.
Cho phép người dùng định nghĩa các Các phần tử đã được định nghĩa trước phần tử Kiểm tra tính hợp lệ Hầu như không bắt lỗi Được định nghĩa một cách chặt chẽ Không bắt buộc Các phần từ phải được đóng Các phần tử rỗng không cần phải đóng 1. Cấu trúc tài liệu XML Một tài liệu XML gồm có hai phần: phần thứ nhất là prolog của tài liệu prolog document. Phần này là tùy chọn, lưu trữ thông tin của tài liệu XML bao gồm khai báo XML, định nghĩa kiểu tài liệu DTD, chú thích, các chỉ dẫn xử lý. Phần thứ hai là phần tử gốc root element hay c n gọi là phần tử tài liệu document element).
Phần này chứa tất cả các phần tử con và nội dung của nó, đây là phần bắt buộc phải có trong một tài liệu XML.2: Các thành phần cơ bản của một tài liệu XML <?xml version="1.0" encoding="UTF-8" Khai báo XML standalone="no"?> <!doctype document system Định nghĩa kiểu tài liệu "tutorials.dtd"> Prolog Chú thích <!-- Here is a comment --> (tùy chọn) Các chỉ dẫn xử lý <?xml-stylesheet type="text/css" (Processing Instructions) href="myStyles.css"?> Khoảng trắng Thẻ mở của phần tử gốc <tutorials> <tutorial> <name>XML Tutorial</name> <url>http://www.com/xml</url> Phần tử gốc </tutorial> Các phần tử con và nội dung bắt buộc <tutorial> <name>HTML Tutorial</name> <url>http://www.com/html</url> </tutorial> Thẻ đóng của phần tử gốc </tutorials> Ví dụ 1.1: Biểu diễn một tài liệu XML đơn giản [25] <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE document system "tutorials.dtd"> <!-- Here is a comment --> <?xml-stylesheet type="text/css" href="myStyles.css"?> <tutorials> z 4 <tutorial> <name>XML Tutorial</name> <url>http://www.com/xml</url> </tutorial> <tutorial> <name>HTML Tutorial</name> <url>http://www.com/html</url> </tutorial> </tutorials> 1. Khai báo XML D ng đầu tiên của một tài liệu XML là khai báo XML. Nó khai báo phiên bản của một đặc tả XML đang được sử dụng.2: Khai báo XML <?xml version="l. Thể hiện tài liệu (Document Instance) Phần của một tài liệu mà bên trong đó dữ liệu được biểu diễn được gọi là một thể hiện tài liệu document instance.
Mỗi document instance sắp xếp thứ tự các thông tin của nó theo cấu trúc phân cấp, được định nghĩa bởi các mối quan hệ giữa các phần tử cha-con. Thông thường các phần từ cha thiết lập một ngữ cảnh và nó được kế thừa bởi các phần tử con.3: Mối quan hệ cha con đơn giản giữa các phần tử trong XML <book> <title>Joy of Integration</title> <author>Joe Smith</author> </book> 1. Thuộc tính (Attribute) Mỗi phần tử cũng có các thuộc tính gọi là attribute. Mỗi phần tử cha có thể có rất nhiều lớp phần tử con lồng nhau, nhưng nó chỉ có quan hệ 1-1 với một thuộc tính.4: Ví dụ thuộc tính category của phần tử <book> <book category=”Fiction”> … </book> 1.
Khai báo kiểu tài liệu Để kết hợp một tài liệu với một lược đồ, một câu lệnh khai báo riêng được yêu cầu. Ví dụ khai báo liên kết đến một DTD trong tài liệu XML.5: Khai báo kiểu tài liệu z 5 <!DOCTYPE book SYSTEM "book. Định nghĩa kiểu tài liệu Trong XML, DTD Document Type Definition được sử dụng để định nghĩa cấu trúc tài liệu XML các loại phần tử và mối quan hệ cha-con và tất cả các quy tắc điều khiển, thao tác nội dung tài liệu. Tuy nhiên, không như HTML sử dụng một DTD đã được định nghĩa trước với một tập hợp các loại phần tử cố định, DTD trong XML có thể được tùy chỉnh.6: Mô tả quá trình khai báo một DTD hoàn chỉnh <!DOCTYPE book [ <!ELEMENT book(title,author)> <!ATTLIST book CATEGORY (Fiction | Non-Fiction)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> ]> 1.
Ngôn ngữ định nghĩa lược đ XML XSD XML Schema Definition Language là một ngôn ngữ mô hình dữ liệu toàn diện cho các tài liệu XML. Không như DTD, XSD là một cài đặt thực sự của ngôn ngữ XML, các lược đồ bản thân nó chính là tài liệu XML. Một trong những tính năng quan trọng nhất của XSD là hỗ trợ nhiều kiểu dữ liệu. Nó cải thiện chất lượng biểu diễn dữ liệu XML và đóng vai tr như là một chuẩn vận chuyển dữ liệu doanh nghiệp.
Các lược đồ XSD hỗ trợ không gian tên (namespace). Điều này cho phép thiết lập các miền logic, trong đó một số hay toàn bộ các phần của lược đồ được áp dụng. XSD cung cấp một số tính năng nâng cao bao gồm hỗ trợ nhiều kiểu dữ liệu, nâng cao cú pháp kiểm tra tính hợp lệ, mô phỏng các mô hình lược đồ quan hệ thông qua việc sử dụng khóa (key và ràng buộc constraint , có khả năng mở rộng qua phần tử any và module hóa bằng cách sử dụng phần tử include, import.7: Mô tả quá trình định nghĩa một lược đồ XSD hoàn chỉnh <?xml version="l.0"?> <xsd:schema xmlns:xsd=”http://www.org/2001/XMLSchema”> <xsd:elementname="book”> <xsd:complexType> <xsd:sequence> <xsd:element name="titleUtype="xsd:string”/> <xsd:element name="author" type="xsd:string”/> </xsd:sequence> <xsd:attribute name="category"> <xsd:simpleType> <xsd:restriction base="xsd:string”> z 6 <xsd:enumeration value="Fiction"/> <xsd:enumeration value="Non-Fiction”/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> </xsd:element> </xsd:schema> 1. XSLT Không như lược đồ XML, có rất nhiều ngôn ngữ để bạn lựa chọn và kết hợp, quá trình chuyển đổi dữ liệu trong XML chỉ dựa vào một chuẩn duy nhất: XSLT (Extensible Stylesheet Language Transformations).
XSLT thực hiện 2 nhiệm vụ chính là chuyển đổi cấu trúc và chuyển đổi mỹ học. Chuyển đổi cấu trúc XSLT cho phép thực hiện quá trình chuyển đổi một loại tài liệu XML từ dạng này sang dạng khác.1: XSLT style sheets được sử dụng để chuyển đổi giữa các tài liệu XML [18] Chuyển đổi mỹ học XSLT cho phép chuyển đổi hiệu quả tài liệu XML thành một số định dạng khác nhau. Tập hợp tính năng XSLT tạo điều kiện thuận lợi cho quá trình thao tác, sử dụng, sắp xếp hay lọc dữ liệu, cung cấp những khung nhìn để lưạ chọn thay thế và biểu diễn thông tin cho các kịch bản chuyển đổi tài liệu.2: XSLT style sheets được sử dụng để chuyển đổi một tài liệu XML sang các cách biểu diễn khác nhau [18] Ví dụ 1.9 minh họa sử dụng một mẫu XSLT đơn giản, chuyển đổi tài liệu XML thành một bảng HTML.8: Biểu diễn một tài liệu XML có chứa khai báo đến XSLT <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="book.xsl"?> <inventory> <book category="Fiction"> <title> Anna Karenina</title> <author> Leo Tolstoy</author> </book> <book category="Non-Fiction"> <title>Integration for Durnrnies</title> <author>John Doe</author> </book> </inventory> Ví dụ 1.9: Mô tả quá trình định nghĩa XSLT hoàn chỉnh [18] <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> <xsl:template match="inventory"> <table border="1"> <xsl:for-each select="book"> <tr> <td><xsl:value-of select="@category"/></td> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="author"/></td> </tr> </xsl:for-each> z 8 </table> </xsl:template> </xsl:stylesheet> Kết quả template trên sẽ cho kết quả đầu ra được định dạng theo HTML được hiển thị như sau: Kết luận Trong chương này, chúng ta đã tìm hiểu về XML là một ngôn ngữ đánh dấu được dùng để lưu trữ và định nghĩa cấu trúc của dữ liệu thông qua các thẻ có nghĩa. Một tài liệu XML gồm có hai phần: prolog của tài liệu và phần tử tài liệu.
Prolog của tài liệu là phần tùy chọn, chứa thông tin của tài liệu XML như khai báo XML, định nghĩa DTD, chú thích và các chỉ dẫn xử lý. Phần tử tài liệu hay phần tử gốc là phần bắt buộc, chứa tất cả các phần tử con. Trong XML, DTD được dùng để định nghĩa cấu trúc tài liệu XML và các quy tắc điều khiển thao tác nội dung tài liệu. Bên cạnh đó, XSD được dùng để hỗ trợ kiểu dữ liệu, không gian tên và cung cấp một số tính năng nâng cao cú pháp kiểm tra tính hợp lệ, khả năng mở rộng và module hóa.
Dữ liệu XML có thể được chuyển đổi từ dạng này sang dạng khác một cách tự dộng dựa trên chuẩn XSLT. Chương tiếp theo sẽ giới thiệu tổng quan về nén dữ liệu và các kỹ thuật nén XML. TỔNG QUAN NÉN DỮ LIỆU Chương này tập trung vào tìm hiểu và phân loại nén dữ liệu bao gồm nén tổn hao, nén không tổn hao và nén XML bao gồm các kỹ thuật nén văn bản tổng quát, kỹ thuật nén XML không truy vấn, kỹ thuật nén XML hỗ trợ truy vấn. Bên cạnh đó, chương này cũng trình bày một số khái niệm liên quan đến nén dữ liệu như tỷ lệ nén, hiệu suất nén và độ dư thừa dữ liệu.
Nén dữ liệu 2. Định nghĩa Nén dữ liệu data compression là quá trình chuyển đổi luồng dữ liệu đầu vào thành một luồng dữ liệu đầu ra khác có kích thước nhỏ hơn.1: Quá trình nén/giải nén dữ liệu 2. Phân loại Phân loại dựa vào nguyên lý nén có hai họ chính là nén tổn hao lossy compression và nén không tổn hao lossess compression .