Giáo trình công nghệ xml và ứng dụng gồm các chương sau: Chương 1: Tổng quan về XML, Chương 2: DTD – Document Type Definition, Chương 3: XML Schema, Chương 4: XML DOM Document Object Model, Chương 5: XPath, Chương 6: Xquer.
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH CƠNG NGHỆ XML VÀ ỨNG DỤNG MỤC LỤC Chương 1: Tổng quan XML 1.1 Giới thiệu XML 1.2 Cấu trúc tài liệu XML 1.3 Cú pháp XML Well – formed tài liệu XML 1.4 Các đối tượng XML .29 1.4.1 Element 29 1.4.2 Attribute 31 1.4.3 Khi sử dụng Elements Attributes 32 1.4.4 Namespace 34 1.4.5 Encoding 38 1.5 Viewing 39 1.6 XML Và CSS 40 1.7 Những điều cần ghi nhớ 42 Chương 2: DTD – Document Type Definition 47 2.1 Giới thiệu DTD 47 2.2 Cấu tr c DTD v ước t o DTD 49 2.3 Khai báo DTD 49 2.4 Các thành phần DTD 51 2.4.1 Khai báo Element DTD 51 2.4.2 Khai báo Attributes DTD .53 2.4.3 Khai báo Entities DTD 57 Chương 3: XML Schema 59 3.1 Giới thiệu 59 3.2 Khai báo XML Schema 62 3.3 Simple Types 65 3.3.1 XSD Simple Elements .65 3.3.2 XSD Restrictions/Facets 67 3.4 Complex Types 73 3.4.1 XSD Complex Element .73 3.4.2 XSD Empty Elements .76 3.4.3 XSD Elements Only 77 3.4.4 XSD Text-Only 77 3.4.5 XSD Mixed Content 79 3.5 XSD Indicators 80 3.5.1 Order Indicators 80 3.5.2 Occurrence Indicators .81 3.5.3 Group Indicators 84 3.6 element 85 3.7. Element 87 3.8 Substitution Element 89 3.9 Phân chia lược đồ, phong cách thiết kế XML Schema 94 3.10 Data Types – Các kiểu liệu 98 3.10.1 Kiểu chuỗi - String 98 3.10.2 Kiểu ngày tháng - Date and Time 100 3.10.3 Kiểu số - Numeric 104 3.10.4 Kiểu hỗn hợp - Miscellaneous 106 Chương 4: XML DOM - Document Object Model 108 4.1 Giới thiệu .108 4.2 Nodes .109 4.3 Node Tree .110 4.4 Properties and Methods 113 4.5 XML DOM: Node Information .119 4.6 Node List 122 4.7 Get Node Values 130 4.8 The XMLHttpRequest Object 149 Chương 5: XPath .163 5.1 Giới thiệu .163 5.2 Các thuật ngữ XPath .163 5.3 Cú pháp Xpath .164 5.4 Toán tử – Operators .171 5.5 XPath: Các ví dụ 172 Chương 6: Xquery .181 6.1 Giới thiệu .181 6.2 Duyệt node .182 6.3 FLWOR 183 6.4 Hiển thị liệu HTML List 184 6.5 XQuery: Các thuật ngữ mối quan hệ .185 6.6 Syntax – Cú pháp 188 6.7 Các toán tử so sánh 189 6.8 Thêm Elements Attribute 189 6.9 Xây dựng hàm – functions .191 DANH MỤC HÌNH ẢNH Hình 1.1 Cấu trúc tài liệu XML Hình 1.2 Ví dụ tài liệu XML Hình 2.1 Cấu trúc DTD 54 Hình 4.1 Node tree 115 Hình 4.2 Mối quan hệ 116 Hình 4.3 Danh sách node 127 Hình 4.4 Mối quan hệ node 131 DANH MỤC BẢNG BIỂU Bảng 1.1 Đặc điểm HTML XML Bảng 1.2 Thực thể tham chiếu 14 Bảng Các lo i thuộc tính 59 Bảng 2.2 Giá trị thuộc tính 60 Bảng 3.1 Facets 72 Bảng Các h n chế liệu 77 Bảng 3 Các kiểu liệu chuỗi 104 Bảng 3.4 Kiểu liệu ngày tháng 108 Bảng 3.5 Bảng liệu kiểu số 110 Bảng 4.1 Các lo i node 126 Bảng 5.1 Cú pháp node 170 Bảng 5.2 Ví dụ biểu thức 170 Bảng 5.3 Biểu thức có Prediaces 171 Bảng 5.4 Wildcard 172 Bảng 5.5 Ví dụ wildcard 172 Bảng 5.6 Ví dụ chọn nhiều đường dẫn 173 Bảng 5.7 Axis 173 Bảng 5.8 Vị trí biểu thức 175 Bảng 5.9 Toán tử Xpath 176 Chương 1: Tổng quan XML 1.1 Giới thiệu XML Trước XML đời đ c nhiều kiểu định ng v n ản điện tử GML G n raliz Markup Languag IBM SGML Stan ar G n raliz Markup Languag ANSI v o n m 1980 v HTML Hyp r T xt Markup Languag Tuy nhi n phư ng pháp n y c nhiều nhược điểm GML v SGML kh ng th ch hợp để truyền ữ liệu tr n W HTML chủ yếu ch trọng v o việc l m cách n o hiển thị th ng tin h n l ch trọng đến nội ung truyền tải Ch nh v XML Xt nsi l Markup Languag t o để giải nhược điểm tr n So sánh HTML v XML: Bảng 1.1 Đặc điểm HTML v XML HTML XML HTML thiết kế cho mục đ ch tr nh XML thiết kế cho mục đ ch lưu trữ v truyền tải ữ liệu hệ thống khác y ữ liệu HTML ng để hiển thị ữ liệu v ch trọng v o việc ữ liệu hiển thị XML ng để m tả ữ liệu v ch trọng v o nội ung ữ liệu n o HTML hiển thị th ng tin XML m tả thông tin Đặc trưng XML: Ng n ngữ đánh ấu markup tag đời nhằm hướng tới việc thể ữ liệu th o cách để n nhận v n giao tiếp đọc hiểu lẫn v tổ chức ữ liệu để trao đổi m kh ng ị lệ thuộc v o chư ng tr nh ứng ụng v platform giao tiếp Do ứng ụng v người l m phần mềm cần c ng n ngữ hay cách thức để tổ chức ữ liệu ễ ng cho người ứng ụng v máy t nh đọc hiểu m kh ng ị lệ thuộc ất kỳ v o tool hay platform cụ thề XML – Extensible Markup Language o Cho phép tổ chức lưu trữ ữ liệu th o cấu tr c th o ngữ nghĩa ễ giao tiếp hay trao đổi B n c nh đ ữ liệu cách ễ ng XML cho phép việc khai thác ng th ng qua ất kỳ tr nh so n thảo đ n giản m kh ng cần tool hỗ trợ o Cho phép người sử ụng định nghĩa nội ung tag ph hợp với qui định c pháp linh động định nghĩa tag m kh ng ị uộc th o tag qui định sẵn ph hợp với mục đ ch v nội ung người sử ụng o Nội ung v tổ chức lưu trữ fil c phần mở rộng l xml o Các nội ung qui định cách viết nội ung viết xml tuân th o qui định W3C chi tiết t i trang www.w3c.org XML Parser o L chư ng tr nh kiểm tra x m tập tin đ viết đ ng c pháp th o qui định hay chưa o Được hỗ trợ cho người lập tr nh v ứng ụng để khai thác ữ liệu XML o C 02 lo i tất Hỗ trợ kiểm tra x m XML c đ ng qui định định ng tr nh giao tiếp hay kh ng vali ation th ng qua qui định thiết lập DTD hay Sch ma Chỉ kiểm tra x m XML c viết đ ng qui luật qui định hay kh ng kiểm tra w ll-form kh ng kiểm tra vali ation Các th tag XML thường kh ng định nghĩa trước m ch ng t o th o quy ước người Chư ng tr nh t o XML th o quy ước ch nh họ XML sử ụng khai áo kiểu ữ liệu DTD Docum nt Typ D finition hay lược đồ Sch ma để m tả ữ liệu Ưu điểm XML: Dữ liệu độc lập l ưu điểm ch nh XML Do XML ằng ng để m tả ữ liệu ng t xt n n tất chư ng tr nh c thể đọc XML Dễ ng đọc v phân t ch ữ liệu nhờ ưu điểm n y m XML thường để trao đổi ữ liệu hệ thống khác Dễ Lưu trữ cấu h nh cho w ng để t o fil XML sit ng 1.2 Cấu trúc tài liệu XML Gồm có 02 phần o Document prolog: Chứa đựng th ng tin tổng quan t i liệu – m ta ata v ao ồm 02 phần Khai báo: XML Declaration Phần ổ trợ cung cấp th ng tin t i liệu XML misc llan ous ao gồm Document Type Declaration, comments, processing instructions, whitespace, … To n ộ phần Docum nt prolog c hay kh ng c khuyến cáo W3C n n ln có dòng XML Declaration o Root Element: l tag lớn uy t i liệu chứa tất tag n v nội ung t i liệu XML H nh 1.1 Cấu tr c t i liệu XML Một v ụ đ n giản t i liệu XML H nh 1.2 V ụ t i liệu XML Định nghĩa thành phần cấu trúc XML o T i liệu XML n n đầu với XML claration òng đầu ti n Cú pháp khai báo Thuộc t nh v rsion c pháp xml tr n thể th nh phần XML viết phải tuân th o qui định v rsion Thuộc t nh n y uộc phải sử ụng c khai áo xml tr n Hiện t i c v rsion XML đầu ti n XML 1.0 định nghĩa đầu ti n v o n m 1998 kể từ đ n trải qua nhiều lần sửa đổi nhỏ giữ nguy n v rsion t n l 1.0 v đến 2008 th đ l phi n ản thứ XML 1.0 n ng rộng r i v lu n khuy n l n n sử ụng Phi n ản thứ l XML 1.1 c ng ố ng y 4/2/2004 ản thứ XML 1.1 c ng ố ng y 16/8/2006 thay đổi ch nh ản 1.1 l cho phép c khả n ng sử ụng ký tự kết th c òng ựa tr n tảng EBCDIC Unicode 3.2 n kh ng ng rộng r i v ng ta muốn sử ụng t nh n ng khác iệt đ Muốn iết nhiều h n khác iệt n th v o http:// n.wikip ia.org/wiki/XML để x m Thuộc t nh nco ing thể nội ung chuyển đổi ký tự t i liệu xml để pars r chuyển đổi nội ung v n ản đ ng định ng chữ để chuyển đến cli nt Thuộc t nh n y l c hay kh ng c Khi kh ng c mặc định l UTF-8 Thuộc t nh stan alon th ng áo cho pars r iết l t i liệu c tham chiếu hay kh ng tham chiếu đến ntity định nghĩa n ngo i t i liệu hay mặc định khai áo ởi pars r Giá trị y s: t i liệu kh ng tham chiếu đến xt rnal ntity Giá trị no: giá trị mặc định thuộc t nh nco ing kh ng khai áo để thể t i liệu tham chiếu đến xt rnal ntity o Processing Instructions Các lệnh thực thi y u cầu đến ộ pars r C pháp: đầu với kh ng phải l o Whitespace L khoảng trắng – spac s ký tự xuống h ng – carriage r turns ký tự đầu h ng – linefeeds, tab – tabs o Document Type Declaration Khai áo hay tham chiếu đến DTD hỗ trợ vali ation Comments Cho phép ghi ch giảng giải nội ung thực v pars r ỏ qua parsing Cú pháp: ung ch th ch –> Không phép c comm nt lồng comm nt Được xuất ất kỳ đâu ngo i trừ trước XML claration kh ng nằm phần t n tag o Kh ng phép c ký tự “–” comm nt Marked-up tag Được ng phần thân t i liệu Bao gồm tag đầu tag kết th c tag cho thân rỗng tham chiếu đến ntity tham chiếu đến ký tự comm nts … else if (document.implementation && document.implementation.createDocument) { var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null); var result=nodes.iterateNext(); while (result) { document.write(result.childNodes[0].nodeValue); document.write(""); result=nodes.iterateNext(); } } Ví dụ – Chọn node title với price > 35 Ta có Xpath: /bookstore/book[price>35]/title function loadXMLDoc(dname) { if (window.XMLHttpRequest) { xhttp=new XMLHttpRequest(); } else { xhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open("GET",dname,false); try {xhttp.responseType="msxml-document"} catch(err) {} // Helping IE xhttp.send(""); return xhttp; 179 } var x=loadXMLDoc("books.xml"); var xml=x.responseXML; path="/bookstore/book[price>35]/title"; // code for IE if (window.ActiveXObject || xhttp.responseType=="msxml-document") { xml.setProperty("SelectionLanguage","XPath"); nodes=xml.selectNodes(path); for (i=0;i30 order by $x/title return $x/title Trước đầu với XQu ry ta n n c số hiểu iết c ản : HTML XML, XPath XQuery ng để truy vấn liệu XML o XQuery ngôn ngữ o XQu ry o XQu ry xây dựng biểu thức XPath o XQuery hỗ trợ hầu hết CSDL phổ biến o XQu ry W3C khuyến dùng (23/1/2007) nh cho XML giống SQL ng cho CSDL XQuery truy vấn XML N l ng n ngữ ng để t m v r t tr ch l m nt v attri ut từ t i liệu XML V ụ: “Truy vấn tất òng CD c giá nhỏ h n 10$ từ t i liệu XML tên c _catalog.xml” “S l ct all CD r cor s with a pric l ss than $10 from th CD coll ction stor in th XML ocum nt call c _catalog.xml” XQuery XPath XQu ry 1.0 v XPath 2.0 chia m h nh ữ liệu giống v hỗ trợ h m v toán tử giống Nếu ta đ học XPath th kh ng c vấn đề g để hiểu XQuery XQuery – Ví dụ ứng dụng XQu ry c thể sử ụng để: o R t tr ch th ng tin để sử dụng web service 181 o T o báo cáo tóm tắt o Chuyển đổi liệu XML thành XHTML o Tìm kiếm v n ản Web thông tin liên quan 6.2 Duyệt node Ch ng ta sử ụng đo n XML sau để thực v Everyday Italian Giada De Laurentiis 2005 30.00 Harry Potter J K Rowling 2005 29.99 XQuery Kick Start James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan 2003 49.99 Learning XML Erik T Ray 182 ụ Xqu ry: 2003 39.95 Hàm duyệt node Xqu ry sử ụng h m để r t tr ch hàm doc() để mở t i liệu XML V ữ liệu từ t i liệu XML Đầu ti n l ụ: doc("books.xml") Kế tiếp l iểu thức đường ẫn XQu ry sử ụng iểu thức đường ẫn Path Expr ssion để uyệt no Biểu thức sau sử ụng để chọn tất l m nt “titl ” c “ ooks.xml” oc “ ooks.xml” /bookstore/book/title Xqu ry tr n r t tr ch sau: Everyday Italian Harry Potter XQuery Kick Start Learning XML Predicates (Hàm ý dựa vào điều kiện đó) Xqu ry sử ụng pr icat s để giới h n ữ liệu r t tr ch Pr icat sau sử ụng để chọn tất l m nt “ ook” nằm “ ookstor ” m c l m nt “pric ” c giá trị nhỏ h n 30 doc("books.xml")/bookstore/book[price30]/title Đo n qu ry tr n c nghĩa l uyệt tất l m nt “titl ” “ ook” n o m c “pric ” > 30 Đo n qu ry sau c chức n ng tư ng tự qu ry tr n n ng FLWOR: for $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title return $x/title Kết r t tr ch được: Learning XML XQuery Kick Start o Mệnh đề for duyệt tất l m nt “ ook” nằm “ ookstor ” v lưu vào biến gọi $x o Mệnh đề Where lệnh duyệt “ ook” với “pric ” cao h n 30 o Mệnh đề Order by xếp liệu th o “titl ” o Mệnh đề Return định g rút , l n r t hay trả giá trị title 6.4 Hiển thị liệu HTML List Nh n v o iểu thức XQu ry FLWOR ưới đây: for $x in doc("books.xml")/bookstore/book/title order by $x return $x Biểu thức tr n uyệt tất l m nt “titl ” l m nt “ ook” v trả giá trị “titl ” xếp th o ảng chữ Bây ch ng ta muốn t o anh sách tất ook titl “ ookstor ” ưới ng HTML đ n giản l cần th m tag- v
- v o qu ry sau:
- { for $x in doc("books.xml")/bookstore/book/title order by $x return
- {$x} 184 }
- Everyday Italian
- Harry Potter
- Learning XML
- XQuery Kick Start
- { for $x in doc("books.xml")/bookstore/book/title order by $x return
- {data($x)} }
- Everyday Italian
- Harry Potter
- Learning XML
- XQuery Kick Start
- { for $x in doc("books.xml")/bookstore/book order by $x/title return
- {data($x/title)} Category: {data($x/@category)} }
- Everyday Italian Category: COOKING
- Harry Potter Category: CHILDREN
- Learning XML Category: WEB
- XQuery Kick Start Category: WEB
- { for $x in doc("books.xml")/bookstore/book order by $x/title return
- {data($x/title)} 190 }
- Everyday Italian
- Harry Potter
- Learning XML
- XQuery Kick Start